From 695f398571f1e17a3d06d8d4f81f2b7f8e2c08b2 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Mon, 14 Mar 2022 17:31:50 +0000 Subject: [PATCH 01/12] Add new plugin for post deployment http tests --- models/release.go | 11 +- plugins/canary/plugin.go | 8 +- plugins/httptest/plugin.go | 78 +++++++++++ plugins/httptest/plugin_test.go | 179 +++++++++++++++++++++++++ plugins/interfaces/customvalidation.go | 13 ++ plugins/interfaces/deploymenttest.go | 12 ++ 6 files changed, 289 insertions(+), 12 deletions(-) create mode 100644 plugins/httptest/plugin.go create mode 100644 plugins/httptest/plugin_test.go create mode 100644 plugins/interfaces/customvalidation.go create mode 100644 plugins/interfaces/deploymenttest.go diff --git a/models/release.go b/models/release.go index 5a73ac3..42918ec 100644 --- a/models/release.go +++ b/models/release.go @@ -16,11 +16,12 @@ type Release struct { Created time.Time `json:"created"` LastUpdated time.Time `json:"last_updated"` - Releaser *PluginConfig `json:"releaser"` - Runtime *PluginConfig `json:"runtime"` - Strategy *PluginConfig `json:"strategy"` - Monitor *PluginConfig `json:"monitor"` - Webhooks []*PluginConfig `json:"webhooks"` + Releaser *PluginConfig `json:"releaser"` + Runtime *PluginConfig `json:"runtime"` + Strategy *PluginConfig `json:"strategy"` + Monitor *PluginConfig `json:"monitor"` + Webhooks []*PluginConfig `json:"webhooks"` + PostDeploymentTest []*PluginConfig `json:"post_deployment_test"` } type PluginConfig struct { diff --git a/plugins/canary/plugin.go b/plugins/canary/plugin.go index f278764..b432cb3 100644 --- a/plugins/canary/plugin.go +++ b/plugins/canary/plugin.go @@ -65,7 +65,7 @@ func (p *Plugin) Configure(data json.RawMessage) error { // validate the plugin config validate := validator.New() - validate.RegisterValidation("duration", validateDuration) + validate.RegisterValidation("duration", interfaces.ValidateDuration) err = validate.Struct(p.config) if err != nil { @@ -173,9 +173,3 @@ func (p *Plugin) GetPrimaryTraffic() int { func (p *Plugin) GetCandidateTraffic() int { return p.currentTraffic } - -// validates that a string is a duration -func validateDuration(field validator.FieldLevel) bool { - _, err := time.ParseDuration(field.Field().String()) - return err == nil -} diff --git a/plugins/httptest/plugin.go b/plugins/httptest/plugin.go new file mode 100644 index 0000000..489814f --- /dev/null +++ b/plugins/httptest/plugin.go @@ -0,0 +1,78 @@ +package httptest + +import ( + "encoding/json" + "fmt" + + "github.com/go-playground/validator/v10" + "github.com/hashicorp/go-hclog" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" +) + +type Plugin struct { + log hclog.Logger + config *PluginConfig + monitoring interfaces.Monitor +} + +type PluginConfig struct { + // Path of the service endpoint to call + Path string `hcl:"path" json:"path" validate:"required,uri"` + + // Method is the HTTP method for the test GET,POST,HEAD,etc + Method string `hcl:"method" json:"method,omitempty" validate:"required,oneof=GET POST PUT DELETE HEAD OPTIONS TRACE PATCH"` + + // Payload is sent along with POST or PUT requests + Payload string `hcl:"payload,optional" json:"payload,omitempty"` + + // Interval between checks + Interval string `hcl:"interval" json:"interval" validate:"required,duration"` + + // Duration to run the tests for + Duration string `hcl:"duration" json:"duration" validate:"required,duration"` +} + +var ErrInvalidPath = fmt.Errorf("Path is not a valid HTTP path") +var ErrInvalidMethod = fmt.Errorf("Path is not a valid HTTP method, please specify one of GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE,PATCH") +var ErrInvalidInterval = fmt.Errorf("Interval is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") +var ErrInvalidDuration = fmt.Errorf("Duration is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") + +func New(l hclog.Logger, m interfaces.Monitor) (*Plugin, error) { + return &Plugin{log: l, monitoring: m}, nil +} + +// Configure the plugin with the given json +// returns an error when validation fails for the config +func (p *Plugin) Configure(data json.RawMessage) error { + p.config = &PluginConfig{} + + err := json.Unmarshal(data, p.config) + if err != nil { + return err + } + + // validate the plugin config + validate := validator.New() + validate.RegisterValidation("duration", interfaces.ValidateDuration) + err = validate.Struct(p.config) + + if err != nil { + errorMessage := "" + for _, err := range err.(validator.ValidationErrors) { + switch err.Namespace() { + case "PluginConfig.Path": + errorMessage += ErrInvalidPath.Error() + "\n" + case "PluginConfig.Method": + errorMessage += ErrInvalidMethod.Error() + "\n" + case "PluginConfig.Interval": + errorMessage += ErrInvalidInterval.Error() + "\n" + case "PluginConfig.Duration": + errorMessage += ErrInvalidDuration.Error() + "\n" + } + } + + return fmt.Errorf(errorMessage) + } + + return nil +} diff --git a/plugins/httptest/plugin_test.go b/plugins/httptest/plugin_test.go new file mode 100644 index 0000000..607594e --- /dev/null +++ b/plugins/httptest/plugin_test.go @@ -0,0 +1,179 @@ +package httptest + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func setupPlugin(t *testing.T) *Plugin { + p, err := New(nil, nil) + require.NoError(t, err) + + return p +} + +func TestValidatesOK(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configValid)) + + require.NoError(t, err) +} + +func TestValidatesPath(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configInvalidPath)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidPath.Error()) +} + +func TestValidatesMissingPath(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configMissingPath)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidPath.Error()) +} + +func TestValidatesMethod(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configInvalidMethod)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidMethod.Error()) +} + +func TestValidatesMissingMethod(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configMissingMethod)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidMethod.Error()) +} + +func TestValidatesInterval(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configInvalidInterval)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidInterval.Error()) +} + +func TestValidatesMissingInterval(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configMissingInterval)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidInterval.Error()) +} + +func TestValidatesDuration(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configInvalidDuration)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidDuration.Error()) +} + +func TestValidatesMissingDuration(t *testing.T) { + p := setupPlugin(t) + + err := p.Configure([]byte(configMissingDuration)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidDuration.Error()) +} + +var configValid = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10s" +} +` + +var configInvalidPath = ` +{ + "path": "'", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10s" +} +` + +var configMissingPath = ` +{ + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10s" +} +` + +var configInvalidMethod = ` +{ + "path": "/", + "method": "GIT", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10s" +} +` + +var configMissingMethod = ` +{ + "path": "/", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10s" +} +` + +var configInvalidInterval = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10", + "duration": "10s" +} +` +var configMissingInterval = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "duration": "10s" +} +` + +var configInvalidDuration = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "duration": "10" +} +` + +var configMissingDuration = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s" +} +` diff --git a/plugins/interfaces/customvalidation.go b/plugins/interfaces/customvalidation.go new file mode 100644 index 0000000..ef9249f --- /dev/null +++ b/plugins/interfaces/customvalidation.go @@ -0,0 +1,13 @@ +package interfaces + +import ( + "time" + + "github.com/go-playground/validator/v10" +) + +// validates that a string is a duration +func ValidateDuration(field validator.FieldLevel) bool { + _, err := time.ParseDuration(field.Field().String()) + return err == nil +} diff --git a/plugins/interfaces/deploymenttest.go b/plugins/interfaces/deploymenttest.go new file mode 100644 index 0000000..4807532 --- /dev/null +++ b/plugins/interfaces/deploymenttest.go @@ -0,0 +1,12 @@ +package interfaces + +import "context" + +// PostDeploymentTest defines a plugin that validates the health of a new deployment by +// executing a number of requests to it and then executing the +type PostDeploymentTest interface { + Configurable + + // Execute the tests and return an error if the test fails + Execute(ctx context.Context) error +} From cd2777dfe7e71511baa6ed7f38ce0af5d1d207c0 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Fri, 18 Mar 2022 06:58:19 +0000 Subject: [PATCH 02/12] Start adding post deployment tests --- .github/workflows/go.yml | 10 +- config/config.go | 85 ++++++++++++++++ controller/release.go | 7 +- .../templates/controller.yaml | 7 +- .../controller_upstreams_service.yaml | 19 ++++ .../consul-release-controller/values.yaml | 2 +- plugins/httptest/plugin.go | 32 +++++- plugins/httptest/plugin_test.go | 97 ++++++++++++++++--- shipyard/kubernetes/envoy-proxy.hcl | 31 ++++++ shipyard/kubernetes/example-config.yaml | 50 ++++++++++ shipyard/kubernetes/fake-controller.yaml | 68 +++++++++++++ 11 files changed, 381 insertions(+), 27 deletions(-) create mode 100644 config/config.go create mode 100644 deploy/kubernetes/charts/consul-release-controller/templates/controller_upstreams_service.yaml create mode 100644 shipyard/kubernetes/envoy-proxy.hcl create mode 100644 shipyard/kubernetes/example-config.yaml create mode 100644 shipyard/kubernetes/fake-controller.yaml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index dc8ce0b..91c26d0 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.18 - name: Build run: go build -v ./... @@ -30,7 +30,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.18 - name: Setup Kubebuilder run: | @@ -64,7 +64,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.18 - name: Setup Functional Tests run: | @@ -185,10 +185,10 @@ jobs: if: ${{ needs.check_labels.outputs.pr_labels_set == 'true' }} steps: - - name: Set up Go 1.17 + - name: Set up Go 1.18 uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.18 - name: Set up Node 14 uses: actions/setup-node@v2 diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..0bbf0af --- /dev/null +++ b/config/config.go @@ -0,0 +1,85 @@ +package config + +import ( + "os" + "strconv" +) + +// TLSCertificate returns the path to the TLS certificate used to secure the API and webhook transport +func TLSCertificate() string { + return os.Getenv("TLS_CERT") +} + +// TLSKey returns the path to the TLS key used to secure the API and webhook transport +func TLSKey() string { + return os.Getenv("TLS_KEY") +} + +// KubeConfig returns the path to the Kubernetes config that can be used to contact the Kubernetes +// API sever +func KubeConfig() string { + return os.Getenv("KUBECONFIG") +} + +// ConsulServiceUpstreams returns the URI of the Envoy proxy that is serving Service Mesh +// endpoints for services under test +func ConsulServiceUpstreams() string { + return os.Getenv("UPSTREAMS") +} + +func APIBindAddress() string { + if a := os.Getenv("API_BIND_ADDRESS"); a != "" { + return a + } + + return "0.0.0.0" +} + +func APIPort() int { + if a := os.Getenv("API_PORT"); a != "" { + p, err := strconv.Atoi(a) + if err != nil { + return p + } + } + + return 9443 +} + +func MetricsBindAddress() string { + if a := os.Getenv("METRICS_BIND_ADDRESS"); a != "" { + return a + } + + return "0.0.0.0" +} + +func MetricsPort() int { + if a := os.Getenv("METRICS_PORT"); a != "" { + p, err := strconv.Atoi(a) + if err != nil { + return p + } + } + + return 9102 +} + +func KubernetesControllerBindAddress() string { + if a := os.Getenv("K8S_CONTROLLER_ADDRESS"); a != "" { + return a + } + + return "0.0.0.0" +} + +func KubernetesControllerPort() int { + if a := os.Getenv("K8S_CONTROLLER_PORT"); a != "" { + p, err := strconv.Atoi(a) + if err != nil { + return p + } + } + + return 19443 +} diff --git a/controller/release.go b/controller/release.go index 58ee6c4..579ef47 100644 --- a/controller/release.go +++ b/controller/release.go @@ -12,6 +12,7 @@ import ( "github.com/go-chi/chi/v5" "github.com/go-chi/httplog" "github.com/hashicorp/go-hclog" + "github.com/nicholasjackson/consul-release-controller/config" "github.com/nicholasjackson/consul-release-controller/handlers/api" kubernetes "github.com/nicholasjackson/consul-release-controller/kubernetes/controller" "github.com/nicholasjackson/consul-release-controller/plugins" @@ -29,7 +30,7 @@ type Release struct { } func New(log hclog.Logger) (*Release, error) { - metrics, err := prometheus.NewMetrics("0.0.0.0", 9102, "/metrics") + metrics, err := prometheus.NewMetrics(config.MetricsBindAddress(), config.MetricsPort(), "/metrics") if err != nil { log.Error("failed to create metrics", "error", err) return nil, err @@ -48,7 +49,7 @@ func (r *Release) Start() error { provider := plugins.GetProvider(r.log, r.metrics, store) // create the kubernetes controller - kc := kubernetes.New(provider, os.Getenv("TLS_CERT"), os.Getenv("TLS_KEY"), 19443) + kc := kubernetes.New(provider, config.TLSCertificate(), config.TLSKey(), config.KubernetesControllerPort()) r.kubernetesController = kc go kc.Start() @@ -72,7 +73,7 @@ func (r *Release) Start() error { rtr.Get("/v1/releases/{name}", apiHandler.GetSingle) rtr.Delete("/v1/releases/{name}", apiHandler.Delete) - certificate, err := tls.LoadX509KeyPair(os.Getenv("TLS_CERT"), os.Getenv("TLS_KEY")) + certificate, err := tls.LoadX509KeyPair(config.TLSCertificate(), config.TLSKey()) if err != nil { r.log.Error("Error loading certificates", "error", err) return fmt.Errorf("unable to load TLS certificates: %s", err) diff --git a/deploy/kubernetes/charts/consul-release-controller/templates/controller.yaml b/deploy/kubernetes/charts/consul-release-controller/templates/controller.yaml index a89d451..319b8f5 100644 --- a/deploy/kubernetes/charts/consul-release-controller/templates/controller.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/templates/controller.yaml @@ -16,10 +16,13 @@ spec: {{- include "consul-release-controller.selectorLabels" . | nindent 6 }} template: metadata: - {{- with .Values.controller.podAnnotations }} annotations: + 'consul.hashicorp.com/connect-inject': 'true' + 'consul.hashicorp.com/transparent-proxy': 'false' + 'consul.hashicorp.com/connect-service-upstreams': "{{ include "consul-release-controller.fullname" . }}-upstreams:80" + {{- with .Values.controller.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} labels: {{- include "consul-release-controller.selectorLabels" . | nindent 8 }} spec: diff --git a/deploy/kubernetes/charts/consul-release-controller/templates/controller_upstreams_service.yaml b/deploy/kubernetes/charts/consul-release-controller/templates/controller_upstreams_service.yaml new file mode 100644 index 0000000..6e0f144 --- /dev/null +++ b/deploy/kubernetes/charts/consul-release-controller/templates/controller_upstreams_service.yaml @@ -0,0 +1,19 @@ +# Service that provides the Consul Release Controller with the ability to connect +# to service mesh services. This is required when using post deployment tests as +# the Consul Release Controller requires the ability to +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "consul-release-controller.fullname" . }}-upstreams + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "consul-release-controller.labels" . | nindent 4 }} +spec: + selector: + app.kubernetes.io/name: consul-release-controller-upstreams + ports: + - name: http + protocol: TCP + port: 80 + targetPort: 80 \ No newline at end of file diff --git a/deploy/kubernetes/charts/consul-release-controller/values.yaml b/deploy/kubernetes/charts/consul-release-controller/values.yaml index d6e2aff..21bcc61 100644 --- a/deploy/kubernetes/charts/consul-release-controller/values.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/values.yaml @@ -154,4 +154,4 @@ webhook: # for the webhook additionalDNSNames: [] - failurePolicy: Fail \ No newline at end of file + failurePolicy: Ignore \ No newline at end of file diff --git a/plugins/httptest/plugin.go b/plugins/httptest/plugin.go index 489814f..84a338d 100644 --- a/plugins/httptest/plugin.go +++ b/plugins/httptest/plugin.go @@ -1,11 +1,15 @@ package httptest import ( + "bytes" + "context" "encoding/json" "fmt" + "net/http" "github.com/go-playground/validator/v10" "github.com/hashicorp/go-hclog" + "github.com/nicholasjackson/consul-release-controller/config" "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" ) @@ -13,6 +17,10 @@ type Plugin struct { log hclog.Logger config *PluginConfig monitoring interfaces.Monitor + + name string + namespace string + runtime string } type PluginConfig struct { @@ -37,8 +45,8 @@ var ErrInvalidMethod = fmt.Errorf("Path is not a valid HTTP method, please speci var ErrInvalidInterval = fmt.Errorf("Interval is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") var ErrInvalidDuration = fmt.Errorf("Duration is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") -func New(l hclog.Logger, m interfaces.Monitor) (*Plugin, error) { - return &Plugin{log: l, monitoring: m}, nil +func New(name, namespace, runtime string, l hclog.Logger, m interfaces.Monitor) (*Plugin, error) { + return &Plugin{log: l, monitoring: m, name: name, namespace: namespace, runtime: runtime}, nil } // Configure the plugin with the given json @@ -76,3 +84,23 @@ func (p *Plugin) Configure(data json.RawMessage) error { return nil } + +func (p *Plugin) Execute(ctx context.Context) error { + // Make a call to the external service to an instance of Envoy proxy that exposes the different services using HOST header on the same port + httpreq, err := http.NewRequest(p.config.Method, fmt.Sprintf("%s%s", config.ConsulServiceUpstreams(), p.config.Path), bytes.NewBufferString(p.config.Payload)) + if err != nil { + p.log.Error("Unable to create HTTP request", "error", err) + return err + } + + // The envoy proxy that is providing access to the candidate service has been configured to use HOST header to + // differentiate between the services. The convention is service.namespace + httpreq.Host = fmt.Sprintf("%s.%s", p.name, p.namespace) + + _, err = http.DefaultClient.Do(httpreq) + if err != nil { + return err + } + + return nil +} diff --git a/plugins/httptest/plugin_test.go b/plugins/httptest/plugin_test.go index 607594e..b4fd120 100644 --- a/plugins/httptest/plugin_test.go +++ b/plugins/httptest/plugin_test.go @@ -1,20 +1,61 @@ package httptest import ( + "context" + "io/ioutil" + "net/http" + "net/http/httptest" "testing" + "time" + "github.com/hashicorp/go-hclog" + "github.com/nicholasjackson/consul-release-controller/plugins/mocks" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) -func setupPlugin(t *testing.T) *Plugin { - p, err := New(nil, nil) +type httpRequest struct { + Headers http.Header + Host string + Path string + Body []byte + Method string +} + +func setupPlugin(t *testing.T) (*Plugin, *mocks.MonitorMock, *[]*httpRequest) { + mm := &mocks.MonitorMock{} + + p, err := New("test", "testnamespace", "kubernetes", hclog.NewNullLogger(), mm) require.NoError(t, err) - return p + reqs := []*httpRequest{} + + // start the test server + s := httptest.NewServer(http.HandlerFunc( + func(rw http.ResponseWriter, r *http.Request) { + defer r.Body.Close() + + hr := &httpRequest{} + hr.Path = r.URL.Path + hr.Body, _ = ioutil.ReadAll(r.Body) + hr.Headers = r.Header + hr.Method = r.Method + hr.Host = r.Host + + reqs = append(reqs, hr) + })) + + t.Setenv("UPSTREAMS", s.URL) + + t.Cleanup(func() { + s.Close() + }) + + return p, mm, &reqs } func TestValidatesOK(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configValid)) @@ -22,7 +63,7 @@ func TestValidatesOK(t *testing.T) { } func TestValidatesPath(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configInvalidPath)) @@ -31,7 +72,7 @@ func TestValidatesPath(t *testing.T) { } func TestValidatesMissingPath(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configMissingPath)) @@ -40,7 +81,7 @@ func TestValidatesMissingPath(t *testing.T) { } func TestValidatesMethod(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configInvalidMethod)) @@ -49,7 +90,7 @@ func TestValidatesMethod(t *testing.T) { } func TestValidatesMissingMethod(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configMissingMethod)) @@ -58,7 +99,7 @@ func TestValidatesMissingMethod(t *testing.T) { } func TestValidatesInterval(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configInvalidInterval)) @@ -67,7 +108,7 @@ func TestValidatesInterval(t *testing.T) { } func TestValidatesMissingInterval(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configMissingInterval)) @@ -76,7 +117,7 @@ func TestValidatesMissingInterval(t *testing.T) { } func TestValidatesDuration(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configInvalidDuration)) @@ -85,7 +126,7 @@ func TestValidatesDuration(t *testing.T) { } func TestValidatesMissingDuration(t *testing.T) { - p := setupPlugin(t) + p, _, _ := setupPlugin(t) err := p.Configure([]byte(configMissingDuration)) @@ -93,13 +134,41 @@ func TestValidatesMissingDuration(t *testing.T) { require.Contains(t, err.Error(), ErrInvalidDuration.Error()) } +func TestExecuteCallsExternalServer(t *testing.T) { + p, _, hr := setupPlugin(t) + + err := p.Configure([]byte(configValid)) + require.NoError(t, err) + + err = p.Execute(context.TODO()) + require.NoError(t, err) + + require.Len(t, *hr, 1) + require.Equal(t, "/", (*hr)[0].Path) + require.Equal(t, "GET", (*hr)[0].Method) + require.Equal(t, "test.testnamespace", (*hr)[0].Host) + require.Equal(t, "{\"foo\": \"bar\"}", string((*hr)[0].Body)) +} + +func TestExecuteCallsCheck(t *testing.T) { + p, mm, _ := setupPlugin(t) + + err := p.Configure([]byte(configValid)) + require.NoError(t, err) + + err = p.Execute(context.TODO()) + require.NoError(t, err) + + mm.AssertCalled(t, "Check", mock.Anything, 10*time.Nanosecond) +} + var configValid = ` { "path": "/", "method": "GET", "payload": "{\"foo\": \"bar\"}", - "interval": "10s", - "duration": "10s" + "interval": "10ns", + "duration": "10ns" } ` diff --git a/shipyard/kubernetes/envoy-proxy.hcl b/shipyard/kubernetes/envoy-proxy.hcl new file mode 100644 index 0000000..4c0813c --- /dev/null +++ b/shipyard/kubernetes/envoy-proxy.hcl @@ -0,0 +1,31 @@ +ingress "upstreams-proxy" { + source { + driver = "local" + + config { + port = 28080 + } + } + + destination { + driver = "k8s" + + config { + cluster = "k8s_cluster.dc1" + address = "consul-release-controller.default.svc" + port = 8080 + } + } +} + +k8s_config "upstreams-proxy" { + depends_on = ["module.consul"] + + cluster = "k8s_cluster.dc1" + paths = [ + "./fake-controller.yaml", + "./example-config.yaml", + ] + + wait_until_ready = true +} \ No newline at end of file diff --git a/shipyard/kubernetes/example-config.yaml b/shipyard/kubernetes/example-config.yaml new file mode 100644 index 0000000..fe7f6d8 --- /dev/null +++ b/shipyard/kubernetes/example-config.yaml @@ -0,0 +1,50 @@ +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceDefaults +metadata: + name: consul-release-controller-upstreams +spec: + protocol: http + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceRouter +metadata: + name: consul-release-controller-upstreams +spec: + routes: + - match: + http: + header: + - name: HOST + # Convention is Cosnul service.namespace + exact: 'api.default' + destination: + service: api + #serviceSubset: default + +#--- +#apiVersion: consul.hashicorp.com/v1alpha1 +#kind: ServiceIntentions +#metadata: +# name: api +#spec: +# destination: +# name: api +# sources: +# - name: web +# action: allow +# - name: consul-release-controller +# action: allow + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceIntentions +metadata: + name: consul-release-controller-upstreams +spec: + destination: + name: consul-release-controller-upstreams + sources: + - name: consul-release-controller + action: allow \ No newline at end of file diff --git a/shipyard/kubernetes/fake-controller.yaml b/shipyard/kubernetes/fake-controller.yaml new file mode 100644 index 0000000..5ae9a7e --- /dev/null +++ b/shipyard/kubernetes/fake-controller.yaml @@ -0,0 +1,68 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: consul-release-controller-upstreams + namespace: default +spec: + ports: + - name: http + protocol: TCP + port: 18080 + +--- +apiVersion: v1 +kind: Service +metadata: + name: consul-release-controller + namespace: default +spec: + selector: + app: consul-release-controller + ports: + - name: http + protocol: TCP + port: 8080 + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: consul-release-controller + namespace: default +automountServiceAccountToken: false + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: consul-release-controller-deployment + namespace: default + labels: + app: consul-release-controller +spec: + replicas: 1 + selector: + matchLabels: + app: consul-release-controller + template: + metadata: + labels: + app: consul-release-controller + annotations: + consul.hashicorp.com/connect-inject: 'true' + consul.hashicorp.com/transparent-proxy: 'false' + consul.hashicorp.com/connect-service-upstreams: "consul-release-controller-upstreams:18080" + spec: + serviceAccountName: consul-release-controller + automountServiceAccountToken: true + containers: + - name: consul-release-controller + image: alpine/socat + args: [ + "TCP-LISTEN:8080,fork", + "TCP:127.0.0.1:18080" + ] + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 \ No newline at end of file From 44a059eb7e58f4d342e904b5fb5ca200205cea8c Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 20 Mar 2022 08:12:37 +0000 Subject: [PATCH 03/12] Add post deployment tests --- changelog.md | 7 ++ models/release.go | 2 +- plugins/httptest/plugin.go | 78 +++++++++++--- plugins/httptest/plugin_test.go | 125 ++++++++++++++++++---- plugins/interfaces/deploymenttest.go | 7 +- plugins/interfaces/monitor.go | 22 +++- plugins/interfaces/provider.go | 3 + plugins/mocks/deploymenttest.go | 27 +++++ plugins/mocks/mocks.go | 32 ++++-- plugins/mocks/monitor.go | 5 +- plugins/prometheus/monitor.go | 21 ++-- plugins/statemachine/statemachine.go | 46 +++++++- plugins/statemachine/statemachine_test.go | 18 ++++ test_data/valid_kubernetes_release.json | 14 ++- 14 files changed, 343 insertions(+), 64 deletions(-) create mode 100644 plugins/mocks/deploymenttest.go diff --git a/changelog.md b/changelog.md index ee11946..fe340e4 100644 --- a/changelog.md +++ b/changelog.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Helm chart Webhook config failure policy now defaults to `Ignore` +- Configuration for the server moved to global `config` package + +### Added +- PostDeploymentTests + ## [0.0.14 - 2022-03-14 ### Fixed - Ensure a release reconfigures the plugins on update diff --git a/models/release.go b/models/release.go index 42918ec..c6ee300 100644 --- a/models/release.go +++ b/models/release.go @@ -21,7 +21,7 @@ type Release struct { Strategy *PluginConfig `json:"strategy"` Monitor *PluginConfig `json:"monitor"` Webhooks []*PluginConfig `json:"webhooks"` - PostDeploymentTest []*PluginConfig `json:"post_deployment_test"` + PostDeploymentTest *PluginConfig `json:"post_deployment_test"` } type PluginConfig struct { diff --git a/plugins/httptest/plugin.go b/plugins/httptest/plugin.go index 84a338d..fa8bb0a 100644 --- a/plugins/httptest/plugin.go +++ b/plugins/httptest/plugin.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "net/http" + "time" "github.com/go-playground/validator/v10" "github.com/hashicorp/go-hclog" @@ -33,17 +34,25 @@ type PluginConfig struct { // Payload is sent along with POST or PUT requests Payload string `hcl:"payload,optional" json:"payload,omitempty"` + // RequiredTestPasses is the number of continuous successful test checks that must be attained before the + // PostDeploymentTest is returned as healthy. E.g. if this value is set to 5 then there must be 5 tests + // tests that result in a successfull outcome without error. A single failure resets the pass count to 0, i.e. + // 6 tests that are a mixture of 5 passes but contain 1 failure (p p p f p p) would not result in an overall pass + // until three more positive results have been obtained as the pass count is reset on the first failure. + RequiredTestPasses int `hcl:"required_test_passes" json:"required_test_passes" validate:"required,gte=1"` + // Interval between checks Interval string `hcl:"interval" json:"interval" validate:"required,duration"` - // Duration to run the tests for - Duration string `hcl:"duration" json:"duration" validate:"required,duration"` + // Timeout specifies the maximum duration the tests will run for + Timeout string `hcl:"timeout" json:"timeout" validate:"required,duration"` } var ErrInvalidPath = fmt.Errorf("Path is not a valid HTTP path") -var ErrInvalidMethod = fmt.Errorf("Path is not a valid HTTP method, please specify one of GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE,PATCH") +var ErrInvalidMethod = fmt.Errorf("Method is not a valid HTTP method, please specify one of GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE,PATCH") var ErrInvalidInterval = fmt.Errorf("Interval is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") -var ErrInvalidDuration = fmt.Errorf("Duration is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") +var ErrInvalidTimeout = fmt.Errorf("Timeout is not a valid duration, please specify using Go duration format e.g (30s, 30ms, 60m)") +var ErrInvalidTestPasses = fmt.Errorf("RequiredTestPasses is not valid, please specify a value greater than 0") func New(name, namespace, runtime string, l hclog.Logger, m interfaces.Monitor) (*Plugin, error) { return &Plugin{log: l, monitoring: m, name: name, namespace: namespace, runtime: runtime}, nil @@ -74,8 +83,10 @@ func (p *Plugin) Configure(data json.RawMessage) error { errorMessage += ErrInvalidMethod.Error() + "\n" case "PluginConfig.Interval": errorMessage += ErrInvalidInterval.Error() + "\n" - case "PluginConfig.Duration": - errorMessage += ErrInvalidDuration.Error() + "\n" + case "PluginConfig.Timeout": + errorMessage += ErrInvalidTimeout.Error() + "\n" + case "PluginConfig.RequiredTestPasses": + errorMessage += ErrInvalidTestPasses.Error() + "\n" } } @@ -86,21 +97,54 @@ func (p *Plugin) Configure(data json.RawMessage) error { } func (p *Plugin) Execute(ctx context.Context) error { - // Make a call to the external service to an instance of Envoy proxy that exposes the different services using HOST header on the same port - httpreq, err := http.NewRequest(p.config.Method, fmt.Sprintf("%s%s", config.ConsulServiceUpstreams(), p.config.Path), bytes.NewBufferString(p.config.Payload)) + timeoutDuration, err := time.ParseDuration(p.config.Timeout) if err != nil { - p.log.Error("Unable to create HTTP request", "error", err) - return err + return fmt.Errorf("unable to parse timeout as duration: %s", err) } - // The envoy proxy that is providing access to the candidate service has been configured to use HOST header to - // differentiate between the services. The convention is service.namespace - httpreq.Host = fmt.Sprintf("%s.%s", p.name, p.namespace) - - _, err = http.DefaultClient.Do(httpreq) + interval, err := time.ParseDuration(p.config.Interval) if err != nil { - return err + return fmt.Errorf("unable to parse interval as duration: %s", err) } + successCount := 0 + timeout, cancel := context.WithTimeout(ctx, timeoutDuration) + defer cancel() + + for { + // Make a call to the external service to an instance of Envoy proxy that exposes the different services using HOST header on the same port + httpreq, err := http.NewRequest(p.config.Method, fmt.Sprintf("%s%s", config.ConsulServiceUpstreams(), p.config.Path), bytes.NewBufferString(p.config.Payload)) + if err != nil { + p.log.Error("Unable to create HTTP request", "error", err) + return err + } - return nil + // The envoy proxy that is providing access to the candidate service has been configured to use HOST header to + // differentiate between the services. The convention is service.namespace + httpreq.Host = fmt.Sprintf("%s.%s", p.name, p.namespace) + + _, err = http.DefaultClient.Do(httpreq) + if err != nil { + return err + } + + // We are ignoring the status code as we are using the Monitoring checks as a measure of success + + res, _ := p.monitoring.Check(ctx, 30*time.Second) + if res == interfaces.CheckSuccess { + successCount++ + } else { + // on failure reset the success count as passes must be continuous + successCount = 0 + } + + switch { + case timeout.Err() != nil: + p.log.Error("Post deployment test failed, test timeout", "successCount", successCount) + return fmt.Errorf("post deployment test failed, timeout waiting for successful tests") + case successCount >= p.config.RequiredTestPasses: + return nil + } + + time.Sleep(interval) + } } diff --git a/plugins/httptest/plugin_test.go b/plugins/httptest/plugin_test.go index b4fd120..a86f365 100644 --- a/plugins/httptest/plugin_test.go +++ b/plugins/httptest/plugin_test.go @@ -2,6 +2,7 @@ package httptest import ( "context" + "fmt" "io/ioutil" "net/http" "net/http/httptest" @@ -9,7 +10,9 @@ import ( "time" "github.com/hashicorp/go-hclog" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/nicholasjackson/consul-release-controller/plugins/mocks" + "github.com/nicholasjackson/consul-release-controller/testutils" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) @@ -24,6 +27,7 @@ type httpRequest struct { func setupPlugin(t *testing.T) (*Plugin, *mocks.MonitorMock, *[]*httpRequest) { mm := &mocks.MonitorMock{} + mm.On("Check", mock.Anything, 30*time.Second).Return(interfaces.CheckSuccess, nil) p, err := New("test", "testnamespace", "kubernetes", hclog.NewNullLogger(), mm) require.NoError(t, err) @@ -119,19 +123,37 @@ func TestValidatesMissingInterval(t *testing.T) { func TestValidatesDuration(t *testing.T) { p, _, _ := setupPlugin(t) - err := p.Configure([]byte(configInvalidDuration)) + err := p.Configure([]byte(configInvalidTimeout)) require.Error(t, err) - require.Contains(t, err.Error(), ErrInvalidDuration.Error()) + require.Contains(t, err.Error(), ErrInvalidTimeout.Error()) } func TestValidatesMissingDuration(t *testing.T) { p, _, _ := setupPlugin(t) - err := p.Configure([]byte(configMissingDuration)) + err := p.Configure([]byte(configMissingTimeout)) require.Error(t, err) - require.Contains(t, err.Error(), ErrInvalidDuration.Error()) + require.Contains(t, err.Error(), ErrInvalidTimeout.Error()) +} + +func TestValidatesRequiredTestPasses(t *testing.T) { + p, _, _ := setupPlugin(t) + + err := p.Configure([]byte(configInvalidTestPasses)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidTestPasses.Error()) +} + +func TestValidatesMissingTestPasses(t *testing.T) { + p, _, _ := setupPlugin(t) + + err := p.Configure([]byte(configMissingTestPasses)) + + require.Error(t, err) + require.Contains(t, err.Error(), ErrInvalidTestPasses.Error()) } func TestExecuteCallsExternalServer(t *testing.T) { @@ -143,14 +165,14 @@ func TestExecuteCallsExternalServer(t *testing.T) { err = p.Execute(context.TODO()) require.NoError(t, err) - require.Len(t, *hr, 1) + require.Len(t, *hr, 5) require.Equal(t, "/", (*hr)[0].Path) require.Equal(t, "GET", (*hr)[0].Method) require.Equal(t, "test.testnamespace", (*hr)[0].Host) require.Equal(t, "{\"foo\": \"bar\"}", string((*hr)[0].Body)) } -func TestExecuteCallsCheck(t *testing.T) { +func TestExecuteCallsCheck5Times(t *testing.T) { p, mm, _ := setupPlugin(t) err := p.Configure([]byte(configValid)) @@ -159,7 +181,44 @@ func TestExecuteCallsCheck(t *testing.T) { err = p.Execute(context.TODO()) require.NoError(t, err) - mm.AssertCalled(t, "Check", mock.Anything, 10*time.Nanosecond) + mm.AssertCalled(t, "Check", mock.Anything, 30*time.Second) + mm.AssertNumberOfCalls(t, "Check", 5) +} + +func TestExecuteCallsCheck8TimesWhenOneTestFails(t *testing.T) { + p, mm, _ := setupPlugin(t) + testutils.ClearMockCall(&mm.Mock, "Check") + + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckFailed, fmt.Errorf("oops")) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + mm.On("Check", mock.Anything, mock.Anything).Once().Return(interfaces.CheckSuccess, nil) + + err := p.Configure([]byte(configValid)) + require.NoError(t, err) + + err = p.Execute(context.TODO()) + require.NoError(t, err) + + mm.AssertCalled(t, "Check", mock.Anything, 30*time.Second) + mm.AssertNumberOfCalls(t, "Check", 8) +} + +func TestExecuteTimesoutIfNoSuccess(t *testing.T) { + p, mm, _ := setupPlugin(t) + testutils.ClearMockCall(&mm.Mock, "Check") + mm.On("Check", mock.Anything, mock.Anything).Return(interfaces.CheckFailed, fmt.Errorf("oops")) + + err := p.Configure([]byte(configValid)) + require.NoError(t, err) + + err = p.Execute(context.TODO()) + require.Error(t, err) + require.Contains(t, err.Error(), "timeout") } var configValid = ` @@ -168,7 +227,8 @@ var configValid = ` "method": "GET", "payload": "{\"foo\": \"bar\"}", "interval": "10ns", - "duration": "10ns" + "required_test_passes": 5, + "timeout": "10ms" } ` @@ -178,7 +238,8 @@ var configInvalidPath = ` "method": "GET", "payload": "{\"foo\": \"bar\"}", "interval": "10s", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" } ` @@ -187,7 +248,8 @@ var configMissingPath = ` "method": "GET", "payload": "{\"foo\": \"bar\"}", "interval": "10s", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" } ` @@ -197,7 +259,8 @@ var configInvalidMethod = ` "method": "GIT", "payload": "{\"foo\": \"bar\"}", "interval": "10s", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" } ` @@ -206,7 +269,8 @@ var configMissingMethod = ` "path": "/", "payload": "{\"foo\": \"bar\"}", "interval": "10s", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" } ` @@ -216,7 +280,8 @@ var configInvalidInterval = ` "method": "GET", "payload": "{\"foo\": \"bar\"}", "interval": "10", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" } ` var configMissingInterval = ` @@ -224,25 +289,49 @@ var configMissingInterval = ` "path": "/", "method": "GET", "payload": "{\"foo\": \"bar\"}", - "duration": "10s" + "required_test_passes": 5, + "timeout": "10s" +} +` + +var configInvalidTimeout = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "duration": "10", + "required_test_passes": 5, + "timeout": "10" +} +` + +var configMissingTimeout = ` +{ + "path": "/", + "method": "GET", + "payload": "{\"foo\": \"bar\"}", + "interval": "10s", + "required_test_passes": 5 } ` -var configInvalidDuration = ` +var configInvalidTestPasses = ` { "path": "/", "method": "GET", "payload": "{\"foo\": \"bar\"}", "interval": "10s", - "duration": "10" + "required_test_passes": 0, + "timeout": "10s" } ` -var configMissingDuration = ` +var configMissingTestPasses = ` { "path": "/", "method": "GET", "payload": "{\"foo\": \"bar\"}", - "interval": "10s" + "interval": "10s", + "timeout": "10s" } ` diff --git a/plugins/interfaces/deploymenttest.go b/plugins/interfaces/deploymenttest.go index 4807532..1bb5d84 100644 --- a/plugins/interfaces/deploymenttest.go +++ b/plugins/interfaces/deploymenttest.go @@ -1,6 +1,9 @@ package interfaces -import "context" +import ( + "context" + "time" +) // PostDeploymentTest defines a plugin that validates the health of a new deployment by // executing a number of requests to it and then executing the @@ -8,5 +11,5 @@ type PostDeploymentTest interface { Configurable // Execute the tests and return an error if the test fails - Execute(ctx context.Context) error + Execute(ctx context.Context, interval time.Duration) error } diff --git a/plugins/interfaces/monitor.go b/plugins/interfaces/monitor.go index 61137b6..4f7db4a 100644 --- a/plugins/interfaces/monitor.go +++ b/plugins/interfaces/monitor.go @@ -5,10 +5,28 @@ import ( "time" ) +type CheckResult int + +const ( + CheckSuccess CheckResult = iota + CheckFailed + CheckNoMetrics + CheckError +) + // Monitor defines an interface that all Monitoring platforms like Prometheus must implement type Monitor interface { Configurable - // Check the defined metrics to see that they are in tolerance - Check(ctx context.Context, interval time.Duration) error + // Check the defined metrics to see that they are in tolerance, if the check fails + // either due to an internal error, failed precondition, or no data, a detailed + // error is returned. In all instances CheckResult is returned informing + // the caller of the outcome. + // + // CheckSuccess - The check has completed successfully. + // CheckFailed - The call was successfully made to the metrics database but the result + // was not in tolerance. + // CheckNoMetrics - The check completed successfully but no data was returned from the metrics db. + // CheckError - An internal error occurred. + Check(ctx context.Context, interval time.Duration) (CheckResult, error) } diff --git a/plugins/interfaces/provider.go b/plugins/interfaces/provider.go index 0db963a..b170bc2 100644 --- a/plugins/interfaces/provider.go +++ b/plugins/interfaces/provider.go @@ -24,6 +24,9 @@ type Provider interface { // CreateWebhook returns a Webhook plugin that corresponds to the given name CreateWebhook(pluginName string) (Webhook, error) + // CreatePostDeploymentTest returns a PostDeploymentTest plugin that corresponds to the given name + CreatePostDeploymentTest(pluginName, deploymentName, namespace, runtime string, mp Monitor) (PostDeploymentTest, error) + // Gets an instance of the current logger GetLogger() hclog.Logger diff --git a/plugins/mocks/deploymenttest.go b/plugins/mocks/deploymenttest.go new file mode 100644 index 0000000..9bd96ca --- /dev/null +++ b/plugins/mocks/deploymenttest.go @@ -0,0 +1,27 @@ +package mocks + +import ( + "context" + "encoding/json" + "time" + + "github.com/stretchr/testify/mock" +) + +// PostDeploymentTest defines a plugin that validates the health of a new deployment by +// executing a number of requests to it and then executing the +type PostDeploymentTestMock struct { + mock.Mock +} + +func (r *PostDeploymentTestMock) Configure(c json.RawMessage) error { + args := r.Called(c) + + return args.Error(0) +} + +func (r *PostDeploymentTestMock) Execute(ctx context.Context, interval time.Duration) error { + args := r.Called(ctx, interval) + + return args.Error(0) +} diff --git a/plugins/mocks/mocks.go b/plugins/mocks/mocks.go index cc331a3..83662f2 100644 --- a/plugins/mocks/mocks.go +++ b/plugins/mocks/mocks.go @@ -12,15 +12,16 @@ import ( ) type Mocks struct { - ReleaserMock *ReleaserMock - RuntimeMock *RuntimeMock - MonitorMock *MonitorMock - StrategyMock *StrategyMock - MetricsMock *MetricsMock - StoreMock *StoreMock - StateMachineMock *StateMachineMock - WebhookMock *WebhookMock - LogBuffer *bytes.Buffer + ReleaserMock *ReleaserMock + RuntimeMock *RuntimeMock + MonitorMock *MonitorMock + StrategyMock *StrategyMock + PostDeploymentMock *PostDeploymentTestMock + MetricsMock *MetricsMock + StoreMock *StoreMock + StateMachineMock *StateMachineMock + WebhookMock *WebhookMock + LogBuffer *bytes.Buffer } // BuildMocks builds a mock provider and mock plugins for testing @@ -74,6 +75,10 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { webhookMock.On("Configure", mock.Anything).Return(nil) webhookMock.On("Send", mock.Anything, mock.Anything).Return(nil) + postDeploymentMock := &PostDeploymentTestMock{} + postDeploymentMock.On("Configure", mock.Anything).Return(nil) + postDeploymentMock.On("Execute", mock.Anything, mock.Anything).Return(nil) + provMock := &ProviderMock{} provMock.On("CreateReleaser", mock.Anything).Return(relMock, nil) @@ -81,6 +86,7 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { provMock.On("CreateMonitor", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(monMock, nil) provMock.On("CreateStrategy", mock.Anything).Return(stratMock, nil) provMock.On("CreateWebhook", mock.Anything).Return(webhookMock, nil) + provMock.On("CreatePostDeploymentTest", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(postDeploymentMock, nil) logBuffer := bytes.NewBufferString("") @@ -97,7 +103,7 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { provMock.On("GetStateMachine", mock.Anything).Return(stateMock, nil) provMock.On("DeleteStateMachine", mock.Anything).Return(nil) - return provMock, &Mocks{relMock, runMock, monMock, stratMock, metricsMock, storeMock, stateMock, webhookMock, logBuffer} + return provMock, &Mocks{relMock, runMock, monMock, stratMock, postDeploymentMock, metricsMock, storeMock, stateMock, webhookMock, logBuffer} } // ProviderMock is a mock implementation of the provider that can be used for testing @@ -135,6 +141,12 @@ func (p *ProviderMock) CreateWebhook(pluginName string) (interfaces.Webhook, err return args.Get(0).(interfaces.Webhook), args.Error(1) } +func (p *ProviderMock) CreatePostDeploymentTest(pluginName, deploymentName, namespace, runtime string, mp interfaces.Monitor) (interfaces.PostDeploymentTest, error) { + args := p.Called(pluginName, deploymentName, namespace, runtime, mp) + + return args.Get(0).(interfaces.PostDeploymentTest), args.Error(1) +} + func (p *ProviderMock) GetLogger() hclog.Logger { args := p.Called() return args.Get(0).(hclog.Logger) diff --git a/plugins/mocks/monitor.go b/plugins/mocks/monitor.go index f67fa83..60bff00 100644 --- a/plugins/mocks/monitor.go +++ b/plugins/mocks/monitor.go @@ -5,6 +5,7 @@ import ( "encoding/json" "time" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/stretchr/testify/mock" ) @@ -18,8 +19,8 @@ func (r *MonitorMock) Configure(c json.RawMessage) error { return args.Error(0) } -func (r *MonitorMock) Check(ctx context.Context, interval time.Duration) error { +func (r *MonitorMock) Check(ctx context.Context, interval time.Duration) (interfaces.CheckResult, error) { args := r.Called(ctx, interval) - return args.Error(0) + return args.Get(0).(interfaces.CheckResult), args.Error(1) } diff --git a/plugins/prometheus/monitor.go b/plugins/prometheus/monitor.go index d56de5c..f094d20 100644 --- a/plugins/prometheus/monitor.go +++ b/plugins/prometheus/monitor.go @@ -10,6 +10,7 @@ import ( "time" "github.com/nicholasjackson/consul-release-controller/clients" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/prometheus/common/model" "github.com/hashicorp/go-hclog" @@ -72,7 +73,7 @@ func (s *Plugin) Configure(data json.RawMessage) error { // Check executes queries to the Prometheus server and returns an error if any of the queries // are not within the defined min and max thresholds -func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { +func (s *Plugin) Check(ctx context.Context, interval time.Duration) (interfaces.CheckResult, error) { querySQL := []string{} // first check that the given queries have valid presets @@ -85,7 +86,7 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { case "kubernetes-envoy-request-duration": querySQL = append(querySQL, KubernetesEnvoyRequestDuration) default: - return fmt.Errorf("preset query %s, does not exist", q.Preset) + return interfaces.CheckError, fmt.Errorf("preset query %s, does not exist", q.Preset) } } else { // use the custom query @@ -99,13 +100,13 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { // check the query is not empty if q == "" { - return fmt.Errorf("query %s is empty, please specify a valid Prometheus query", query.Name) + return interfaces.CheckError, fmt.Errorf("query %s is empty, please specify a valid Prometheus query", query.Name) } // add the interpolation for the queries tmpl, err := template.New("query").Parse(q) if err != nil { - return err + return interfaces.CheckError, fmt.Errorf("unable to process query template: %s", err) } context := struct { @@ -121,7 +122,7 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { out := bytes.NewBufferString("") err = tmpl.Execute(out, context) if err != nil { - return err + return interfaces.CheckError, fmt.Errorf("unable to process query template: %s", err) } s.log.Debug("querying prometheus", "address", s.config.Address, "name", query.Name, "query", out) @@ -130,7 +131,7 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { if err != nil { s.log.Error("unable to query prometheus", "error", err) - return err + return interfaces.CheckError, fmt.Errorf("unable to query prometheus: %s", err) } s.log.Debug("query value returned", "name", query.Name, "preset", query.Preset, "value", val, "value_type", reflect.TypeOf(val), "warnings", warn) @@ -139,7 +140,7 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { checkFail := false if len(v) == 0 { - return fmt.Errorf("check failed for query %s using preset %s, null value returned by query: %v", query.Name, query.Preset, val) + return interfaces.CheckNoMetrics, fmt.Errorf("check failed for query %s using preset %s, null value returned by query: %v", query.Name, query.Preset, val) } value := int(v[0].Value) @@ -155,13 +156,13 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) error { } if checkFail { - return fmt.Errorf("check failed for query %s using preset %s, got value %d", query.Name, query.Preset, value) + return interfaces.CheckFailed, fmt.Errorf("check failed for query %s using preset %s, got value %d", query.Name, query.Preset, value) } } else { s.log.Error("invalid value returned from query", "name", query.Name, "preset", query.Preset, "value", val) - return fmt.Errorf("check failed for query %s using preset %s, got value %v", query.Name, query.Preset, val) + return interfaces.CheckError, fmt.Errorf("check failed for query %s using preset %s, got value %v", query.Name, query.Preset, val) } } - return nil + return interfaces.CheckSuccess, nil } diff --git a/plugins/statemachine/statemachine.go b/plugins/statemachine/statemachine.go index e3eacbf..713775a 100644 --- a/plugins/statemachine/statemachine.go +++ b/plugins/statemachine/statemachine.go @@ -24,6 +24,7 @@ type StateMachine struct { runtimePlugin interfaces.Runtime monitorPlugin interfaces.Monitor strategyPlugin interfaces.Strategy + testPlugin interfaces.PostDeploymentTest webhookPlugins []interfaces.Webhook logger hclog.Logger metrics interfaces.Metrics @@ -89,10 +90,29 @@ func New(r *models.Release, pluginProvider interfaces.Provider) (*StateMachine, return nil, err } - wp.Configure(w.Config) + err = wp.Configure(w.Config) + if err != nil { + return nil, err + } + sm.webhookPlugins = append(sm.webhookPlugins, wp) } + // configure the post deployment tests + if r.PostDeploymentTest != nil { + testP, err := pluginProvider.CreatePostDeploymentTest(r.PostDeploymentTest.Name, rc.Deployment, rc.Namespace, r.Runtime.Name, monP) + if err != nil { + return nil, err + } + + err = testP.Configure(r.PostDeploymentTest.Config) + if err != nil { + return nil, err + } + + sm.testPlugin = testP + } + f := fsm.NewFSM( interfaces.StateStart, fsm.Events{ @@ -373,6 +393,30 @@ func (s *StateMachine) doMonitor() func(e *fsm.Event) { // clean up resources if we finish before timeout defer cancel() + // run the post deployment tests if we have any + if s.testPlugin != nil { + s.logger.Debug("Executing post deployment tests") + err := s.testPlugin.Execute(ctx, 30*time.Second) + + if err != nil { + // post deployment tests have failed rollback + s.logger.Error("Post deployment tests completed with error", "error", err) + + s.callWebhooks( + s.webhookPlugins, + "post deployment tests failed", + interfaces.StateMonitor, + interfaces.EventFail, + s.strategyPlugin.GetPrimaryTraffic(), + s.strategyPlugin.GetCandidateTraffic(), + err, + ) + + e.FSM.Event(interfaces.EventFail) + return + } + } + result, traffic, err := s.strategyPlugin.Execute(ctx) // strategy has failed with an error diff --git a/plugins/statemachine/statemachine_test.go b/plugins/statemachine/statemachine_test.go index d1de23f..4294be9 100644 --- a/plugins/statemachine/statemachine_test.go +++ b/plugins/statemachine/statemachine_test.go @@ -41,6 +41,9 @@ func setupTests(t *testing.T) (*models.Release, *StateMachine, *mocks.Mocks) { pp.AssertCalled(t, "CreateWebhook", r.Webhooks[0].Name) pm.WebhookMock.AssertCalled(t, "Configure", r.Webhooks[0].Config) + pp.AssertCalled(t, "CreatePostDeploymentTest", r.PostDeploymentTest.Name, pm.RuntimeMock.BaseConfig().Deployment, pm.RuntimeMock.BaseConfig().Namespace, r.Runtime.Name, pm.MonitorMock) + pm.PostDeploymentMock.AssertCalled(t, "Configure", r.PostDeploymentTest.Config) + t.Cleanup(func() { if t.Failed() { fmt.Println(pm.LogBuffer.String()) @@ -246,6 +249,21 @@ func TestEventDeployWithNoErrorSetsStatusIdle(t *testing.T) { pm.WebhookMock.AssertCalled(t, "Send", mock.Anything) } +func TestEventDeployedWithPostDeploymentTestErrorSetsStatusFail(t *testing.T) { + _, sm, pm := setupTests(t) + + testutils.ClearMockCall(&pm.PostDeploymentMock.Mock, "Execute") + pm.PostDeploymentMock.On("Execute", mock.Anything, mock.Anything).Return(fmt.Errorf("boom")) + + sm.SetState(interfaces.StateDeploy) + sm.Event(interfaces.EventDeployed) + + require.Eventually(t, func() bool { return historyContains(sm, interfaces.StateFail) }, 100*time.Millisecond, 1*time.Millisecond) + pm.PostDeploymentMock.AssertCalled(t, "Execute", mock.Anything, mock.Anything) + pm.StrategyMock.AssertNotCalled(t, "Execute", mock.Anything) + pm.WebhookMock.AssertCalled(t, "Send", mock.Anything) +} + func TestEventDeployedWithExecuteErrorSetsStatusFail(t *testing.T) { _, sm, pm := setupTests(t) diff --git a/test_data/valid_kubernetes_release.json b/test_data/valid_kubernetes_release.json index dae9025..157a80c 100644 --- a/test_data/valid_kubernetes_release.json +++ b/test_data/valid_kubernetes_release.json @@ -46,6 +46,7 @@ ] } }, + "webhooks": [ { "plugin_name": "discord", @@ -54,5 +55,16 @@ "token":"mytoken" } } - ] + ], + + "post_deployment_test": { + "plugin_name": "http", + "config": { + "path": "/", + "method": "GET", + "required_test_passes": 5, + "interval": "10s", + "timeout": "180s" + } + } } \ No newline at end of file From daea93aee7d09251bbdfea58b2f635552dcc3569 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Tue, 22 Mar 2022 07:33:29 +0000 Subject: [PATCH 04/12] Post deployment tests implemented --- .github/workflows/go.yml | 2 + clients/consul.go | 496 +++++++++++++++--- clients/consul_mock.go | 28 +- .../consul-release-controller/Chart.yaml | 4 +- ...release-controller.nicholasjackson.io.yaml | 31 ++ .../consul-release-controller/values.yaml | 4 +- docs/static/index.yaml | 12 +- .../config/api_release_with_check.yaml | 44 ++ functional_tests/features/kubernetes.feature | 83 +++ kubernetes/controller/api/v1/convert.go | 17 + kubernetes/controller/api/v1/release_types.go | 17 + .../api/v1/zz_generated.deepcopy.go | 32 ++ ...ontroller.nicholasjackson.io_releases.yaml | 31 ++ kubernetes/controller/go.mod | 4 + kubernetes/controller/go.sum | 17 +- plugins/canary/plugin.go | 2 +- plugins/consul/plugin.go | 76 ++- plugins/httptest/plugin.go | 23 +- plugins/interfaces/releaser.go | 10 + plugins/provider.go | 9 + plugins/registered_types.go | 13 +- plugins/statemachine/statemachine.go | 11 +- shipyard/kubernetes/envoy-proxy.hcl | 5 +- 23 files changed, 862 insertions(+), 109 deletions(-) create mode 100644 functional_tests/config/api_release_with_check.yaml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 91c26d0..430cb2c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -58,6 +58,8 @@ jobs: - "@k8s_canary_existing" - "@k8s_canary_none" - "@k8s_canary_rollback" + - "@k8s_canary_with_post_deployment_test" + - "@k8s_canary_with_post_deployment_test_fail" steps: - uses: actions/checkout@v2 diff --git a/clients/consul.go b/clients/consul.go index 9043c9b..7a084d4 100644 --- a/clients/consul.go +++ b/clients/consul.go @@ -9,21 +9,61 @@ import ( ) const ( - MetaCreatedTag = "created-by" - MetaCreatedValue = "consul-release-controller" + MetaCreatedTag = "created-by" + MetaCreatedValue = "consul-release-controller" + SubsetPrefix = "crc" + UpstreamRouterName = "consul-release-controller-upstreams" + ControllerServiceName = "consul-release-controller" ) type Consul interface { + // CreateServiceDefaults creates a HTTP protocol service defaults for the given service if it does + // not already exist. If the defaults already exist the protocol is update to HTTP. CreateServiceDefaults(name string) error + + // CreateServiceResolver creates or updates a service resolver for the given service + // if the ServiceResolver exists then CreateServiceResolver updates it to add the + // subsets for the canary and primary services CreateServiceResolver(name string) error - CreateServiceSplitter(name string, primaryTraffic, canaryTraffic int) error - CreateServiceRouter(name string, onlyDefault bool) error + // CreateServiceSplitter creates a service splitter for the given name and set the traffic + // for the primary and the candidate + CreateServiceSplitter(name string, primaryTraffic, candidateTraffic int) error + + // CreateServiceRoutere creates or updates an existing service router for the given service + // routes are added to add retries for connection failures + CreateServiceRouter(name string) error + + // CreateUpstreamRouter creates or updates a service router that allows the candidate services + // to be called by specifying the correct HOST header + CreateUpstreamRouter(name string) error + + // CreateServiceIntention creates or updates a service intention that allows the release controller + // permission to talk to the upstream service. This is only required when a PostDeploymentTest has + // been configured + CreateServiceIntention(name string) error + + // DeleteServiceDefaults deletes the service defaults only when they were created by the release controller DeleteServiceDefaults(name string) error + + // DeleteServiceResolver removes the service resolver, if the resolver was not created by the release controller + // this method restores the resolver to the original state DeleteServiceResolver(name string) error + + // DeleteServiceSplitter removes the service splitter resource created by the resolver DeleteServiceSplitter(name string) error + + // DeleteServiceResolver removes the service resolver, if the resolver was not created by the release controller + // this method restores the resolver to the original state DeleteServiceRouter(name string) error + // DeleteServiceIntention removes any service intention allowing the release controller communication with the given service + DeleteServiceIntention(name string) error + + // DeleteUpstreamRouter removes the upstream router that allows the controller to contact candidate services. + DeleteUpstreamRouter(name string) error + + // Check the Consul health of the service, returns an error when one or more endpoints are not healthy CheckHealth(name string, t interfaces.ServiceVariant) error } @@ -72,9 +112,43 @@ func (c *ConsulImpl) CreateServiceDefaults(name string) error { } } - // item exists do not create + // item exists if ce != nil { - return nil + // if the service type is gRPC do not change it and return an error + switch ce.(*api.ServiceConfigEntry).Protocol { + case "grpc": + // release controller should not try to change the protocol of an existing service, return an error + return fmt.Errorf( + `service %s has an existing protocol of gRPC, consul release controller can not set protocol to HTTP. + please remove the existing Service Defaults before configuring a release`, + name, + ) + case "http2": + // release controller should not try to change the protocol of an existing service, return an error + return fmt.Errorf( + `service %s has an existing protocol of HTTP2, consul release controller can not set protocol to HTTP. + please remove the existing Service Defaults before configuring a release`, + name, + ) + case "http": + // already HTTP nothing to do + return nil + case "tcp": + // update the existing defaults + wo := &api.WriteOptions{} + + if c.options.Namespace != "" { + wo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + wo.Partition = c.options.Partition + } + + ce.(*api.ServiceConfigEntry).Protocol = "http" + _, _, err := c.client.ConfigEntries().Set(ce, wo) + return err + } } defaults := &api.ServiceConfigEntry{} @@ -111,7 +185,11 @@ func (c *ConsulImpl) CreateServiceResolver(name string) error { defaults.Name = name defaults.Kind = api.ServiceResolver defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} - defaults.DefaultSubset = fmt.Sprintf("%s-canary", name) + defaults.Subsets = map[string]api.ServiceResolverSubset{} + + // this is set to the candidate as until the primary has been created any existing + // deployments will not have been renamed and will resolve to the candidate selector + defaults.DefaultSubset = fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name) if c.options.Namespace != "" { defaults.Namespace = c.options.Namespace @@ -121,18 +199,34 @@ func (c *ConsulImpl) CreateServiceResolver(name string) error { defaults.Partition = c.options.Partition } - primarySubset := &api.ServiceResolverSubset{} + // check that a resolver does not already exist if so modify rather than overwrite + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } + + // check that we created this + ce, _, err := c.client.ConfigEntries().Get(api.ServiceResolver, name, qo) + if err != nil && ce != nil { + // we have an existing entry, mutate rather than overwrite + defaults = ce.(*api.ServiceResolverConfigEntry) + } + + primarySubset := api.ServiceResolverSubset{} primarySubset.Filter = fmt.Sprintf(`Service.ID contains "%s-deployment-primary"`, name) primarySubset.OnlyPassing = true - canarySubset := &api.ServiceResolverSubset{} + canarySubset := api.ServiceResolverSubset{} canarySubset.Filter = fmt.Sprintf(`Service.ID not contains "%s-deployment-primary"`, name) canarySubset.OnlyPassing = true - defaults.Subsets = map[string]api.ServiceResolverSubset{ - fmt.Sprintf("%s-primary", name): *primarySubset, - fmt.Sprintf("%s-canary", name): *canarySubset, - } + defaults.Subsets[fmt.Sprintf("%s-%s-primary", SubsetPrefix, name)] = primarySubset + defaults.Subsets[fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name)] = canarySubset wo := &api.WriteOptions{} @@ -144,7 +238,7 @@ func (c *ConsulImpl) CreateServiceResolver(name string) error { wo.Partition = c.options.Partition } - _, _, err := c.client.ConfigEntries().Set(defaults, wo) + _, _, err = c.client.ConfigEntries().Set(defaults, wo) return err } @@ -164,11 +258,11 @@ func (c *ConsulImpl) CreateServiceSplitter(name string, primaryTraffic, canaryTr } primarySplit := api.ServiceSplit{} - primarySplit.ServiceSubset = fmt.Sprintf("%s-primary", name) + primarySplit.ServiceSubset = fmt.Sprintf("%s-%s-primary", SubsetPrefix, name) primarySplit.Weight = float32(primaryTraffic) canarySplit := api.ServiceSplit{} - canarySplit.ServiceSubset = fmt.Sprintf("%s-canary", name) + canarySplit.ServiceSubset = fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name) canarySplit.Weight = float32(canaryTraffic) defaults.Splits = []api.ServiceSplit{primarySplit, canarySplit} @@ -188,9 +282,8 @@ func (c *ConsulImpl) CreateServiceSplitter(name string, primaryTraffic, canaryTr return err } -// CreateServiceRouter creates a new service router, if the onlyDefault option is specified -// only the default route is created. -func (c *ConsulImpl) CreateServiceRouter(name string, onlyDefault bool) error { +// CreateServiceRouter creates a new service router +func (c *ConsulImpl) CreateServiceRouter(name string) error { defaults := &api.ServiceRouterConfigEntry{} defaults.Name = name defaults.Kind = api.ServiceRouter @@ -205,63 +298,127 @@ func (c *ConsulImpl) CreateServiceRouter(name string, onlyDefault bool) error { defaults.Partition = c.options.Partition } - if !onlyDefault { - primaryRoute := api.ServiceRoute{} - - primaryRouteHTTP := &api.ServiceRouteMatch{} - primaryRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{ - Header: []api.ServiceRouteHTTPMatchHeader{ - api.ServiceRouteHTTPMatchHeader{Name: "x-primary", Exact: "true"}, - }, - } + // check that a router does not already exist if so modify rather than overwrite + qo := &api.QueryOptions{} - primaryRoute.Destination = &api.ServiceRouteDestination{ - Service: name, - ServiceSubset: fmt.Sprintf("%s-primary", name), - NumRetries: 5, - RetryOnConnectFailure: true, - RetryOnStatusCodes: []uint32{503}, - } + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } - primaryRoute.Match = primaryRouteHTTP - defaults.Routes = append(defaults.Routes, primaryRoute) + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } - canaryRoute := api.ServiceRoute{} + // check that there is not an existing router, if so use it + ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, name, qo) + if err != nil && ce != nil { + // we have an existing entry, mutate rather than overwrite + defaults = ce.(*api.ServiceRouterConfigEntry) + } - canaryRouteHTTP := &api.ServiceRouteMatch{} - canaryRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{ - Header: []api.ServiceRouteHTTPMatchHeader{ - api.ServiceRouteHTTPMatchHeader{Name: "x-canary", Exact: "true"}, - }, - } + // create the routes + primaryRoute := api.ServiceRoute{} - canaryRoute.Destination = &api.ServiceRouteDestination{ - Service: name, - ServiceSubset: fmt.Sprintf("%s-canary", name), - NumRetries: 5, - RetryOnConnectFailure: true, - RetryOnStatusCodes: []uint32{503}, - } + primaryRouteHTTP := &api.ServiceRouteMatch{} + primaryRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{ + Header: []api.ServiceRouteHTTPMatchHeader{ + api.ServiceRouteHTTPMatchHeader{Name: "x-primary", Exact: "true"}, + }, + } - canaryRoute.Match = canaryRouteHTTP - defaults.Routes = append(defaults.Routes, canaryRoute) + primaryRoute.Destination = &api.ServiceRouteDestination{ + Service: name, + ServiceSubset: fmt.Sprintf("%s-%s-primary", SubsetPrefix, name), + NumRetries: 5, + RetryOnConnectFailure: true, + RetryOnStatusCodes: []uint32{503}, } - defaultRoute := api.ServiceRoute{} + primaryRoute.Match = primaryRouteHTTP + defaults.Routes = append(defaults.Routes, primaryRoute) + + canaryRoute := api.ServiceRoute{} - defaultRouteHTTP := &api.ServiceRouteMatch{} - defaultRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{} + canaryRouteHTTP := &api.ServiceRouteMatch{} + canaryRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{ + Header: []api.ServiceRouteHTTPMatchHeader{ + api.ServiceRouteHTTPMatchHeader{Name: "x-candidate", Exact: "true"}, + }, + } - defaultRoute.Destination = &api.ServiceRouteDestination{ + canaryRoute.Destination = &api.ServiceRouteDestination{ Service: name, + ServiceSubset: fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name), NumRetries: 5, RetryOnConnectFailure: true, RetryOnStatusCodes: []uint32{503}, } - defaultRoute.Match = defaultRouteHTTP + canaryRoute.Match = canaryRouteHTTP + defaults.Routes = append(defaults.Routes, canaryRoute) + + wo := &api.WriteOptions{} + + if c.options.Namespace != "" { + wo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + wo.Partition = c.options.Partition + } - defaults.Routes = append(defaults.Routes, defaultRoute) + _, _, err = c.client.ConfigEntries().Set(defaults, wo) + return err +} + +func (c *ConsulImpl) CreateUpstreamRouter(name string) error { + defaults := &api.ServiceRouterConfigEntry{} + defaults.Name = UpstreamRouterName + defaults.Kind = api.ServiceRouter + defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} + defaults.Routes = []api.ServiceRoute{} + namespace := "default" + + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + defaults.Namespace = c.options.Namespace + qo.Namespace = c.options.Namespace + namespace = c.options.Namespace + } + + if c.options.Partition != "" { + defaults.Partition = c.options.Partition + qo.Partition = c.options.Partition + } + + // check that there is not an existing router, if so use it + ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, UpstreamRouterName, qo) + if err != nil && ce != nil { + // we have an existing entry, mutate rather than overwrite + defaults = ce.(*api.ServiceRouterConfigEntry) + } + + // create the new route + candidateRoute := api.ServiceRoute{} + + candidateRouteHTTP := &api.ServiceRouteMatch{} + candidateRouteHTTP.HTTP = &api.ServiceRouteHTTPMatch{ + Header: []api.ServiceRouteHTTPMatchHeader{ + api.ServiceRouteHTTPMatchHeader{Name: "HOST", Exact: fmt.Sprintf("%s.%s", name, namespace)}, + }, + } + + candidateRoute.Destination = &api.ServiceRouteDestination{ + Service: name, + ServiceSubset: fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name), + NumRetries: 5, + RetryOnConnectFailure: true, + RetryOnStatusCodes: []uint32{503}, + } + + candidateRoute.Match = candidateRouteHTTP + defaults.Routes = append(defaults.Routes, candidateRoute) wo := &api.WriteOptions{} @@ -272,7 +429,56 @@ func (c *ConsulImpl) CreateServiceRouter(name string, onlyDefault bool) error { if c.options.Partition != "" { wo.Partition = c.options.Partition } - _, _, err := c.client.ConfigEntries().Set(defaults, wo) + + _, _, err = c.client.ConfigEntries().Set(defaults, wo) + + return err +} + +func (c *ConsulImpl) CreateServiceIntention(name string) error { + defaults := &api.ServiceIntentionsConfigEntry{} + defaults.Name = name + defaults.Kind = api.ServiceIntentions + defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} + defaults.Sources = []*api.SourceIntention{} + + qo := &api.QueryOptions{} + i := &api.SourceIntention{} + + if c.options.Namespace != "" { + defaults.Namespace = c.options.Namespace + i.Namespace = c.options.Namespace + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + defaults.Partition = c.options.Partition + i.Partition = c.options.Partition + qo.Partition = c.options.Partition + } + + // check that there is not an existing router, if so use it + ce, _, err := c.client.ConfigEntries().Get(api.ServiceIntentions, name, qo) + if err != nil && ce != nil { + // we have an existing entry, mutate rather than overwrite + defaults = ce.(*api.ServiceIntentionsConfigEntry) + } + + i.Name = ControllerServiceName + i.Action = "allow" + defaults.Sources = append(defaults.Sources, i) + + wo := &api.WriteOptions{} + if c.options.Namespace != "" { + wo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + wo.Partition = c.options.Partition + } + + _, _, err = c.client.ConfigEntries().Set(defaults, wo) + return err } @@ -317,6 +523,16 @@ func (c *ConsulImpl) DeleteServiceDefaults(name string) error { } func (c *ConsulImpl) DeleteServiceResolver(name string) error { + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } + wo := &api.WriteOptions{} if c.options.Namespace != "" { @@ -327,7 +543,26 @@ func (c *ConsulImpl) DeleteServiceResolver(name string) error { wo.Partition = c.options.Partition } - _, err := c.client.ConfigEntries().Delete("service-resolver", name, wo) + // check that we created this + ce, _, err := c.client.ConfigEntries().Get(api.ServiceResolver, name, qo) + if err != nil && ce != nil { + return nil + } + + if err != nil || ce == nil { + return err + } + + // if we did not create the resolver do an update removing the subsets + if ce.GetMeta()[MetaCreatedTag] != MetaCreatedValue { + delete(ce.(*api.ServiceResolverConfigEntry).Subsets, fmt.Sprintf("%s-%s-primary", SubsetPrefix, name)) + delete(ce.(*api.ServiceResolverConfigEntry).Subsets, fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name)) + + _, _, err := c.client.ConfigEntries().Set(ce, wo) + return err + } + + _, err = c.client.ConfigEntries().Delete(api.ServiceResolver, name, wo) return err } @@ -347,6 +582,117 @@ func (c *ConsulImpl) DeleteServiceSplitter(name string) error { } func (c *ConsulImpl) DeleteServiceRouter(name string) error { + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } + + wo := &api.WriteOptions{} + + if c.options.Namespace != "" { + wo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + wo.Partition = c.options.Partition + } + + // check that we created this + ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, name, qo) + if err != nil && ce != nil { + return nil + } + + if err != nil || ce == nil { + return err + } + + // if we did not create the router do an update removing the routes for the primary and candidate + if ce.GetMeta()[MetaCreatedTag] != MetaCreatedValue { + routes := []api.ServiceRoute{} + + for _, r := range ce.(*api.ServiceRouterConfigEntry).Routes { + if r.Destination.ServiceSubset != fmt.Sprintf("%s-%s-primary", SubsetPrefix, name) && + r.Destination.ServiceSubset != fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name) { + routes = append(routes, r) + } + } + + _, _, err := c.client.ConfigEntries().Set(ce, wo) + return err + } + + _, err = c.client.ConfigEntries().Delete(api.ServiceRouter, name, wo) + return err +} + +func (c *ConsulImpl) DeleteUpstreamRouter(name string) error { + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } + + wo := &api.WriteOptions{} + + if c.options.Namespace != "" { + wo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + wo.Partition = c.options.Partition + } + + ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, UpstreamRouterName, qo) + if err != nil && ce != nil { + return nil + } + + if err != nil || ce == nil { + return err + } + + // remove the route for this service + routes := []api.ServiceRoute{} + + for _, r := range ce.(*api.ServiceRouterConfigEntry).Routes { + if r.Destination.Service != name { + routes = append(routes, r) + } + } + + // no routes left, clean up config + if len(routes) == 0 { + _, err = c.client.ConfigEntries().Delete(api.ServiceRouter, name, wo) + return err + } + + // update the config + ce.(*api.ServiceRouterConfigEntry).Routes = routes + _, _, err = c.client.ConfigEntries().Set(ce, wo) + return err +} + +func (c *ConsulImpl) DeleteServiceIntention(name string) error { + qo := &api.QueryOptions{} + + if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace + } + + if c.options.Partition != "" { + qo.Partition = c.options.Partition + } + wo := &api.WriteOptions{} if c.options.Namespace != "" { @@ -357,7 +703,33 @@ func (c *ConsulImpl) DeleteServiceRouter(name string) error { wo.Partition = c.options.Partition } - _, err := c.client.ConfigEntries().Delete("service-router", name, wo) + // check that there is not an existing intention, if so use it + ce, _, err := c.client.ConfigEntries().Get(api.ServiceIntentions, name, qo) + if err != nil && ce != nil { + return nil + } + + if err != nil || ce == nil { + return err + } + + // if we did not create the intention do an update removing the allow for the release controller + if ce.GetMeta()[MetaCreatedTag] != MetaCreatedValue { + sources := []*api.SourceIntention{} + for _, s := range ce.(*api.ServiceIntentionsConfigEntry).Sources { + if s.Name != ControllerServiceName { + sources = append(sources, s) + } + } + + // update the intention + ce.(*api.ServiceIntentionsConfigEntry).Sources = sources + _, _, err = c.client.ConfigEntries().Set(ce, wo) + return err + } + + // delete the intention + _, err = c.client.ConfigEntries().Delete(api.ServiceIntentions, name, wo) return err } diff --git a/clients/consul_mock.go b/clients/consul_mock.go index 7a926d5..260264c 100644 --- a/clients/consul_mock.go +++ b/clients/consul_mock.go @@ -27,8 +27,20 @@ func (mc *ConsulMock) CreateServiceSplitter(name string, primaryTraffic, canaryT return args.Error(0) } -func (mc *ConsulMock) CreateServiceRouter(name string, onlyDefault bool) error { - args := mc.Called(name, onlyDefault) +func (mc *ConsulMock) CreateServiceRouter(name string) error { + args := mc.Called(name) + + return args.Error(0) +} + +func (mc *ConsulMock) CreateUpstreamRouter(name string) error { + args := mc.Called(name) + + return args.Error(0) +} + +func (mc *ConsulMock) CreateServiceIntention(name string) error { + args := mc.Called(name) return args.Error(0) } @@ -58,6 +70,18 @@ func (mc *ConsulMock) DeleteServiceRouter(name string) error { return args.Error(0) } +func (mc *ConsulMock) DeleteUpstreamRouter(name string) error { + args := mc.Called(name) + + return args.Error(0) +} + +func (mc *ConsulMock) DeleteServiceIntention(name string) error { + args := mc.Called(name) + + return args.Error(0) +} + func (mc *ConsulMock) CheckHealth(name string, t interfaces.ServiceVariant) error { args := mc.Called(name) diff --git a/deploy/kubernetes/charts/consul-release-controller/Chart.yaml b/deploy/kubernetes/charts/consul-release-controller/Chart.yaml index 59e9034..e150220 100644 --- a/deploy/kubernetes/charts/consul-release-controller/Chart.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.13 +version: 0.0.3-dev # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.0.13" +appVersion: "0.0.3-dev" diff --git a/deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml b/deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml index a5c8ed6..a58b768 100644 --- a/deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml @@ -65,6 +65,37 @@ spec: - config - pluginName type: object + postDeploymentTest: + description: PostDeploymentTest defines the configuration for the + post deployment tests plugin + properties: + config: + properties: + interval: + type: string + method: + type: string + path: + type: string + payload: + type: string + requiredTestPasses: + type: integer + timeout: + type: string + required: + - interval + - method + - path + - requiredTestPasses + - timeout + type: object + pluginName: + type: string + required: + - config + - pluginName + type: object releaser: description: Releaser defines the configuration for the releaser plugin properties: diff --git a/deploy/kubernetes/charts/consul-release-controller/values.yaml b/deploy/kubernetes/charts/consul-release-controller/values.yaml index 21bcc61..7f4f5a2 100644 --- a/deploy/kubernetes/charts/consul-release-controller/values.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/values.yaml @@ -13,7 +13,7 @@ controller: repository: nicholasjackson/consul-release-controller pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: "0.0.13" + tag: "44a059e" # Set the CONSUL_HTTP_ADDR to the address of the Consul cluster, this env is only used when # autoEncrypt is disabled as autoEncrypt adds a https variable. @@ -154,4 +154,4 @@ webhook: # for the webhook additionalDNSNames: [] - failurePolicy: Ignore \ No newline at end of file + failurePolicy: Fail \ No newline at end of file diff --git a/docs/static/index.yaml b/docs/static/index.yaml index b833aea..4cb476e 100644 --- a/docs/static/index.yaml +++ b/docs/static/index.yaml @@ -51,4 +51,14 @@ entries: urls: - https://github.com/nicholasjackson/consul-release-controller/releases/download/v0.0.9/consul-release-controller-0.0.9.tgz version: 0.0.9 -generated: "2022-03-11T10:37:28.315808002Z" + - apiVersion: v2 + appVersion: 0.0.3-dev + created: "2022-03-20T16:45:58.012949488Z" + description: A Helm chart for installing the Consul release controller + digest: e9dc529f0a0f05974eac00ebb5d3284fd654771cedb6b1311257f3b226d96531 + name: consul-release-controller + type: application + urls: + - https://github.com/nicholasjackson/consul-release-controller/releases/download/v44a059e/consul-release-controller-0.0.3-dev.tgz + version: 0.0.3-dev +generated: "2022-03-20T16:45:58.012016804Z" diff --git a/functional_tests/config/api_release_with_check.yaml b/functional_tests/config/api_release_with_check.yaml new file mode 100644 index 0000000..80304e0 --- /dev/null +++ b/functional_tests/config/api_release_with_check.yaml @@ -0,0 +1,44 @@ +--- +apiVersion: consul-release-controller.nicholasjackson.io/v1 +kind: Release +metadata: + name: api + namespace: default +spec: + releaser: + pluginName: "consul" + config: + consulService: "api" + runtime: + pluginName: "kubernetes" + config: + deployment: "api-deployment" + postDeploymentTest: + pluginName: "http" + config: + path: "/" + method: "GET" + requiredTestPasses: 5 + interval: "10s" + timeout: "120s" + strategy: + pluginName: "canary" + config: + initialDelay: "30s" + initialTraffic: 10 + interval: "30s" + trafficStep: 20 + maxTraffic: 100 + errorThreshold: 5 + monitor: + pluginName: "prometheus" + config: + address: "http://localhost:9090" + queries: + - name: "request-success" + preset: "envoy-request-success" + min: 99 + - name: "request-duration" + preset: "envoy-request-duration" + min: 20 + max: 200 \ No newline at end of file diff --git a/functional_tests/features/kubernetes.feature b/functional_tests/features/kubernetes.feature index 8258ed0..e4c452a 100644 --- a/functional_tests/features/kubernetes.feature +++ b/functional_tests/features/kubernetes.feature @@ -120,6 +120,89 @@ Feature: Kubernetes """ API V1 """ + When I delete the Kubernetes release "api" + Then a Kubernetes deployment called "api-deployment-primary" should not exist + And a Kubernetes deployment called "api-deployment" should exist + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V1 + """ + + @k8s_canary_with_post_deployment_test + Scenario: Canary Deployment no candidate + Given the controller is running on Kubernetes + When I delete the Kubernetes deployment "api-deployment" + Then a Kubernetes deployment called "api-deployment" should not exist + And a Kubernetes deployment called "api-deployment-primary" should not exist + When I create a new Kubernetes release "./config/api_release_with_check.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should not exist + And a Kubernetes deployment called "api-deployment" should not exist + When I create a new version of the Kubernetes deployment "./config/api.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should exist + Then a Kubernetes deployment called "api-deployment" should not exist + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V1 + """ + And a Consul "service-defaults" called "api" should be created + And a Consul "service-resolver" called "api" should be created + And a Consul "service-router" called "api" should be created + And a Consul "service-splitter" called "api" should be created + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + """ + "status":"state_idle" + """ + When I create a new version of the Kubernetes deployment "./config/api_canary.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should exist + And a Kubernetes deployment called "api-deployment" should exist + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + """ + "status":"state_idle" + """ + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V2 + """ + When I delete the Kubernetes release "api" + Then a Kubernetes deployment called "api-deployment-primary" should not exist + And a Kubernetes deployment called "api-deployment" should exist + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V2 + """ + + @k8s_canary_with_post_deployment_test_fail + Scenario: Canary Deployment with Rollback + Given the controller is running on Kubernetes + When I delete the Kubernetes deployment "api-deployment" + And I create a new version of the Kubernetes deployment "./config/api.yaml" + Then a Kubernetes deployment called "api-deployment" should exist + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V1 + """ + And I create a new Kubernetes release "./config/api_release_with_check.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should exist + And a Kubernetes deployment called "api-deployment" should not exist + And a Consul "service-defaults" called "api" should be created + And a Consul "service-resolver" called "api" should be created + And a Consul "service-router" called "api" should be created + And a Consul "service-splitter" called "api" should be created + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + """ + "status":"state_idle" + """ + When I create a new version of the Kubernetes deployment "./config/api_with_error.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should exist + And a Kubernetes deployment called "api-deployment" should exist + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + """ + "status":"state_idle" + """ + And eventually a call to the URL "http://localhost:18080" contains the text + """ + API V1 + """ When I delete the Kubernetes release "api" Then a Kubernetes deployment called "api-deployment-primary" should not exist And a Kubernetes deployment called "api-deployment" should exist diff --git a/kubernetes/controller/api/v1/convert.go b/kubernetes/controller/api/v1/convert.go index 7df62a7..1597db5 100644 --- a/kubernetes/controller/api/v1/convert.go +++ b/kubernetes/controller/api/v1/convert.go @@ -67,6 +67,14 @@ func (r *Release) ConvertToModel() *models.Release { mr.Webhooks = webhooks + if r.Spec.PostDeploymentTest.PluginName != "" { + tcs := testConfigSnake(r.Spec.PostDeploymentTest.Config) + mr.PostDeploymentTest = &models.PluginConfig{ + Name: r.Spec.PostDeploymentTest.PluginName, + Config: getJSONRaw(tcs), + } + } + return mr } @@ -115,3 +123,12 @@ type monitorQuerySnake struct { Max int `json:"max,omitempty"` Query string `json:"query,omitempty"` } + +type testConfigSnake struct { + Path string `json:"path"` + Method string `json:"method"` + Payload string `json:"payload,omitempty"` + RequiredTestPasses int `json:"required_test_passes"` + Interval string `json:"interval"` + Timeout string `json:"timeout"` +} diff --git a/kubernetes/controller/api/v1/release_types.go b/kubernetes/controller/api/v1/release_types.go index fe73d90..c54b42b 100644 --- a/kubernetes/controller/api/v1/release_types.go +++ b/kubernetes/controller/api/v1/release_types.go @@ -71,6 +71,9 @@ type ReleaseSpec struct { // Monitor defines the configuration for the strategy plugin Monitor Monitor `json:"monitor,omitempty"` + + // PostDeploymentTest defines the configuration for the post deployment tests plugin + PostDeploymentTest Test `json:"postDeploymentTest,omitempty"` } type Webhook struct { @@ -140,6 +143,20 @@ type Query struct { Query string `json:"query,omitempty"` } +type Test struct { + PluginName string `json:"pluginName"` + Config TestConfig `json:"config"` +} + +type TestConfig struct { + Path string `json:"path"` + Method string `json:"method"` + Payload string `json:"payload,omitempty"` + RequiredTestPasses int `json:"requiredTestPasses"` + Interval string `json:"interval"` + Timeout string `json:"timeout"` +} + func init() { SchemeBuilder.Register(&Release{}, &ReleaseList{}) } diff --git a/kubernetes/controller/api/v1/zz_generated.deepcopy.go b/kubernetes/controller/api/v1/zz_generated.deepcopy.go index 1c90868..7628dcc 100644 --- a/kubernetes/controller/api/v1/zz_generated.deepcopy.go +++ b/kubernetes/controller/api/v1/zz_generated.deepcopy.go @@ -149,6 +149,7 @@ func (in *ReleaseSpec) DeepCopyInto(out *ReleaseSpec) { out.Runtime = in.Runtime out.Strategy = in.Strategy in.Monitor.DeepCopyInto(&out.Monitor) + out.PostDeploymentTest = in.PostDeploymentTest } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseSpec. @@ -269,6 +270,37 @@ func (in *StrategyConfig) DeepCopy() *StrategyConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Test) DeepCopyInto(out *Test) { + *out = *in + out.Config = in.Config +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Test. +func (in *Test) DeepCopy() *Test { + if in == nil { + return nil + } + out := new(Test) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestConfig) DeepCopyInto(out *TestConfig) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestConfig. +func (in *TestConfig) DeepCopy() *TestConfig { + if in == nil { + return nil + } + out := new(TestConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Webhook) DeepCopyInto(out *Webhook) { *out = *in diff --git a/kubernetes/controller/config/crd/bases/consul-release-controller.nicholasjackson.io_releases.yaml b/kubernetes/controller/config/crd/bases/consul-release-controller.nicholasjackson.io_releases.yaml index bfd9e5d..b2196f5 100644 --- a/kubernetes/controller/config/crd/bases/consul-release-controller.nicholasjackson.io_releases.yaml +++ b/kubernetes/controller/config/crd/bases/consul-release-controller.nicholasjackson.io_releases.yaml @@ -66,6 +66,37 @@ spec: - config - pluginName type: object + postDeploymentTest: + description: PostDeploymentTest defines the configuration for the + post deployment tests plugin + properties: + config: + properties: + interval: + type: string + method: + type: string + path: + type: string + payload: + type: string + requiredTestPasses: + type: integer + timeout: + type: string + required: + - interval + - method + - path + - requiredTestPasses + - timeout + type: object + pluginName: + type: string + required: + - config + - pluginName + type: object releaser: description: Releaser defines the configuration for the releaser plugin properties: diff --git a/kubernetes/controller/go.mod b/kubernetes/controller/go.mod index 751ab6f..e267f02 100644 --- a/kubernetes/controller/go.mod +++ b/kubernetes/controller/go.mod @@ -31,6 +31,9 @@ require ( github.com/fatih/color v1.9.0 // indirect github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect + github.com/go-playground/locales v0.14.0 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-playground/validator/v10 v10.10.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect @@ -47,6 +50,7 @@ require ( github.com/imdario/mergo v0.3.12 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kr/text v0.2.0 // indirect + github.com/leodido/go-urn v1.2.1 // indirect github.com/mattn/go-colorable v0.1.7 // indirect github.com/mattn/go-isatty v0.0.12 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect diff --git a/kubernetes/controller/go.sum b/kubernetes/controller/go.sum index c3bdb22..be3c59c 100644 --- a/kubernetes/controller/go.sum +++ b/kubernetes/controller/go.sum @@ -172,6 +172,14 @@ github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL9 github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -349,12 +357,15 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -406,7 +417,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= @@ -579,6 +589,7 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -760,6 +771,7 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= @@ -964,8 +976,9 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= diff --git a/plugins/canary/plugin.go b/plugins/canary/plugin.go index b432cb3..9f22455 100644 --- a/plugins/canary/plugin.go +++ b/plugins/canary/plugin.go @@ -135,7 +135,7 @@ func (p *Plugin) Execute(ctx context.Context) (interfaces.StrategyStatus, int, e p.log.Debug("Checking metrics", "type", "canary") - err := p.monitoring.Check(queryCtx, d) + _, err := p.monitoring.Check(queryCtx, d) if err != nil { p.log.Debug("Check failed", "type", "canary", "error", err) failCount++ diff --git a/plugins/consul/plugin.go b/plugins/consul/plugin.go index 985228c..71c25b0 100644 --- a/plugins/consul/plugin.go +++ b/plugins/consul/plugin.go @@ -22,9 +22,7 @@ type Plugin struct { } type PluginConfig struct { - ConsulService string `json:"consul_service" validate:"required"` - Namespace string `json:"namespace"` - Partition string `json:"partition"` + interfaces.ReleaserBaseConfig } var ErrConsulService = fmt.Errorf("ConsulService is a required field, please specify the name of the Consul service for the release.") @@ -70,13 +68,17 @@ func (s *Plugin) Configure(data json.RawMessage) error { return nil } +func (s *Plugin) BaseConfig() interfaces.ReleaserBaseConfig { + return s.config.ReleaserBaseConfig +} + // initialize is an internal function triggered by the initialize event func (p *Plugin) Setup(ctx context.Context) error { p.log.Info("Initializing deployment", "service", p.config.ConsulService) // create the service defaults for the main service if they do not exist - // TODO if the service defaults exist and they are not set to HTTP or gRPC we should fail as - // we can not split traffic for TCP services + // If the service defaults exist and they are not set to HTTP we will fail as we + // should not overwite p.log.Debug("Create service defaults", "service", p.config.ConsulService) err := p.consulClient.CreateServiceDefaults(p.config.ConsulService) if err != nil { @@ -85,8 +87,23 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + // create the service defaults for the controller and the virtual service that allows + // access to candidate deployments + err = p.consulClient.CreateServiceDefaults(clients.ControllerServiceName) + if err != nil { + p.log.Error("Unable to create Consul ServiceDefaults", "name", clients.ControllerServiceName, "error", err) + + return err + } + + err = p.consulClient.CreateServiceDefaults(clients.UpstreamRouterName) + if err != nil { + p.log.Error("Unable to create Consul ServiceDefaults", "name", clients.UpstreamRouterName, "error", err) + + return err + } + // create the service resolver - // creating the service resolver will interupt the application traffic temporarily p.log.Debug("Create service resolver", "service", p.config.ConsulService) err = p.consulClient.CreateServiceResolver(p.config.ConsulService) if err != nil { @@ -97,13 +114,38 @@ func (p *Plugin) Setup(ctx context.Context) error { // create the service router p.log.Debug("Create service router", "service", p.config.ConsulService) - err = p.consulClient.CreateServiceRouter(p.config.ConsulService, false) + err = p.consulClient.CreateServiceRouter(p.config.ConsulService) + if err != nil { + p.log.Error("Unable to create Consul ServiceRouter", "name", p.config.ConsulService, "error", err) + + return err + } + + // create the service router to enable post deployment tests + p.log.Debug("Create upstream service router", "service", p.config.ConsulService) + err = p.consulClient.CreateUpstreamRouter(p.config.ConsulService) if err != nil { p.log.Error("Unable to create Consul ServiceRouter", "name", p.config.ConsulService, "error", err) return err } + // create the service intentions to allow an upstream from the controller to + p.log.Debug("Create service intentions for the upstreams", "service", "consul-release-controller") + err = p.consulClient.CreateServiceIntention("consul-release-controller") + if err != nil { + p.log.Error("Unable to create Consul ServiceIntention", "name", "consul-release-controller", "error", err) + + return err + } + + err = p.consulClient.CreateServiceIntention(p.config.ConsulService) + if err != nil { + p.log.Error("Unable to create Consul ServiceIntention", "name", p.config.ConsulService, "error", err) + + return err + } + return nil } @@ -127,20 +169,8 @@ func (p *Plugin) Scale(ctx context.Context, value int) error { func (p *Plugin) Destroy(ctx context.Context) error { p.log.Info("Remove Consul config", "name", p.config.ConsulService) - // update the router to remove the direct references to the canary and primary but - // keep the retry, this is important to ensure no 503 errors as the clusters update - p.log.Debug("Update router", "name", p.config.ConsulService) - err := p.consulClient.CreateServiceRouter(p.config.ConsulService, true) - if err != nil { - p.log.Error("Unable to delete Consul ServiceRouter", "name", p.config.ConsulService, "error", err) - - return err - } - - time.Sleep(syncDelay) - p.log.Debug("Delete splitter", "name", p.config.ConsulService) - err = p.consulClient.DeleteServiceSplitter(p.config.ConsulService) + err := p.consulClient.DeleteServiceSplitter(p.config.ConsulService) if err != nil { p.log.Error("Unable to delete Consul ServiceSplitter", "name", p.config.ConsulService, "error", err) @@ -149,7 +179,7 @@ func (p *Plugin) Destroy(ctx context.Context) error { time.Sleep(syncDelay) - p.log.Debug("Delete resolver", "name", p.config.ConsulService) + p.log.Debug("Cleanup resolver", "name", p.config.ConsulService) err = p.consulClient.DeleteServiceResolver(p.config.ConsulService) if err != nil { p.log.Error("Unable to delete Consul ServiceResolver", "name", p.config.ConsulService, "error", err) @@ -159,7 +189,7 @@ func (p *Plugin) Destroy(ctx context.Context) error { time.Sleep(syncDelay) - p.log.Debug("Delete router", "name", p.config.ConsulService) + p.log.Debug("Cleanup router", "name", p.config.ConsulService) err = p.consulClient.DeleteServiceRouter(p.config.ConsulService) if err != nil { p.log.Error("Unable to delete Consul ServiceRouter", "name", p.config.ConsulService, "error", err) @@ -170,7 +200,7 @@ func (p *Plugin) Destroy(ctx context.Context) error { time.Sleep(syncDelay) // delete will only happen if this plugin created the defaults - p.log.Debug("Delete defaults", "name", p.config.ConsulService) + p.log.Debug("Cleanup defaults", "name", p.config.ConsulService) err = p.consulClient.DeleteServiceDefaults(p.config.ConsulService) if err != nil { p.log.Error("Unable to delete Consul ServiceDefaults", "name", p.config.ConsulService, "error", err) diff --git a/plugins/httptest/plugin.go b/plugins/httptest/plugin.go index fa8bb0a..507cd15 100644 --- a/plugins/httptest/plugin.go +++ b/plugins/httptest/plugin.go @@ -55,6 +55,11 @@ var ErrInvalidTimeout = fmt.Errorf("Timeout is not a valid duration, please spec var ErrInvalidTestPasses = fmt.Errorf("RequiredTestPasses is not valid, please specify a value greater than 0") func New(name, namespace, runtime string, l hclog.Logger, m interfaces.Monitor) (*Plugin, error) { + // if there is no namespaces set, then use the convention for default to ensure the upstream routing works + if namespace == "" { + namespace = "default" + } + return &Plugin{log: l, monitoring: m, name: name, namespace: namespace, runtime: runtime}, nil } @@ -96,7 +101,7 @@ func (p *Plugin) Configure(data json.RawMessage) error { return nil } -func (p *Plugin) Execute(ctx context.Context) error { +func (p *Plugin) Execute(ctx context.Context, i time.Duration) error { timeoutDuration, err := time.ParseDuration(p.config.Timeout) if err != nil { return fmt.Errorf("unable to parse timeout as duration: %s", err) @@ -112,6 +117,11 @@ func (p *Plugin) Execute(ctx context.Context) error { for { // Make a call to the external service to an instance of Envoy proxy that exposes the different services using HOST header on the same port + url := fmt.Sprintf("%s%s", config.ConsulServiceUpstreams(), p.config.Path) + host := fmt.Sprintf("%s.%s", p.name, p.namespace) + + p.log.Debug("Executing request to upstream", "url", url, "upstream", host) + httpreq, err := http.NewRequest(p.config.Method, fmt.Sprintf("%s%s", config.ConsulServiceUpstreams(), p.config.Path), bytes.NewBufferString(p.config.Payload)) if err != nil { p.log.Error("Unable to create HTTP request", "error", err) @@ -120,15 +130,20 @@ func (p *Plugin) Execute(ctx context.Context) error { // The envoy proxy that is providing access to the candidate service has been configured to use HOST header to // differentiate between the services. The convention is service.namespace - httpreq.Host = fmt.Sprintf("%s.%s", p.name, p.namespace) + httpreq.Host = host - _, err = http.DefaultClient.Do(httpreq) + resp, err := http.DefaultClient.Do(httpreq) if err != nil { return err } - // We are ignoring the status code as we are using the Monitoring checks as a measure of success + p.log.Debug("Response from upstream", + "url", url, + "upstream", host, + "status_code", resp.StatusCode, + ) + // We are ignoring the status code as we are using the Monitoring checks as a measure of success res, _ := p.monitoring.Check(ctx, 30*time.Second) if res == interfaces.CheckSuccess { successCount++ diff --git a/plugins/interfaces/releaser.go b/plugins/interfaces/releaser.go index c3d0060..629568d 100644 --- a/plugins/interfaces/releaser.go +++ b/plugins/interfaces/releaser.go @@ -12,10 +12,20 @@ const ( Candidate ServiceVariant = 2 ) +type ReleaserBaseConfig struct { + ConsulService string `json:"consul_service" validate:"required"` + Namespace string `json:"namespace"` + Partition string `json:"partition"` +} + // Releaser defines methods for configuring and manipulating traffic in the service mesh type Releaser interface { Configurable + // BaseConfig returns the base Runtime config + // all Runtime plugins should embed RuntimeBaseConfig in their own config + BaseConfig() ReleaserBaseConfig + // Setup the necessary configuration for the service mesh // Returning an error from this function will fail the deployment Setup(ctx context.Context) error diff --git a/plugins/provider.go b/plugins/provider.go index 0a5d1bd..7cc9917 100644 --- a/plugins/provider.go +++ b/plugins/provider.go @@ -8,6 +8,7 @@ import ( "github.com/nicholasjackson/consul-release-controller/plugins/canary" "github.com/nicholasjackson/consul-release-controller/plugins/consul" "github.com/nicholasjackson/consul-release-controller/plugins/discord" + "github.com/nicholasjackson/consul-release-controller/plugins/httptest" "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/nicholasjackson/consul-release-controller/plugins/kubernetes" "github.com/nicholasjackson/consul-release-controller/plugins/prometheus" @@ -77,6 +78,14 @@ func (p *ProviderImpl) CreateWebhook(pluginName string) (interfaces.Webhook, err return nil, fmt.Errorf("invalid Webhook plugin type: %s", pluginName) } +func (p *ProviderImpl) CreatePostDeploymentTest(pluginName, name, namespace, runtime string, mp interfaces.Monitor) (interfaces.PostDeploymentTest, error) { + if pluginName == PluginDeploymentTestTypeHTTP { + return httptest.New(name, namespace, runtime, p.log.Named("monitor-plugin-test-http"), mp) + } + + return nil, fmt.Errorf("invalid Post deployment test plugin type: %s", pluginName) +} + func (p *ProviderImpl) GetLogger() hclog.Logger { return p.log } diff --git a/plugins/registered_types.go b/plugins/registered_types.go index cbb5cc4..bb771d7 100644 --- a/plugins/registered_types.go +++ b/plugins/registered_types.go @@ -1,10 +1,11 @@ package plugins const ( - PluginReleaserTypeConsul = "consul" - PluginRuntimeTypeKubernetes = "kubernetes" - PluginMonitorTypePromethus = "prometheus" - PluginStrategyTypeCanary = "canary" - PluginWebhookTypeDiscord = "discord" - PluginWebhookTypeSlack = "slack" + PluginReleaserTypeConsul = "consul" + PluginRuntimeTypeKubernetes = "kubernetes" + PluginMonitorTypePromethus = "prometheus" + PluginStrategyTypeCanary = "canary" + PluginWebhookTypeDiscord = "discord" + PluginWebhookTypeSlack = "slack" + PluginDeploymentTestTypeHTTP = "http" ) diff --git a/plugins/statemachine/statemachine.go b/plugins/statemachine/statemachine.go index 713775a..4fbd1da 100644 --- a/plugins/statemachine/statemachine.go +++ b/plugins/statemachine/statemachine.go @@ -52,6 +52,9 @@ func New(r *models.Release, pluginProvider interfaces.Provider) (*StateMachine, relP.Configure(r.Releaser.Config) sm.releaserPlugin = relP + // get the releaser config + releaserConfig := relP.BaseConfig() + // configure the runtime plugin runP, err := pluginProvider.CreateRuntime(r.Runtime.Name) if err != nil { @@ -62,9 +65,11 @@ func New(r *models.Release, pluginProvider interfaces.Provider) (*StateMachine, runP.Configure(r.Runtime.Config) sm.runtimePlugin = runP + // get the runtime config + runtimeConfig := runP.BaseConfig() + // create the monitor plugin - rc := runP.BaseConfig() - monP, err := pluginProvider.CreateMonitor(r.Monitor.Name, rc.Deployment, rc.Namespace, r.Runtime.Name) + monP, err := pluginProvider.CreateMonitor(r.Monitor.Name, runtimeConfig.Deployment, runtimeConfig.Namespace, r.Runtime.Name) if err != nil { return nil, err } @@ -100,7 +105,7 @@ func New(r *models.Release, pluginProvider interfaces.Provider) (*StateMachine, // configure the post deployment tests if r.PostDeploymentTest != nil { - testP, err := pluginProvider.CreatePostDeploymentTest(r.PostDeploymentTest.Name, rc.Deployment, rc.Namespace, r.Runtime.Name, monP) + testP, err := pluginProvider.CreatePostDeploymentTest(r.PostDeploymentTest.Name, releaserConfig.ConsulService, releaserConfig.Namespace, r.Runtime.Name, monP) if err != nil { return nil, err } diff --git a/shipyard/kubernetes/envoy-proxy.hcl b/shipyard/kubernetes/envoy-proxy.hcl index 4c0813c..caf6502 100644 --- a/shipyard/kubernetes/envoy-proxy.hcl +++ b/shipyard/kubernetes/envoy-proxy.hcl @@ -24,8 +24,11 @@ k8s_config "upstreams-proxy" { cluster = "k8s_cluster.dc1" paths = [ "./fake-controller.yaml", - "./example-config.yaml", ] wait_until_ready = true +} + +output "UPSTREAMS" { + value = "http://localhost:28080" } \ No newline at end of file From 45ce180840d679fefcbcf0e03100c441d8514745 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sat, 2 Apr 2022 09:41:09 +0100 Subject: [PATCH 05/12] Fix consul config entries for post deployment tests --- clients/consul.go | 245 +- functional_tests/config/api.yaml | 24 +- functional_tests/config/api_canary.yaml | 25 +- functional_tests/config/api_with_error.yaml | 24 +- functional_tests/features/kubernetes.feature | 10 +- functional_tests/main.go | 9 +- functional_tests/tests.log | 5397 ++++++++ kubernetes/controller/validatingwebhook.go | 22 +- .../controller/validatingwebhook_test.go | 130 + package-lock.json | 3 + plugins/consul/plugin.go | 50 +- plugins/kubernetes/plugin.go | 3 +- plugins/statemachine/statemachine.go | 2 +- ui/.gitignore | 23 + ui/README.md | 70 + ui/package-lock.json | 10545 ++++++++++++++++ ui/package.json | 43 + ui/public/favicon.ico | Bin 0 -> 3870 bytes ui/public/index.html | 12 + ui/public/logo192.png | Bin 0 -> 5347 bytes ui/public/logo512.png | Bin 0 -> 9664 bytes ui/public/manifest.json | 25 + ui/public/robots.txt | 3 + ui/src/App.css | 3 + ui/src/App.js | 25 + ui/src/App.test.js | 8 + ui/src/index.css | 13 + ui/src/index.js | 19 + ui/src/logo.svg | 1 + ui/src/reportWebVitals.js | 13 + ui/src/setupTests.js | 5 + ui/yarn.lock | 9315 ++++++++++++++ 32 files changed, 25889 insertions(+), 178 deletions(-) create mode 100755 functional_tests/tests.log create mode 100644 kubernetes/controller/validatingwebhook_test.go create mode 100644 package-lock.json create mode 100644 ui/.gitignore create mode 100644 ui/README.md create mode 100644 ui/package-lock.json create mode 100644 ui/package.json create mode 100644 ui/public/favicon.ico create mode 100644 ui/public/index.html create mode 100644 ui/public/logo192.png create mode 100644 ui/public/logo512.png create mode 100644 ui/public/manifest.json create mode 100644 ui/public/robots.txt create mode 100644 ui/src/App.css create mode 100644 ui/src/App.js create mode 100644 ui/src/App.test.js create mode 100644 ui/src/index.css create mode 100644 ui/src/index.js create mode 100644 ui/src/logo.svg create mode 100644 ui/src/reportWebVitals.js create mode 100644 ui/src/setupTests.js create mode 100644 ui/yarn.lock diff --git a/clients/consul.go b/clients/consul.go index 7a084d4..8d668ec 100644 --- a/clients/consul.go +++ b/clients/consul.go @@ -9,7 +9,7 @@ import ( ) const ( - MetaCreatedTag = "created-by" + MetaCreatedTag = "external-source" MetaCreatedValue = "consul-release-controller" SubsetPrefix = "crc" UpstreamRouterName = "consul-release-controller-upstreams" @@ -94,13 +94,19 @@ type ConsulImpl struct { // CreateServiceDefaults if does not exist func (c *ConsulImpl) CreateServiceDefaults(name string) error { qo := &api.QueryOptions{} + wo := &api.WriteOptions{} + defaults := &api.ServiceConfigEntry{} if c.options.Namespace != "" { qo.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace + defaults.Namespace = c.options.Namespace } if c.options.Partition != "" { qo.Partition = c.options.Partition + wo.Partition = c.options.Partition + defaults.Partition = c.options.Partition } // first check to see if the config already exists, @@ -135,46 +141,17 @@ func (c *ConsulImpl) CreateServiceDefaults(name string) error { return nil case "tcp": // update the existing defaults - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - ce.(*api.ServiceConfigEntry).Protocol = "http" _, _, err := c.client.ConfigEntries().Set(ce, wo) return err } } - defaults := &api.ServiceConfigEntry{} defaults.Name = name defaults.Kind = api.ServiceDefaults defaults.Protocol = "http" defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} - if c.options.Namespace != "" { - defaults.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - defaults.Partition = c.options.Partition - } - - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, _, err = c.client.ConfigEntries().Set(defaults, wo) return err @@ -182,6 +159,9 @@ func (c *ConsulImpl) CreateServiceDefaults(name string) error { func (c *ConsulImpl) CreateServiceResolver(name string) error { defaults := &api.ServiceResolverConfigEntry{} + qo := &api.QueryOptions{} + wo := &api.WriteOptions{} + defaults.Name = name defaults.Kind = api.ServiceResolver defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} @@ -191,28 +171,28 @@ func (c *ConsulImpl) CreateServiceResolver(name string) error { // deployments will not have been renamed and will resolve to the candidate selector defaults.DefaultSubset = fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name) - if c.options.Namespace != "" { - defaults.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - defaults.Partition = c.options.Partition - } - - // check that a resolver does not already exist if so modify rather than overwrite - qo := &api.QueryOptions{} - if c.options.Namespace != "" { qo.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace + defaults.Namespace = c.options.Namespace } if c.options.Partition != "" { qo.Partition = c.options.Partition + wo.Partition = c.options.Partition + defaults.Partition = c.options.Partition } // check that we created this ce, _, err := c.client.ConfigEntries().Get(api.ServiceResolver, name, qo) - if err != nil && ce != nil { + if err != nil { + // is the item not found if so the error will contain a 404 + if !strings.Contains(err.Error(), "404") { + return err + } + } + + if ce != nil { // we have an existing entry, mutate rather than overwrite defaults = ce.(*api.ServiceResolverConfigEntry) } @@ -228,33 +208,27 @@ func (c *ConsulImpl) CreateServiceResolver(name string) error { defaults.Subsets[fmt.Sprintf("%s-%s-primary", SubsetPrefix, name)] = primarySubset defaults.Subsets[fmt.Sprintf("%s-%s-candidate", SubsetPrefix, name)] = canarySubset - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, _, err = c.client.ConfigEntries().Set(defaults, wo) return err } func (c *ConsulImpl) CreateServiceSplitter(name string, primaryTraffic, canaryTraffic int) error { + wo := &api.WriteOptions{} defaults := &api.ServiceSplitterConfigEntry{} + defaults.Kind = api.ServiceSplitter defaults.Name = name defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} if c.options.Namespace != "" { defaults.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace } if c.options.Partition != "" { defaults.Partition = c.options.Partition + wo.Partition = c.options.Partition } primarySplit := api.ServiceSplit{} @@ -267,16 +241,6 @@ func (c *ConsulImpl) CreateServiceSplitter(name string, primaryTraffic, canaryTr defaults.Splits = []api.ServiceSplit{primarySplit, canarySplit} - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, _, err := c.client.ConfigEntries().Set(defaults, wo) return err @@ -284,7 +248,10 @@ func (c *ConsulImpl) CreateServiceSplitter(name string, primaryTraffic, canaryTr // CreateServiceRouter creates a new service router func (c *ConsulImpl) CreateServiceRouter(name string) error { + qo := &api.QueryOptions{} + wo := &api.WriteOptions{} defaults := &api.ServiceRouterConfigEntry{} + defaults.Name = name defaults.Kind = api.ServiceRouter defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} @@ -292,26 +259,26 @@ func (c *ConsulImpl) CreateServiceRouter(name string) error { if c.options.Namespace != "" { defaults.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - defaults.Partition = c.options.Partition - } - - // check that a router does not already exist if so modify rather than overwrite - qo := &api.QueryOptions{} - - if c.options.Namespace != "" { qo.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace } if c.options.Partition != "" { + defaults.Partition = c.options.Partition qo.Partition = c.options.Partition + wo.Partition = c.options.Partition } // check that there is not an existing router, if so use it ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, name, qo) - if err != nil && ce != nil { + if err != nil { + // is the item not found if so the error will contain a 404 + if !strings.Contains(err.Error(), "404") { + return err + } + } + + if ce != nil { // we have an existing entry, mutate rather than overwrite defaults = ce.(*api.ServiceRouterConfigEntry) } @@ -357,16 +324,6 @@ func (c *ConsulImpl) CreateServiceRouter(name string) error { canaryRoute.Match = canaryRouteHTTP defaults.Routes = append(defaults.Routes, canaryRoute) - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, _, err = c.client.ConfigEntries().Set(defaults, wo) return err } @@ -394,7 +351,14 @@ func (c *ConsulImpl) CreateUpstreamRouter(name string) error { // check that there is not an existing router, if so use it ce, _, err := c.client.ConfigEntries().Get(api.ServiceRouter, UpstreamRouterName, qo) - if err != nil && ce != nil { + if err != nil { + // is the item not found if so the error will contain a 404 + if !strings.Contains(err.Error(), "404") { + return err + } + } + + if ce != nil { // we have an existing entry, mutate rather than overwrite defaults = ce.(*api.ServiceRouterConfigEntry) } @@ -442,41 +406,53 @@ func (c *ConsulImpl) CreateServiceIntention(name string) error { defaults.Meta = map[string]string{MetaCreatedTag: MetaCreatedValue} defaults.Sources = []*api.SourceIntention{} - qo := &api.QueryOptions{} + // create the intention allowing access for the controller i := &api.SourceIntention{} + i.Name = ControllerServiceName + i.Action = "allow" + + qo := &api.QueryOptions{} + wo := &api.WriteOptions{} if c.options.Namespace != "" { defaults.Namespace = c.options.Namespace - i.Namespace = c.options.Namespace qo.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace + + // TODO + // this assumes that the consul release controller is running in the same + // namespace as the destination service, this needs fixed + i.Namespace = c.options.Namespace } if c.options.Partition != "" { defaults.Partition = c.options.Partition - i.Partition = c.options.Partition qo.Partition = c.options.Partition + wo.Partition = c.options.Partition + + // TODO + // this assumes that the consul release controller is running in the same + // partition as the destination service, this needs fixed + i.Partition = c.options.Partition } - // check that there is not an existing router, if so use it + // check that there is not an existing intention, if so use it ce, _, err := c.client.ConfigEntries().Get(api.ServiceIntentions, name, qo) - if err != nil && ce != nil { + if err != nil { + // is the item not found if so the error will contain a 404 + if !strings.Contains(err.Error(), "404") { + return err + } + } + + if ce != nil { // we have an existing entry, mutate rather than overwrite defaults = ce.(*api.ServiceIntentionsConfigEntry) } - i.Name = ControllerServiceName - i.Action = "allow" + // update the list of intentions adding the controller intention defaults.Sources = append(defaults.Sources, i) - wo := &api.WriteOptions{} - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, _, err = c.client.ConfigEntries().Set(defaults, wo) return err @@ -484,13 +460,16 @@ func (c *ConsulImpl) CreateServiceIntention(name string) error { func (c *ConsulImpl) DeleteServiceDefaults(name string) error { qo := &api.QueryOptions{} + wo := &api.WriteOptions{} if c.options.Namespace != "" { qo.Namespace = c.options.Namespace + wo.Namespace = c.options.Namespace } if c.options.Partition != "" { qo.Partition = c.options.Partition + wo.Partition = c.options.Partition } // check that we created this @@ -508,47 +487,32 @@ func (c *ConsulImpl) DeleteServiceDefaults(name string) error { return nil } - wo := &api.WriteOptions{} - - if c.options.Namespace != "" { - wo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - wo.Partition = c.options.Partition - } - _, err = c.client.ConfigEntries().Delete("service-defaults", name, wo) return err } func (c *ConsulImpl) DeleteServiceResolver(name string) error { qo := &api.QueryOptions{} - - if c.options.Namespace != "" { - qo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - qo.Partition = c.options.Partition - } - wo := &api.WriteOptions{} if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace wo.Namespace = c.options.Namespace } if c.options.Partition != "" { + qo.Partition = c.options.Partition wo.Partition = c.options.Partition } // check that we created this ce, _, err := c.client.ConfigEntries().Get(api.ServiceResolver, name, qo) + // no config entry found if err != nil && ce != nil { return nil } + // internal error if err != nil || ce == nil { return err } @@ -583,22 +547,15 @@ func (c *ConsulImpl) DeleteServiceSplitter(name string) error { func (c *ConsulImpl) DeleteServiceRouter(name string) error { qo := &api.QueryOptions{} - - if c.options.Namespace != "" { - qo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - qo.Partition = c.options.Partition - } - wo := &api.WriteOptions{} if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace wo.Namespace = c.options.Namespace } if c.options.Partition != "" { + qo.Partition = c.options.Partition wo.Partition = c.options.Partition } @@ -633,22 +590,15 @@ func (c *ConsulImpl) DeleteServiceRouter(name string) error { func (c *ConsulImpl) DeleteUpstreamRouter(name string) error { qo := &api.QueryOptions{} - - if c.options.Namespace != "" { - qo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - qo.Partition = c.options.Partition - } - wo := &api.WriteOptions{} if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace wo.Namespace = c.options.Namespace } if c.options.Partition != "" { + qo.Partition = c.options.Partition wo.Partition = c.options.Partition } @@ -661,10 +611,12 @@ func (c *ConsulImpl) DeleteUpstreamRouter(name string) error { return err } + sre := ce.(*api.ServiceRouterConfigEntry) + // remove the route for this service routes := []api.ServiceRoute{} - for _, r := range ce.(*api.ServiceRouterConfigEntry).Routes { + for _, r := range sre.Routes { if r.Destination.Service != name { routes = append(routes, r) } @@ -672,34 +624,27 @@ func (c *ConsulImpl) DeleteUpstreamRouter(name string) error { // no routes left, clean up config if len(routes) == 0 { - _, err = c.client.ConfigEntries().Delete(api.ServiceRouter, name, wo) + _, err = c.client.ConfigEntries().Delete(api.ServiceRouter, UpstreamRouterName, wo) return err } // update the config - ce.(*api.ServiceRouterConfigEntry).Routes = routes - _, _, err = c.client.ConfigEntries().Set(ce, wo) + sre.Routes = routes + _, _, err = c.client.ConfigEntries().Set(sre, wo) return err } func (c *ConsulImpl) DeleteServiceIntention(name string) error { qo := &api.QueryOptions{} - - if c.options.Namespace != "" { - qo.Namespace = c.options.Namespace - } - - if c.options.Partition != "" { - qo.Partition = c.options.Partition - } - wo := &api.WriteOptions{} if c.options.Namespace != "" { + qo.Namespace = c.options.Namespace wo.Namespace = c.options.Namespace } if c.options.Partition != "" { + qo.Partition = c.options.Partition wo.Partition = c.options.Partition } diff --git a/functional_tests/config/api.yaml b/functional_tests/config/api.yaml index c8988de..22692a7 100644 --- a/functional_tests/config/api.yaml +++ b/functional_tests/config/api.yaml @@ -51,4 +51,26 @@ spec: path: /health port: 9090 periodSeconds: 5 - initialDelaySeconds: 5 \ No newline at end of file + initialDelaySeconds: 5 + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceDefaults +metadata: + name: api +spec: + protocol: http + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceIntentions +metadata: + name: api +spec: + destination: + name: api + sources: + - name: web + action: allow + - name: consul-release-controller + action: allow \ No newline at end of file diff --git a/functional_tests/config/api_canary.yaml b/functional_tests/config/api_canary.yaml index 1932e86..1ad9a07 100644 --- a/functional_tests/config/api_canary.yaml +++ b/functional_tests/config/api_canary.yaml @@ -51,4 +51,27 @@ spec: path: /health port: 9090 periodSeconds: 5 - initialDelaySeconds: 5 \ No newline at end of file + initialDelaySeconds: 5 + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceDefaults +metadata: + name: api +spec: + protocol: http + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceIntentions +metadata: + name: api +spec: + destination: + name: api + sources: + - name: web + action: allow + - name: consul-release-controller + action: allow + diff --git a/functional_tests/config/api_with_error.yaml b/functional_tests/config/api_with_error.yaml index 9537276..1328ec5 100644 --- a/functional_tests/config/api_with_error.yaml +++ b/functional_tests/config/api_with_error.yaml @@ -53,4 +53,26 @@ spec: path: /health port: 9090 periodSeconds: 5 - initialDelaySeconds: 5 \ No newline at end of file + initialDelaySeconds: 5 + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceDefaults +metadata: + name: api +spec: + protocol: http + +--- +apiVersion: consul.hashicorp.com/v1alpha1 +kind: ServiceIntentions +metadata: + name: api +spec: + destination: + name: api + sources: + - name: web + action: allow + - name: consul-release-controller + action: allow \ No newline at end of file diff --git a/functional_tests/features/kubernetes.feature b/functional_tests/features/kubernetes.feature index e4c452a..9207ffc 100644 --- a/functional_tests/features/kubernetes.feature +++ b/functional_tests/features/kubernetes.feature @@ -4,7 +4,7 @@ Feature: Kubernetes I need to ensure the code funcionality is working as specified @k8s_canary_existing - Scenario: Canary Deployment existing candidate + Scenario: Canary Deployment existing candidate succeeds Given the controller is running on Kubernetes When I delete the Kubernetes deployment "api-deployment" Then a Kubernetes deployment called "api-deployment" should not exist @@ -46,7 +46,7 @@ Feature: Kubernetes """ @k8s_canary_none - Scenario: Canary Deployment no candidate + Scenario: Canary Deployment no candidate succeeds Given the controller is running on Kubernetes When I delete the Kubernetes deployment "api-deployment" Then a Kubernetes deployment called "api-deployment" should not exist @@ -89,7 +89,7 @@ Feature: Kubernetes """ @k8s_canary_rollback - Scenario: Canary Deployment with Rollback + Scenario: Canary Deployment with candidate rollsback Given the controller is running on Kubernetes When I delete the Kubernetes deployment "api-deployment" And I create a new version of the Kubernetes deployment "./config/api.yaml" @@ -129,7 +129,7 @@ Feature: Kubernetes """ @k8s_canary_with_post_deployment_test - Scenario: Canary Deployment no candidate + Scenario: Canary Deployment with passing post deployment test succeeds Given the controller is running on Kubernetes When I delete the Kubernetes deployment "api-deployment" Then a Kubernetes deployment called "api-deployment" should not exist @@ -172,7 +172,7 @@ Feature: Kubernetes """ @k8s_canary_with_post_deployment_test_fail - Scenario: Canary Deployment with Rollback + Scenario: Canary Deployment with failing post deployment test rollsback Given the controller is running on Kubernetes When I delete the Kubernetes deployment "api-deployment" And I create a new version of the Kubernetes deployment "./config/api.yaml" diff --git a/functional_tests/main.go b/functional_tests/main.go index 5e83985..1dcbf00 100644 --- a/functional_tests/main.go +++ b/functional_tests/main.go @@ -10,6 +10,7 @@ import ( "net/http" "os" "os/exec" + "path" "strings" "time" @@ -109,7 +110,13 @@ func initializeScenario(ctx *godog.ScenarioContext) { } if showLog && !*alwaysLog { - fmt.Println(logStore.String()) + pwd, _ := os.Getwd() + logfile := path.Join(pwd, "tests.log") + // create log file + os.Remove(logfile) + os.WriteFile(logfile, logStore.Bytes(), os.ModePerm) + + fmt.Printf("Error log written to file %s", logfile) } // exit after the scenario when don't destroy is set diff --git a/functional_tests/tests.log b/functional_tests/tests.log new file mode 100755 index 0000000..2737a33 --- /dev/null +++ b/functional_tests/tests.log @@ -0,0 +1,5397 @@ +2022-04-02T08:19:31.239+0100 [ERROR] 2022-04-02T08:19:31.239+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs +2022-04-02T08:19:33.361+0100 [ERROR] 2022-04-02T08:19:33.361+0100 [DEBUG] Starting Ingress +2022-04-02T08:19:33.362+0100 [ERROR] Running configuration from: ./shipyard/kubernetes + +2022-04-02T08:19:33.362+0100 [DEBUG] Statefile does not exist +2022-04-02T08:19:36.393+0100 [ERROR] 2022-04-02T08:19:36.393+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes +2022-04-02T08:19:36.393+0100 [DEBUG] Statefile does not exist +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_USER +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR +2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul + +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_CAKEY +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR +2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=controller_values + source= + | controller: + | enabled: "#{{ .Vars.controller_enabled }}" + | container_config: + | image: + | repository: "#{{ .Vars.controller_repo }}" + | tag: "#{{ .Vars.controller_version }}" + | autoencrypt: + | enabled: #{{ .Vars.tls_enabled }} + | acls: + | enabled: #{{ .Vars.acls_enabled }} + | #{{- if eq .Vars.controller_enabled false }} + | webhook: + | service: controller-webhook + | namespace: shipyard + | #{{ end }} + +2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_CACERT +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TLS_CERT +2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml +2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_values + source= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: #{{ .Vars.datacenter }} + | + | acls: + | manageSystemACLs: #{{ .Vars.acl_enabled }} + | tls: + | enabled: #{{ .Vars.tls_enabled }} + | enableAutoEncrypt: #{{ .Vars.tls_enabled }} + | httpsOnly: false + | + | federation: + | enabled: #{{ .Vars.federation_enabled }} + | createFederationSecret: #{{ .Vars.create_federation_secret }} + | + | image: #{{ .Vars.consul_image }} + | + | imageK8S: #{{ .Vars.consul_k8s_image }} + | + | imageEnvoy: #{{ .Vars.consul_envoy_image }} + | + | metrics: + | enabled: #{{ .Vars.metrics_enabled }} + | enableAgentMetrics: #{{ .Vars.metrics_enabled }} + | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} + | + | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} + | + | transparentProxy: + | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: #{{ .Vars.ingress_gateway_enabled }} + | defaults: + | replicas: 1 + | service: + | ports: + | #{{ range .Vars.ingress_gateway_ports }} + | - port: #{{ . }} + | nodePort: null + | #{{ end }} + | + | + | meshGateway: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | replicas: 1 + | + | wanAddress: + | source: Static + | static: #{{ .Vars.mesh_gateway_address }} + | port: 30443 + | + | service: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | type: NodePort + | nodePort: 30443 +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TLS_KEY +2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_proxy_defaults + source= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=controller_values + destination= + | controller: + | enabled: "false" + | container_config: + | image: + | repository: "nicholasjackson/consul-release-controller" + | tag: "" + | autoencrypt: + | enabled: true + | acls: + | enabled: true + | webhook: + | service: controller-webhook + | namespace: shipyard + | + +2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=certs_script + source= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=certs_script + destination= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key + +2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_proxy_defaults + destination= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.monitoring.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } + +2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_values + destination= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: dc1 + | + | acls: + | manageSystemACLs: true + | tls: + | enabled: true + | enableAutoEncrypt: true + | httpsOnly: false + | + | federation: + | enabled: false + | createFederationSecret: false + | + | image: hashicorp/consul:1.11.3 + | + | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 + | + | imageEnvoy: envoyproxy/envoy:v1.20.1 + | + | metrics: + | enabled: true + | enableAgentMetrics: true + | enableGatewayMetrics: true + | + | logLevel: "info" + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: null + | + | transparentProxy: + | defaultEnabled: false + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: true + | defaults: + | replicas: 1 + | service: + | ports: + | + | - port: 18080 + | nodePort: null + | + | - port: 18443 + | nodePort: null + | + | + | + | meshGateway: + | enabled: false + | replicas: 1 + | + | wanAddress: + | source: Static + | static: dc1.k8s-cluster.shipyard.run + | port: 30443 + | + | service: + | enabled: false + | type: NodePort + | nodePort: 30443 + +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=UPSTREAMS +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Network: ref=dc1 +2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE +2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=KUBECONFIG +2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:19:39.621+0100 [ERROR] 2022-04-02T08:19:39.621+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 +2022-04-02T08:19:39.645+0100 [ERROR] 2022-04-02T08:19:39.645+0100 [INFO] Creating ImageCache: ref=docker-cache +2022-04-02T08:19:39.648+0100 [ERROR] 2022-04-02T08:19:39.648+0100 [DEBUG] Connecting cache to network: name=network.dc1 +2022-04-02T08:19:39.649+0100 [ERROR] 2022-04-02T08:19:39.649+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:19:39.668+0100 [ERROR] 2022-04-02T08:19:39.668+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:19:39.668+0100 [DEBUG] Creating Docker Container: ref=68585690-import +2022-04-02T08:19:42.346+0100 [ERROR] 2022-04-02T08:19:42.346+0100 [DEBUG] Forcefully remove: container=23d98bbe600018033d9fcf4d629a556bc8a786880feb4f1e3238952b36a59898 +2022-04-02T08:19:42.757+0100 [ERROR] 2022-04-02T08:19:42.757+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 +2022-04-02T08:19:42.757+0100 [DEBUG] Creating Docker Container: ref=docker-cache +2022-04-02T08:19:42.815+0100 [ERROR] 2022-04-02T08:19:42.814+0100 [DEBUG] Remove container from default networks: ref=docker-cache +2022-04-02T08:19:42.817+0100 [ERROR] 2022-04-02T08:19:42.817+0100 [DEBUG] Attaching container to network: ref=441440dce441a33d01b9b9e0263bcbb2cb9aec7740227a007dcd4dbceb001acf network=dc1 +2022-04-02T08:19:42.823+0100 [ERROR] 2022-04-02T08:19:42.823+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache +2022-04-02T08:19:43.379+0100 [ERROR] 2022-04-02T08:19:43.379+0100 [INFO] dc1: Creating Cluster: ref=dc1 +2022-04-02T08:19:43.402+0100 [ERROR] 2022-04-02T08:19:43.402+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 +2022-04-02T08:19:43.404+0100 [ERROR] 2022-04-02T08:19:43.403+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:19:43.404+0100 [ERROR] 2022-04-02T08:19:43.404+0100 [DEBUG] Creating Docker Container: ref=server.dc1 +2022-04-02T08:19:43.470+0100 [ERROR] 2022-04-02T08:19:43.470+0100 [DEBUG] Remove container from default networks: ref=server.dc1 +2022-04-02T08:19:43.473+0100 [ERROR] 2022-04-02T08:19:43.473+0100 [DEBUG] Attaching container to network: ref=3b13fb6fa8a9e03ca6efa9c47401857448a1eaf4dd000fc6c519e1b0192bd782 network=dc1 +2022-04-02T08:19:43.479+0100 [ERROR] 2022-04-02T08:19:43.479+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 +2022-04-02T08:19:46.103+0100 [ERROR] 2022-04-02T08:19:46.103+0100 [DEBUG] Copying file from: id=3b13fb6fa8a9e03ca6efa9c47401857448a1eaf4dd000fc6c519e1b0192bd782 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:19:46.143+0100 [ERROR] 2022-04-02T08:19:46.143+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:48.154+0100 [ERROR] 2022-04-02T08:19:48.154+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:50.157+0100 [ERROR] 2022-04-02T08:19:50.157+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:51.394+0100 [ERROR] 2022-04-02T08:19:51.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.001073] +2022-04-02T08:19:52.160+0100 [ERROR] 2022-04-02T08:19:52.160+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:54.165+0100 [ERROR] 2022-04-02T08:19:54.164+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:56.168+0100 [ERROR] 2022-04-02T08:19:56.168+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:19:58.172+0100 [ERROR] 2022-04-02T08:19:58.172+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:20:00.175+0100 [ERROR] 2022-04-02T08:20:00.175+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:20:02.179+0100 [ERROR] 2022-04-02T08:20:02.179+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-w5qs8 namespace=kube-system status=Pending +2022-04-02T08:20:04.184+0100 [ERROR] 2022-04-02T08:20:04.184+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-w5qs8 namespace=kube-system status=Pending +2022-04-02T08:20:06.187+0100 [ERROR] 2022-04-02T08:20:06.187+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:20:06.187+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:20:06.393+0100 [ERROR] 2022-04-02T08:20:06.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000103] +2022-04-02T08:20:08.192+0100 [ERROR] 2022-04-02T08:20:08.192+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:20:08.192+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run +2022-04-02T08:20:08.210+0100 [ERROR] 2022-04-02T08:20:08.209+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:20:08.209+0100 [DEBUG] Creating Docker Container: ref=09975013-import +2022-04-02T08:20:10.738+0100 [ERROR] 2022-04-02T08:20:10.738+0100 [DEBUG] Forcefully remove: container=7988416f996af55736911ad527c3a17e68dfbe3e02fc1d95651689e172d80f65 +2022-04-02T08:20:11.134+0100 [ERROR] 2022-04-02T08:20:11.134+0100 [DEBUG] dc1: Deploying connector +2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/2967719745/namespace.yaml +2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing secret config: file=/tmp/2967719745/secret.yaml +2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/2967719745/rbac.yaml +2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/2967719745/deployment.yaml +2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/namespace.yaml +2022-04-02T08:20:13.569+0100 [ERROR] 2022-04-02T08:20:13.569+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/secret.yaml +2022-04-02T08:20:13.576+0100 [ERROR] 2022-04-02T08:20:13.576+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/rbac.yaml +2022-04-02T08:20:13.585+0100 [ERROR] 2022-04-02T08:20:13.585+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/deployment.yaml +2022-04-02T08:20:13.603+0100 [ERROR] 2022-04-02T08:20:13.603+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=controller-webhook +2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=upstreams-proxy +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:31205 local_addr=localhost:19443 +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] +2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:31205 local_addr=consul-release-controller.default.svc:8080 +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-rpc +2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-lan-serf +2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8300 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8301 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:31205 local_addr=consul-ingress-gateway.consul.svc:18080 +2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=web +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:31205 local_addr=web.default.svc:9090 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8501 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:31205 local_addr=consul-ingress-gateway.consul.svc:18443 +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml +2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:20:15.629+0100 [ERROR] 2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=f2215575-a230-405b-b077-9272a0e271e3 +2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=6be15526-d8ae-478f-a485-4a604913c892 +2022-04-02T08:20:15.629+0100 [ERROR] 2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=11e05ab2-2576-4335-b924-229fe61c0af6 +2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=1ff3d65b-a305-4803-a05c-42d9bfc34537 +2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=bbea0417-1f3c-43ed-93f8-222423849480 +2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=2026a59d-b584-4883-9819-cb89d28defb6 +2022-04-02T08:20:15.636+0100 [ERROR] 2022-04-02T08:20:15.636+0100 [DEBUG] Successfully exposed service: id=e013a702-b5b7-4abe-a771-b73a1c958af4 +2022-04-02T08:20:15.637+0100 [ERROR] 2022-04-02T08:20:15.637+0100 [DEBUG] Successfully exposed service: id=2fd81567-fa1a-4702-93cb-b623ccb40b58 +2022-04-02T08:20:15.680+0100 [ERROR] 2022-04-02T08:20:15.680+0100 [INFO] Creating Helm chart: ref=consul +2022-04-02T08:20:15.680+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com +2022-04-02T08:20:15.770+0100 [ERROR] 2022-04-02T08:20:15.770+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:20:15.770+0100 [ERROR] 2022-04-02T08:20:15.770+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul +2022-04-02T08:20:15.863+0100 [ERROR] 2022-04-02T08:20:15.863+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz +2022-04-02T08:20:15.870+0100 [ERROR] 2022-04-02T08:20:15.870+0100 [DEBUG] Using Values: ref=consul + values= + | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | replicas:1 storage:128Mi] ui:map[enabled:true]] + +2022-04-02T08:20:15.870+0100 [DEBUG] Validate chart: ref=consul +2022-04-02T08:20:15.870+0100 [DEBUG] Run chart: ref=consul +2022-04-02T08:20:16.286+0100 [ERROR] 2022-04-02T08:20:16.285+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:20:18.265+0100 [ERROR] 2022-04-02T08:20:18.265+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" +2022-04-02T08:20:18.269+0100 [ERROR] 2022-04-02T08:20:18.268+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" +2022-04-02T08:20:18.291+0100 [ERROR] 2022-04-02T08:20:18.291+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager status=Pending +2022-04-02T08:20:18.323+0100 [ERROR] 2022-04-02T08:20:18.323+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:20:18.329+0100 [ERROR] 2022-04-02T08:20:18.329+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" +2022-04-02T08:20:18.332+0100 [ERROR] 2022-04-02T08:20:18.332+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:20:18.386+0100 [ERROR] 2022-04-02T08:20:18.386+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:20:18.391+0100 [ERROR] 2022-04-02T08:20:18.391+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" +2022-04-02T08:20:18.394+0100 [ERROR] 2022-04-02T08:20:18.393+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:20:18.452+0100 [ERROR] 2022-04-02T08:20:18.452+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:20:18.457+0100 [ERROR] 2022-04-02T08:20:18.457+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:20:18.460+0100 [ERROR] 2022-04-02T08:20:18.460+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" +2022-04-02T08:20:18.515+0100 [ERROR] 2022-04-02T08:20:18.515+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:20:18.523+0100 [ERROR] 2022-04-02T08:20:18.523+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" +2022-04-02T08:20:18.528+0100 [ERROR] 2022-04-02T08:20:18.528+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" +2022-04-02T08:20:18.528+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:18.541+0100 [ERROR] 2022-04-02T08:20:18.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:20:18.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:20.295+0100 [ERROR] 2022-04-02T08:20:20.295+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False +2022-04-02T08:20:20.602+0100 [ERROR] 2022-04-02T08:20:20.602+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:20:20.602+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:20.610+0100 [ERROR] 2022-04-02T08:20:20.609+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:20:20.611+0100 [ERROR] 2022-04-02T08:20:20.611+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:20:20.616+0100 [ERROR] 2022-04-02T08:20:20.616+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" +2022-04-02T08:20:21.018+0100 [ERROR] 2022-04-02T08:20:21.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:20:21.023+0100 [ERROR] 2022-04-02T08:20:21.022+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" +2022-04-02T08:20:21.025+0100 [ERROR] 2022-04-02T08:20:21.025+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" +2022-04-02T08:20:21.025+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:21.032+0100 [ERROR] 2022-04-02T08:20:21.032+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:20:21.032+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:21.394+0100 [ERROR] 2022-04-02T08:20:21.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000756] +2022-04-02T08:20:22.300+0100 [ERROR] 2022-04-02T08:20:22.300+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False +2022-04-02T08:20:24.306+0100 [ERROR] 2022-04-02T08:20:24.306+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False +2022-04-02T08:20:26.313+0100 [ERROR] 2022-04-02T08:20:26.313+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False +2022-04-02T08:20:28.319+0100 [ERROR] 2022-04-02T08:20:28.319+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False +2022-04-02T08:20:30.325+0100 [ERROR] 2022-04-02T08:20:30.325+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:20:36.393+0100 [ERROR] 2022-04-02T08:20:36.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.000410] +2022-04-02T08:20:41.666+0100 [ERROR] 2022-04-02T08:20:41.666+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:20:41.666+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:20:41.673+0100 [ERROR] 2022-04-02T08:20:41.673+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:20:41.675+0100 [ERROR] 2022-04-02T08:20:41.675+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" +2022-04-02T08:20:41.736+0100 [ERROR] 2022-04-02T08:20:41.736+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:20:43.741+0100 [ERROR] 2022-04-02T08:20:43.741+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-9d879 namespace=consul status=Pending +2022-04-02T08:20:45.747+0100 [ERROR] 2022-04-02T08:20:45.747+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-9d879 namespace=consul type=Ready value=False +2022-04-02T08:20:47.752+0100 [ERROR] 2022-04-02T08:20:47.752+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:20:47.752+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:20:49.758+0100 [ERROR] 2022-04-02T08:20:49.758+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:20:49.758+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:20:51.394+0100 [ERROR] 2022-04-02T08:20:51.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000667] +2022-04-02T08:20:51.762+0100 [ERROR] 2022-04-02T08:20:51.762+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:20:51.762+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:20:53.767+0100 [ERROR] 2022-04-02T08:20:53.767+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.767+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=monitoring_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] +2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=grafana_secret_template + source= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: #{{ .Vars.monitoring_namespace }} + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=monitoring_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=zipkin +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=tempo +2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=grafana +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh +2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=fetch_consul_resources + source= + | #!/bin/sh -e + | + | echo "Port #{{ .Vars.port }}" + | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" + | + | #{{ if eq .Vars.acl_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | #{{end}} + | + | #{{ if eq .Vars.tls_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | #{{end}} +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Creating Helm chart: ref=prometheus +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=prometheus +2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=fetch_consul_resources + destination= + | #!/bin/sh -e + | + | echo "Port 8501" + | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | + | + | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | + | + | + | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:31205 local_addr=tempo.monitoring.svc:9411 +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:31205 local_addr=grafana.monitoring.svc:80 +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=prometheus_operator_template + source= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" + +2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:31205 local_addr=tempo.default.svc:3100 +2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=prometheus_operator_template + destination= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=grafana_secret_template + destination= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: monitoring + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= + +2022-04-02T08:20:53.768+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] +2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:31205 local_addr=prometheus-operated.monitoring.svc:9090 +2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" +2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.769+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:20:53.786+0100 [ERROR] 2022-04-02T08:20:53.786+0100 [DEBUG] Successfully exposed service: id=5a3ec616-10c1-419d-b7f7-5a6820708927 +2022-04-02T08:20:53.788+0100 [ERROR] 2022-04-02T08:20:53.788+0100 [DEBUG] Successfully exposed service: id=20f268ab-2d34-45d2-affe-49cdf9ba3ad8 +2022-04-02T08:20:53.788+0100 [ERROR] 2022-04-02T08:20:53.788+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 +2022-04-02T08:20:53.788+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec +2022-04-02T08:20:53.793+0100 [ERROR] 2022-04-02T08:20:53.793+0100 [DEBUG] Successfully exposed service: id=f9e4c42a-4e65-43d1-b630-167806567788 +2022-04-02T08:20:53.794+0100 [ERROR] 2022-04-02T08:20:53.794+0100 [DEBUG] Successfully exposed service: id=8c0df1ad-3ad1-4e26-9975-f5b845de32d3 +2022-04-02T08:20:53.840+0100 [ERROR] 2022-04-02T08:20:53.840+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec +2022-04-02T08:20:53.844+0100 [ERROR] 2022-04-02T08:20:53.844+0100 [DEBUG] Attaching container to network: ref=418bcfd18b7907bb12aeab4af69a4f9b00cafb7f84325b00d4f554fa6119505f network=dc1 +2022-04-02T08:20:53.851+0100 [ERROR] 2022-04-02T08:20:53.851+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec +2022-04-02T08:20:54.331+0100 [ERROR] 2022-04-02T08:20:54.331+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:20:54.332+0100 [ERROR] 2022-04-02T08:20:54.332+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack +2022-04-02T08:20:54.388+0100 [ERROR] 2022-04-02T08:20:54.388+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] +2022-04-02T08:20:54.389+0100 [ERROR] 2022-04-02T08:20:54.389+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:20:54.708+0100 [ERROR] 2022-04-02T08:20:54.708+0100 [DEBUG] Port 8501 +Fetching resources from running cluster, acls_enabled: true, tls_enabled true +2022-04-02T08:20:55.084+0100 [ERROR] 2022-04-02T08:20:55.084+0100 [DEBUG] Forcefully remove: container=418bcfd18b7907bb12aeab4af69a4f9b00cafb7f84325b00d4f554fa6119505f +2022-04-02T08:20:55.137+0100 [ERROR] 2022-04-02T08:20:55.137+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz +2022-04-02T08:20:55.151+0100 [ERROR] 2022-04-02T08:20:55.151+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" +2022-04-02T08:20:55.151+0100 [DEBUG] Validate chart: ref=prometheus +2022-04-02T08:20:55.151+0100 [DEBUG] Run chart: ref=prometheus +2022-04-02T08:20:55.167+0100 [ERROR] 2022-04-02T08:20:55.167+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.215+0100 [ERROR] 2022-04-02T08:20:55.215+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.260+0100 [ERROR] 2022-04-02T08:20:55.259+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.275+0100 [ERROR] 2022-04-02T08:20:55.275+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.312+0100 [ERROR] 2022-04-02T08:20:55.312+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.403+0100 [ERROR] 2022-04-02T08:20:55.402+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.412+0100 [ERROR] 2022-04-02T08:20:55.412+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.445+0100 [ERROR] 2022-04-02T08:20:55.444+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:55.504+0100 [ERROR] 2022-04-02T08:20:55.504+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" +2022-04-02T08:20:55.504+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" +2022-04-02T08:20:58.889+0100 [ERROR] 2022-04-02T08:20:58.889+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:59.178+0100 [ERROR] 2022-04-02T08:20:59.178+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:20:59.181+0100 [ERROR] 2022-04-02T08:20:59.181+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:20:59.461+0100 [ERROR] 2022-04-02T08:20:59.461+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:59.467+0100 [ERROR] 2022-04-02T08:20:59.466+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:20:59.469+0100 [ERROR] 2022-04-02T08:20:59.469+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:20:59.746+0100 [ERROR] 2022-04-02T08:20:59.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:20:59.751+0100 [ERROR] 2022-04-02T08:20:59.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:20:59.753+0100 [ERROR] 2022-04-02T08:20:59.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:00.056+0100 [ERROR] 2022-04-02T08:21:00.056+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:00.061+0100 [ERROR] 2022-04-02T08:21:00.061+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:21:00.064+0100 [ERROR] 2022-04-02T08:21:00.064+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:00.330+0100 [ERROR] 2022-04-02T08:21:00.330+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:00.335+0100 [ERROR] 2022-04-02T08:21:00.335+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:21:00.338+0100 [ERROR] 2022-04-02T08:21:00.338+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:00.610+0100 [ERROR] 2022-04-02T08:21:00.610+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:00.615+0100 [ERROR] 2022-04-02T08:21:00.615+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:21:00.618+0100 [ERROR] 2022-04-02T08:21:00.617+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" +2022-04-02T08:21:00.906+0100 [ERROR] 2022-04-02T08:21:00.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:00.911+0100 [ERROR] 2022-04-02T08:21:00.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" +2022-04-02T08:21:00.913+0100 [ERROR] 2022-04-02T08:21:00.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" +2022-04-02T08:21:00.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:00.933+0100 [ERROR] 2022-04-02T08:21:00.933+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:21:00.933+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:02.716+0100 [ERROR] 2022-04-02T08:21:02.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:21:02.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:02.724+0100 [ERROR] 2022-04-02T08:21:02.724+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:21:02.725+0100 [ERROR] 2022-04-02T08:21:02.725+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:21:02.731+0100 [ERROR] 2022-04-02T08:21:02.731+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:21:02.738+0100 [ERROR] 2022-04-02T08:21:02.738+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:21:02.743+0100 [ERROR] 2022-04-02T08:21:02.743+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:21:02.748+0100 [ERROR] 2022-04-02T08:21:02.748+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:21:02.753+0100 [ERROR] 2022-04-02T08:21:02.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:21:02.757+0100 [ERROR] 2022-04-02T08:21:02.757+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" +2022-04-02T08:21:02.946+0100 [ERROR] 2022-04-02T08:21:02.946+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:21:02.948+0100 [ERROR] 2022-04-02T08:21:02.948+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:03.230+0100 [ERROR] 2022-04-02T08:21:03.230+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:03.237+0100 [ERROR] 2022-04-02T08:21:03.236+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:21:03.239+0100 [ERROR] 2022-04-02T08:21:03.239+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:03.521+0100 [ERROR] 2022-04-02T08:21:03.520+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:03.526+0100 [ERROR] 2022-04-02T08:21:03.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:21:03.528+0100 [ERROR] 2022-04-02T08:21:03.528+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:03.817+0100 [ERROR] 2022-04-02T08:21:03.817+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:03.822+0100 [ERROR] 2022-04-02T08:21:03.822+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:21:03.825+0100 [ERROR] 2022-04-02T08:21:03.825+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:04.134+0100 [ERROR] 2022-04-02T08:21:04.134+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:04.140+0100 [ERROR] 2022-04-02T08:21:04.140+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:21:04.143+0100 [ERROR] 2022-04-02T08:21:04.143+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:21:04.438+0100 [ERROR] 2022-04-02T08:21:04.438+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:04.443+0100 [ERROR] 2022-04-02T08:21:04.443+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:21:04.446+0100 [ERROR] 2022-04-02T08:21:04.446+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" +2022-04-02T08:21:04.739+0100 [ERROR] 2022-04-02T08:21:04.739+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:21:04.744+0100 [ERROR] 2022-04-02T08:21:04.743+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" +2022-04-02T08:21:04.746+0100 [ERROR] 2022-04-02T08:21:04.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" +2022-04-02T08:21:04.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:04.759+0100 [ERROR] 2022-04-02T08:21:04.759+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:21:04.759+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:06.393+0100 [ERROR] 2022-04-02T08:21:06.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000279] +2022-04-02T08:21:07.738+0100 [ERROR] 2022-04-02T08:21:07.737+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:21:07.737+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:21:07.746+0100 [ERROR] 2022-04-02T08:21:07.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:21:07.748+0100 [ERROR] 2022-04-02T08:21:07.748+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:21:07.754+0100 [ERROR] 2022-04-02T08:21:07.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:21:07.761+0100 [ERROR] 2022-04-02T08:21:07.761+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:21:07.770+0100 [ERROR] 2022-04-02T08:21:07.770+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:21:07.776+0100 [ERROR] 2022-04-02T08:21:07.776+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:21:07.781+0100 [ERROR] 2022-04-02T08:21:07.781+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:21:08.251+0100 [ERROR] 2022-04-02T08:21:08.251+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:21:10.256+0100 [ERROR] 2022-04-02T08:21:10.256+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-2hndz namespace=monitoring type=Ready value=False +2022-04-02T08:21:12.262+0100 [ERROR] 2022-04-02T08:21:12.262+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-2hndz namespace=monitoring type=Ready value=False +2022-04-02T08:21:14.269+0100 [ERROR] 2022-04-02T08:21:14.269+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [INFO] Creating Helm chart: ref=loki +2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] +2022-04-02T08:21:14.271+0100 [ERROR] 2022-04-02T08:21:14.271+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:21:14.596+0100 [ERROR] 2022-04-02T08:21:14.596+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:21:14.598+0100 [ERROR] 2022-04-02T08:21:14.597+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki +2022-04-02T08:21:15.079+0100 [ERROR] 2022-04-02T08:21:15.079+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz +2022-04-02T08:21:15.080+0100 [ERROR] 2022-04-02T08:21:15.080+0100 [DEBUG] Using Values: ref=loki values=map[] +2022-04-02T08:21:15.080+0100 [DEBUG] Validate chart: ref=loki +2022-04-02T08:21:15.080+0100 [DEBUG] Run chart: ref=loki +2022-04-02T08:21:15.309+0100 [ERROR] W0402 08:21:15.309301 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:15.325+0100 [ERROR] 2022-04-02T08:21:15.325+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" +2022-04-02T08:21:15.335+0100 [ERROR] 2022-04-02T08:21:15.335+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" +2022-04-02T08:21:15.340+0100 [ERROR] W0402 08:21:15.340198 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:15.369+0100 [ERROR] 2022-04-02T08:21:15.369+0100 [INFO] Creating Helm chart: ref=promtail +2022-04-02T08:21:15.369+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:21:15.369+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:21:15.370+0100 [ERROR] 2022-04-02T08:21:15.370+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail +2022-04-02T08:21:16.052+0100 [ERROR] 2022-04-02T08:21:16.052+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz +2022-04-02T08:21:16.053+0100 [ERROR] 2022-04-02T08:21:16.053+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] +2022-04-02T08:21:16.053+0100 [DEBUG] Validate chart: ref=promtail +2022-04-02T08:21:16.053+0100 [DEBUG] Run chart: ref=promtail +2022-04-02T08:21:16.353+0100 [ERROR] 2022-04-02T08:21:16.353+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" +2022-04-02T08:21:16.363+0100 [ERROR] 2022-04-02T08:21:16.363+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" +2022-04-02T08:21:16.390+0100 [ERROR] 2022-04-02T08:21:16.390+0100 [INFO] Creating Helm chart: ref=tempo +2022-04-02T08:21:16.390+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:21:16.390+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:21:16.391+0100 [ERROR] 2022-04-02T08:21:16.391+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo +2022-04-02T08:21:17.008+0100 [ERROR] 2022-04-02T08:21:17.008+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz +2022-04-02T08:21:17.009+0100 [ERROR] 2022-04-02T08:21:17.009+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" +2022-04-02T08:21:17.009+0100 [DEBUG] Validate chart: ref=tempo +2022-04-02T08:21:17.009+0100 [DEBUG] Run chart: ref=tempo +2022-04-02T08:21:17.262+0100 [ERROR] 2022-04-02T08:21:17.262+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" +2022-04-02T08:21:17.272+0100 [ERROR] 2022-04-02T08:21:17.271+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" +2022-04-02T08:21:17.302+0100 [ERROR] 2022-04-02T08:21:17.302+0100 [INFO] Creating Helm chart: ref=grafana +2022-04-02T08:21:17.302+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:21:17.302+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:21:17.303+0100 [ERROR] 2022-04-02T08:21:17.303+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana +2022-04-02T08:21:17.883+0100 [ERROR] 2022-04-02T08:21:17.883+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz +2022-04-02T08:21:17.885+0100 [ERROR] 2022-04-02T08:21:17.885+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" +2022-04-02T08:21:17.885+0100 [DEBUG] Validate chart: ref=grafana +2022-04-02T08:21:17.885+0100 [DEBUG] Run chart: ref=grafana +2022-04-02T08:21:18.222+0100 [ERROR] W0402 08:21:18.222552 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:18.225+0100 [ERROR] W0402 08:21:18.224951 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:18.255+0100 [ERROR] 2022-04-02T08:21:18.255+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" +2022-04-02T08:21:18.273+0100 [ERROR] 2022-04-02T08:21:18.273+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" +2022-04-02T08:21:18.277+0100 [ERROR] W0402 08:21:18.277209 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:18.277+0100 [ERROR] W0402 08:21:18.277320 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:21:18.348+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:21:18.348+0100 [DEBUG] Template content: ref=monitor_ingress_gateway + source= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: #{{ .Vars.monitoring_namespace }} + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: #{{ .Vars.consul_namespace }} + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:21:18.348+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [DEBUG] Template output: ref=monitor_ingress_gateway + destination= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: monitoring + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: consul + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:21:18.349+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] +2022-04-02T08:21:18.350+0100 [ERROR] 2022-04-02T08:21:18.349+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:21:18.442+0100 [ERROR] 2022-04-02T08:21:18.442+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] +2022-04-02T08:21:18.442+0100 [INFO] Creating Helm chart: ref=consul-release-controller +2022-04-02T08:21:18.442+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:21:18.442+0100 [ERROR] 2022-04-02T08:21:18.442+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] +2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml +2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:21:18.443+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml +2022-04-02T08:21:18.444+0100 [ERROR] 2022-04-02T08:21:18.444+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" +2022-04-02T08:21:18.444+0100 [DEBUG] Validate chart: ref=consul-release-controller +2022-04-02T08:21:18.444+0100 [DEBUG] Run chart: ref=consul-release-controller +2022-04-02T08:21:18.539+0100 [ERROR] 2022-04-02T08:21:18.539+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml +2022-04-02T08:21:18.561+0100 [ERROR] 2022-04-02T08:21:18.561+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml +2022-04-02T08:21:18.649+0100 [ERROR] 2022-04-02T08:21:18.649+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml +2022-04-02T08:21:18.703+0100 [ERROR] 2022-04-02T08:21:18.703+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml +2022-04-02T08:21:18.730+0100 [ERROR] 2022-04-02T08:21:18.730+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml +2022-04-02T08:21:18.736+0100 [ERROR] 2022-04-02T08:21:18.736+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml +2022-04-02T08:21:18.829+0100 [ERROR] 2022-04-02T08:21:18.829+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" +2022-04-02T08:21:18.840+0100 [ERROR] 2022-04-02T08:21:18.840+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" +2022-04-02T08:21:18.970+0100 [ERROR] 2022-04-02T08:21:18.970+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" +2022-04-02T08:21:18.997+0100 [ERROR] 2022-04-02T08:21:18.997+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 +2022-04-02T08:21:18.997+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec +2022-04-02T08:21:19.121+0100 [ERROR] 2022-04-02T08:21:19.121+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec +2022-04-02T08:21:19.125+0100 [ERROR] 2022-04-02T08:21:19.125+0100 [DEBUG] Attaching container to network: ref=45480788617bb1528fc64aa7ec16476ffce2165c7620ca4b731ef5eae054feec network=dc1 +2022-04-02T08:21:19.133+0100 [ERROR] 2022-04-02T08:21:19.132+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec +2022-04-02T08:21:20.621+0100 [ERROR] 2022-04-02T08:21:20.621+0100 [DEBUG] Forcefully remove: container=45480788617bb1528fc64aa7ec16476ffce2165c7620ca4b731ef5eae054feec +2022-04-02T08:21:21.394+0100 [ERROR] 2022-04-02T08:21:21.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 105.001074] +2022-04-02T08:21:22.041+0100 [ERROR] 2022-04-02T08:21:22.041+0100 [DEBUG] Health check urls for browser windows: count=0 +2022-04-02T08:21:22.041+0100 [DEBUG] Browser windows open + +######################################################## + +Title Development setup +Author Nic Jackson +2022-04-02T08:21:22.041+0100 [ERROR] +• Consul: https://localhost:8501 +• Grafana: https://localhost:8080 +• Application: http://localhost:18080 + +This blueprint defines 13 output variables. + +You can set output variables as environment variables for your current terminal session using the following command: + +eval $(shipyard env) + +To list output variables use the command: + +shipyard output +2022-04-02T08:21:22.657+0100 [INFO] Starting controller +2022-04-02T08:21:27.227+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:21:27.230+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:27.233+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:21:27.233+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:28.233+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:28.236+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:28.236+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:29.237+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:29.240+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:29.240+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:30.241+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:30.244+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:30.244+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:31.244+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:31.247+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:31.247+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:32.248+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:32.251+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:32.251+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:33.251+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:33.254+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:33.254+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:34.255+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:34.258+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:34.258+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:35.258+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:35.261+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:35.261+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:36.262+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:36.265+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:36.265+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:37.265+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:37.269+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:37.269+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:38.269+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:38.272+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:38.272+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:39.272+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:39.276+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:39.276+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:40.276+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:40.279+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:40.279+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:41.279+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:41.283+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:41.283+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:42.283+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:42.286+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:42.286+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:43.287+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:43.290+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:43.290+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:44.290+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:44.293+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:44.293+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:45.294+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:45.297+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:45.297+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:46.298+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:46.301+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:21:46.301+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:21:47.302+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:47.306+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:21:47.306+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:21:47.317+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:21:47.320+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:21:47.320+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:22:22.386+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:22.389+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start +2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start +2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Configure: state=state_configure +2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure +2022-04-02T08:22:22.392+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api +2022-04-02T08:22:22.392+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api +2022-04-02T08:22:23.390+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:23.393+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:24.394+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:24.397+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:25.398+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:25.400+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:25.419+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api +2022-04-02T08:22:26.401+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:26.404+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:26.432+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api +2022-04-02T08:22:27.405+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:27.408+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:27.439+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api +2022-04-02T08:22:28.409+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:28.411+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:28.445+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api +2022-04-02T08:22:29.412+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:29.415+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:30.415+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:30.417+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:31.418+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:31.421+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:32.421+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:32.424+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:33.424+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:33.427+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:22:33.452+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-02T08:22:33.457+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default +2022-04-02T08:22:33.463+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default +2022-04-02T08:22:33.467+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:33.470+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:22:33.470+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:34.428+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:34.431+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:34.431+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:34.470+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:34.473+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:34.473+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:35.431+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:35.434+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:35.434+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:35.473+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:35.476+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:35.476+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:36.435+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:36.438+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:36.438+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:36.477+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:36.480+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:36.480+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:37.438+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:37.441+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:37.441+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:37.481+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:37.484+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:37.484+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:38.441+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:38.445+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:38.445+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:38.485+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:38.488+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:38.488+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:39.445+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:39.448+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:39.448+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:39.488+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:39.491+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:39.491+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:40.448+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:40.451+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:40.451+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:40.491+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:40.494+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:40.494+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:41.452+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:41.455+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:41.455+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:41.495+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:41.498+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:41.498+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:42.456+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:42.459+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:42.459+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:42.499+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:42.502+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:42.502+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:43.459+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:43.462+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:43.462+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:43.502+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:43.505+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:43.505+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:44.463+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:44.466+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:44.466+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:44.505+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:44.508+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:44.508+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:45.467+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:45.470+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:45.470+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:45.508+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:45.511+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:45.511+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:46.470+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:46.474+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:46.474+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:46.512+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:46.515+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:46.515+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:47.474+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:47.477+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:47.477+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:47.515+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:47.518+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:47.518+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:48.477+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:48.480+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:48.480+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:48.519+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:48.522+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:48.522+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.480+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.483+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:22:49.483+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.522+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.525+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:22:49.525+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.525+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default +2022-04-02T08:22:49.525+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default +2022-04-02T08:22:49.525+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:22:49.528+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:22:54.538+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default +2022-04-02T08:22:54.547+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:22:54.547+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2177]" +2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Configure completed successfully +2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure +2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure +2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle +2022-04-02T08:22:55.537+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:22:55.554+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:22:55.554+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle +2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle +2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle +2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Deploy: state=state_deploy +2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy +2022-04-02T08:22:55.557+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:22:55.560+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:22:55.560+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:22:56.560+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:22:56.563+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:56.563+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:22:57.563+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:22:57.566+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:57.566+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:22:58.567+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:22:58.570+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:58.570+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:22:59.570+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:22:59.573+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:22:59.573+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:00.555+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-02T08:23:00.558+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default +2022-04-02T08:23:00.558+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:23:00.561+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Deploy completed, executing strategy +2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy +2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy +2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor +2022-04-02T08:23:00.566+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 +2022-04-02T08:23:00.566+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 +2022-04-02T08:23:00.573+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:00.577+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:00.577+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:01.577+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:01.579+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:01.579+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:02.580+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:02.583+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:02.583+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:03.583+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:03.586+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:03.586+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:04.586+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:04.589+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:04.589+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:05.590+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:05.593+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:05.593+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:06.594+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:06.597+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:06.597+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:07.597+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:07.600+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:07.600+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:08.600+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:08.603+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:08.603+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:09.603+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:09.606+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:23:09.606+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:10.608+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:10.617+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 +2022-04-02T08:23:10.617+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:23:11.617+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:11.620+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:23:11.620+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:23:11.633+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:23:11.636+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:23:11.636+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:23:11.645+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:23:11.648+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:23:11.648+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:23:11.650+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:16.651+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:21.652+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:26.653+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:30.567+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 +2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:23:30.567+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 +2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:23:30.572+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 +2022-04-02T08:23:31.654+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:36.655+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:41.656+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:46.657+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:51.659+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:23:56.660+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:00.574+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:24:00.574+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:24:00.578+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884240.574]"] value_type=model.Vector warnings=[] +2022-04-02T08:24:00.578+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-02T08:24:00.581+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884240.579]"] value_type=model.Vector warnings=[] +2022-04-02T08:24:00.581+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=30 +2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:24:00.581+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=70 traffic_canary=30 +2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:24:00.589+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=30 +2022-04-02T08:24:01.660+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:06.661+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:11.662+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:16.664+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:21.665+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:26.665+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:30.590+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:24:30.590+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:24:30.593+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884270.591]"] value_type=model.Vector warnings=[] +2022-04-02T08:24:30.593+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-02T08:24:30.595+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884270.593]"] value_type=model.Vector warnings=[] +2022-04-02T08:24:30.595+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=50 +2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:24:30.595+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=50 traffic_canary=50 +2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:24:30.600+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=50 +2022-04-02T08:24:31.666+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:36.667+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:41.668+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:46.669+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:51.669+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:24:56.670+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:00.601+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:25:00.601+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:25:00.603+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884300.602]"] value_type=model.Vector warnings=[] +2022-04-02T08:25:00.604+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-02T08:25:00.606+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884300.604]"] value_type=model.Vector warnings=[] +2022-04-02T08:25:00.606+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=70 +2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:25:00.606+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=30 traffic_canary=70 +2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:25:00.615+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=70 +2022-04-02T08:25:01.671+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:06.673+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:11.673+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:16.675+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:21.675+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:26.676+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:30.615+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:25:30.615+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:25:30.617+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884330.615]"] value_type=model.Vector warnings=[] +2022-04-02T08:25:30.618+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-02T08:25:30.620+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884330.618]"] value_type=model.Vector warnings=[] +2022-04-02T08:25:30.620+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=90 +2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:25:30.620+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=10 traffic_canary=90 +2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:25:30.630+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=90 +2022-04-02T08:25:31.678+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:36.679+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:41.679+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:46.680+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:51.680+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:25:56.681+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:00.631+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:26:00.631+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:26:00.633+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884360.631]"] value_type=model.Vector warnings=[] +2022-04-02T08:26:00.633+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-02T08:26:00.636+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884360.634]"] value_type=model.Vector warnings=[] +2022-04-02T08:26:00.636+0100 [DEBUG] strategy-plugin-canary: Strategy complete: type=canary traffic=110 +2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Monitor checks completed, strategy complete +2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_monitor +2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_monitor +2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Promote: state=state_promote +2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_promote +2022-04-02T08:26:00.636+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 +2022-04-02T08:26:01.682+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:05.641+0100 [INFO] runtime-plugin-kubernetes: Promote deployment: name=api-deployment namespace=default +2022-04-02T08:26:05.641+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:05.646+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:26:05.646+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:26:05.646+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing primary deployment: name=api-deployment-primary namespace=default +2022-04-02T08:26:05.650+0100 [DEBUG] runtime-plugin-kubernetes: Creating primary deployment from: name=api-deployment namespace=default +2022-04-02T08:26:05.659+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default +2022-04-02T08:26:05.665+0100 [DEBUG] runtime-plugin-kubernetes: Successfully created new Primary deployment: name=api-deployment-primary namespace=default +2022-04-02T08:26:05.665+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:05.673+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:26:05.673+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:06.673+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:06.676+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:06.676+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:06.683+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:07.677+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:07.680+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:07.680+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:08.680+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:08.683+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:08.684+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:09.684+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:09.687+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:09.687+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:10.687+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:10.690+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:10.690+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:11.684+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:11.691+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:11.694+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:11.694+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:12.694+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:12.697+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:12.697+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:13.698+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:13.701+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:13.701+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:14.702+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:14.705+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:14.705+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:15.705+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:15.708+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:15.708+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:16.685+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:16.709+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:16.712+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:16.712+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:17.713+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:17.716+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:17.716+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:18.716+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:18.719+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:18.719+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:19.720+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:19.723+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:19.723+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:20.724+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:20.727+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:20.727+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:21.686+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:21.728+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:21.732+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:21.732+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:22.733+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:22.736+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:22.736+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:23.737+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:23.740+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:23.740+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:24.740+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:24.743+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:24.743+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:25.744+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:25.747+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:25.747+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:26.687+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:26.748+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:26:26.751+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:26:26.751+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:26:26.751+0100 [INFO] runtime-plugin-kubernetes: Promote complete: name=api-deployment namespace=default +2022-04-02T08:26:26.751+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:26:26.754+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:26:31.689+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:31.760+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default +2022-04-02T08:26:31.771+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:26:31.771+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2631]" +2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Handle event: event=event_promoted state=state_promote +2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Log state: event=event_promoted state=state_promote +2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Log state: event=event_promoted release=api state=state_idle +2022-04-02T08:26:36.690+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Handle event: event=event_destroy state=state_idle +2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Log state: event=event_destroy state=state_idle +2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Destroy: state=state_destroy +2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Log state: event=event_destroy release=api state=state_destroy +2022-04-02T08:26:36.727+0100 [INFO] runtime-plugin-kubernetes: Restore original deployment: name=api-deployment namespace=default +2022-04-02T08:26:36.730+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing candidate deployment: name=api-deployment namespace=default +2022-04-02T08:26:36.736+0100 [DEBUG] runtime-plugin-kubernetes: Clone primary to create original deployment: name=api-deployment namespace=default +2022-04-02T08:26:36.742+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:26:36.748+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:36.752+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:26:36.752+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:37.752+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:37.756+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:37.756+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:38.756+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:38.759+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:38.759+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:39.759+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:39.762+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:39.762+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:40.763+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:40.766+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:40.766+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:41.767+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:41.769+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:41.769+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:42.770+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:42.773+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:42.773+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:43.773+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:43.777+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:43.777+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:44.777+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:44.781+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:44.781+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:45.781+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:45.784+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:45.784+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:46.785+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:46.788+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:46.788+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:47.789+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:47.792+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:47.792+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:48.793+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:48.796+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:48.796+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:49.797+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:49.800+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:49.800+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:50.801+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:50.804+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:50.804+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:51.805+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:51.808+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:26:51.808+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:26:52.809+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:26:52.812+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:26:52.812+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:26:52.812+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:26:52.815+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 +2022-04-02T08:26:57.825+0100 [INFO] runtime-plugin-kubernetes: Remove primary deployment: name=api-deployment namespace=default +2022-04-02T08:26:57.829+0100 [INFO] releaser-plugin-consul: Remove Consul config: name=api +2022-04-02T08:26:57.829+0100 [DEBUG] releaser-plugin-consul: Delete splitter: name=api +2022-04-02T08:26:58.834+0100 [DEBUG] releaser-plugin-consul: Cleanup router: name=api +2022-04-02T08:26:59.845+0100 [DEBUG] releaser-plugin-consul: Cleanup upstream router: name=api +2022-04-02T08:27:00.852+0100 [DEBUG] releaser-plugin-consul: Cleanup resolver: name=api +2022-04-02T08:27:01.858+0100 [DEBUG] releaser-plugin-consul: Cleanup service intentions: name=api +2022-04-02T08:27:02.869+0100 [DEBUG] releaser-plugin-consul: Cleanup defaults: name=api +2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_destroy +2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_destroy +2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle +2022-04-02T08:27:08.770+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:27:08.773+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:27:08.773+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:27:08.789+0100 [INFO] Shutting down server gracefully +2022-04-02T08:27:08.790+0100 [INFO] Shutting down listener +2022-04-02T08:27:08.790+0100 [INFO] Shutting down metrics +2022-04-02T08:27:08.791+0100 [INFO] Shutting down kubernetes controller +2022-04-02T08:27:08.791+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller +2022-04-02T08:27:53.825+0100 [ERROR] 2022-04-02T08:27:53.825+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs +2022-04-02T08:27:55.385+0100 [ERROR] 2022-04-02T08:27:55.385+0100 [DEBUG] Starting Ingress +2022-04-02T08:27:55.386+0100 [ERROR] Running configuration from: ./shipyard/kubernetes + +2022-04-02T08:27:55.386+0100 [DEBUG] Statefile does not exist +2022-04-02T08:27:58.282+0100 [ERROR] 2022-04-02T08:27:58.282+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes +2022-04-02T08:27:58.282+0100 [DEBUG] Statefile does not exist +2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=UPSTREAMS +2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR +2022-04-02T08:28:03.034+0100 [DEBUG] Template content: ref=controller_values + source= + | controller: + | enabled: "#{{ .Vars.controller_enabled }}" + | container_config: + | image: + | repository: "#{{ .Vars.controller_repo }}" + | tag: "#{{ .Vars.controller_version }}" + | autoencrypt: + | enabled: #{{ .Vars.tls_enabled }} + | acls: + | enabled: #{{ .Vars.acls_enabled }} + | #{{- if eq .Vars.controller_enabled false }} + | webhook: + | service: controller-webhook + | namespace: shipyard + | #{{ end }} + +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_CAKEY +2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR +2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [DEBUG] Template content: ref=consul_values + source= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: #{{ .Vars.datacenter }} + | + | acls: + | manageSystemACLs: #{{ .Vars.acl_enabled }} + | tls: + | enabled: #{{ .Vars.tls_enabled }} + | enableAutoEncrypt: #{{ .Vars.tls_enabled }} + | httpsOnly: false + | + | federation: + | enabled: #{{ .Vars.federation_enabled }} + | createFederationSecret: #{{ .Vars.create_federation_secret }} + | + | image: #{{ .Vars.consul_image }} + | + | imageK8S: #{{ .Vars.consul_k8s_image }} + | + | imageEnvoy: #{{ .Vars.consul_envoy_image }} + | + | metrics: + | enabled: #{{ .Vars.metrics_enabled }} + | enableAgentMetrics: #{{ .Vars.metrics_enabled }} + | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} + | + | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} + | + | transparentProxy: + | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: #{{ .Vars.ingress_gateway_enabled }} + | defaults: + | replicas: 1 + | service: + | ports: + | #{{ range .Vars.ingress_gateway_ports }} + | - port: #{{ . }} + | nodePort: null + | #{{ end }} + | + | + | meshGateway: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | replicas: 1 + | + | wanAddress: + | source: Static + | static: #{{ .Vars.mesh_gateway_address }} + | port: 30443 + | + | service: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | type: NodePort + | nodePort: 30443 +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=KUBECONFIG +2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=consul_proxy_defaults + source= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=controller_values + destination= + | controller: + | enabled: "false" + | container_config: + | image: + | repository: "nicholasjackson/consul-release-controller" + | tag: "" + | autoencrypt: + | enabled: true + | acls: + | enabled: true + | webhook: + | service: controller-webhook + | namespace: shipyard + | +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TLS_KEY +2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_proxy_defaults + destination= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.monitoring.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=consul_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_values + destination= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: dc1 + | + | acls: + | manageSystemACLs: true + | tls: + | enabled: true + | enableAutoEncrypt: true + | httpsOnly: false + | + | federation: + | enabled: false + | createFederationSecret: false + | + | image: hashicorp/consul:1.11.3 + | + | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 + | + | imageEnvoy: envoyproxy/envoy:v1.20.1 + | + | metrics: + | enabled: true + | enableAgentMetrics: true + | enableGatewayMetrics: true + | + | logLevel: "info" + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: null + | + | transparentProxy: + | defaultEnabled: false + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: true + | defaults: + | replicas: 1 + | service: + | ports: + | + | - port: 18080 + | nodePort: null + | + | - port: 18443 + | nodePort: null + | + | + | + | meshGateway: + | enabled: false + | replicas: 1 + | + | wanAddress: + | source: Static + | static: dc1.k8s-cluster.shipyard.run + | port: 30443 + | + | service: + | enabled: false + | type: NodePort + | nodePort: 30443 + +2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TLS_CERT +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_USER +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=certs_script + source= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=certs_script + destination= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key + +2022-04-02T08:28:03.034+0100 [INFO] Creating Network: ref=dc1 +2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_CACERT +2022-04-02T08:28:03.036+0100 [ERROR] 2022-04-02T08:28:03.036+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 +2022-04-02T08:28:03.061+0100 [ERROR] 2022-04-02T08:28:03.061+0100 [INFO] Creating ImageCache: ref=docker-cache +2022-04-02T08:28:03.063+0100 [ERROR] 2022-04-02T08:28:03.063+0100 [DEBUG] Connecting cache to network: name=network.dc1 +2022-04-02T08:28:03.064+0100 [ERROR] 2022-04-02T08:28:03.064+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:28:03.083+0100 [ERROR] 2022-04-02T08:28:03.083+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:28:03.083+0100 [DEBUG] Creating Docker Container: ref=83478282-import +2022-04-02T08:28:05.721+0100 [ERROR] 2022-04-02T08:28:05.721+0100 [DEBUG] Forcefully remove: container=b700875f0affc3fa711eb1054b972288f7cd4bedef834ca229890d5693a55df2 +2022-04-02T08:28:06.156+0100 [ERROR] 2022-04-02T08:28:06.155+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 +2022-04-02T08:28:06.156+0100 [ERROR] 2022-04-02T08:28:06.156+0100 [DEBUG] Creating Docker Container: ref=docker-cache +2022-04-02T08:28:06.206+0100 [ERROR] 2022-04-02T08:28:06.206+0100 [DEBUG] Remove container from default networks: ref=docker-cache +2022-04-02T08:28:06.210+0100 [ERROR] 2022-04-02T08:28:06.210+0100 [DEBUG] Attaching container to network: ref=48e6b97be378c16cf340c5775d18f3fe8af9939424320b8f90b6d7a42e3cd1d2 network=dc1 +2022-04-02T08:28:06.216+0100 [ERROR] 2022-04-02T08:28:06.216+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache +2022-04-02T08:28:06.796+0100 [ERROR] 2022-04-02T08:28:06.796+0100 [INFO] dc1: Creating Cluster: ref=dc1 +2022-04-02T08:28:06.817+0100 [ERROR] 2022-04-02T08:28:06.817+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 +2022-04-02T08:28:06.818+0100 [ERROR] 2022-04-02T08:28:06.818+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:28:06.818+0100 [ERROR] 2022-04-02T08:28:06.818+0100 [DEBUG] Creating Docker Container: ref=server.dc1 +2022-04-02T08:28:06.875+0100 [ERROR] 2022-04-02T08:28:06.875+0100 [DEBUG] Remove container from default networks: ref=server.dc1 +2022-04-02T08:28:06.878+0100 [ERROR] 2022-04-02T08:28:06.878+0100 [DEBUG] Attaching container to network: ref=98822f1c9a6a4150191cd142f0e9f7ed365b3d10a43c67dc56e75343c0414158 network=dc1 +2022-04-02T08:28:06.883+0100 [ERROR] 2022-04-02T08:28:06.883+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 +2022-04-02T08:28:09.544+0100 [ERROR] 2022-04-02T08:28:09.544+0100 [DEBUG] Copying file from: id=98822f1c9a6a4150191cd142f0e9f7ed365b3d10a43c67dc56e75343c0414158 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:28:09.589+0100 [ERROR] 2022-04-02T08:28:09.589+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:11.599+0100 [ERROR] 2022-04-02T08:28:11.599+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:13.283+0100 [ERROR] 2022-04-02T08:28:13.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000693] +2022-04-02T08:28:13.602+0100 [ERROR] 2022-04-02T08:28:13.602+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:15.606+0100 [ERROR] 2022-04-02T08:28:15.606+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:17.610+0100 [ERROR] 2022-04-02T08:28:17.610+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:19.613+0100 [ERROR] 2022-04-02T08:28:19.613+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:21.617+0100 [ERROR] 2022-04-02T08:28:21.617+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:23.620+0100 [ERROR] 2022-04-02T08:28:23.620+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:25.629+0100 [ERROR] 2022-04-02T08:28:25.629+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-z7wnn namespace=kube-system status=Pending +2022-04-02T08:28:27.635+0100 [ERROR] 2022-04-02T08:28:27.635+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-z7wnn namespace=kube-system status=Pending +2022-04-02T08:28:28.283+0100 [ERROR] 2022-04-02T08:28:28.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.001036] +2022-04-02T08:28:29.639+0100 [ERROR] 2022-04-02T08:28:29.639+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:28:29.639+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:28:31.643+0100 [ERROR] 2022-04-02T08:28:31.643+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:28:31.643+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run +2022-04-02T08:28:31.663+0100 [ERROR] 2022-04-02T08:28:31.663+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:28:31.663+0100 [DEBUG] Creating Docker Container: ref=63845971-import +2022-04-02T08:28:34.238+0100 [ERROR] 2022-04-02T08:28:34.238+0100 [DEBUG] Forcefully remove: container=aeb8011e95eef1d38d1518933cfa4192f78fd1a76507a4ff0512fcae13732054 +2022-04-02T08:28:34.615+0100 [ERROR] 2022-04-02T08:28:34.615+0100 [DEBUG] dc1: Deploying connector +2022-04-02T08:28:36.234+0100 [ERROR] 2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/4089621970/namespace.yaml +2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing secret config: file=/tmp/4089621970/secret.yaml +2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/4089621970/rbac.yaml +2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.235+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/4089621970/deployment.yaml +2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.235+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/namespace.yaml +2022-04-02T08:28:36.774+0100 [ERROR] 2022-04-02T08:28:36.774+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/secret.yaml +2022-04-02T08:28:36.779+0100 [ERROR] 2022-04-02T08:28:36.779+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/rbac.yaml +2022-04-02T08:28:36.787+0100 [ERROR] 2022-04-02T08:28:36.787+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/deployment.yaml +2022-04-02T08:28:36.804+0100 [ERROR] 2022-04-02T08:28:36.804+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.807+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 +2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul +2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-rpc +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:32577 local_addr=consul-ingress-gateway.consul.svc:18443 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-lan-serf +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=web +2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:32577 local_addr=consul-ingress-gateway.consul.svc:18080 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=controller-webhook +2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:32577 local_addr=localhost:19443 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8501 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8301 +2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=upstreams-proxy +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:32577 local_addr=consul-release-controller.default.svc:8080 +2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] +2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:32577 local_addr=web.default.svc:9090 +2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8300 +2022-04-02T08:28:38.809+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml +2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.809+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:28:38.829+0100 [ERROR] 2022-04-02T08:28:38.828+0100 [DEBUG] Successfully exposed service: id=7849ba34-548c-453c-9b2f-042635cc1304 +2022-04-02T08:28:38.828+0100 [DEBUG] Successfully exposed service: id=d60e01b7-d23f-4532-8c80-688a904a7daf +2022-04-02T08:28:38.829+0100 [DEBUG] Successfully exposed service: id=4176dc31-e7b4-47f4-8e71-0ae0484bac51 +2022-04-02T08:28:38.829+0100 [ERROR] 2022-04-02T08:28:38.829+0100 [DEBUG] Successfully exposed service: id=0badc0dd-07e1-4cd1-bbeb-c3a99f441308 +2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.835+0100 [DEBUG] Successfully exposed service: id=fb781663-b542-4218-9074-d462fb177920 +2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=9d0c4aaf-c9b2-44ce-9317-a58ff83cc827 +2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=2f5d92af-06dc-4674-9a02-dd93a64117c9 +2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=a6562142-652d-4cd0-8b93-0eb7d7cda760 +2022-04-02T08:28:38.873+0100 [ERROR] 2022-04-02T08:28:38.873+0100 [INFO] Creating Helm chart: ref=consul +2022-04-02T08:28:38.873+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com +2022-04-02T08:28:39.027+0100 [ERROR] 2022-04-02T08:28:39.027+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:28:39.027+0100 [ERROR] 2022-04-02T08:28:39.027+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul +2022-04-02T08:28:39.153+0100 [ERROR] 2022-04-02T08:28:39.153+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz +2022-04-02T08:28:39.158+0100 [ERROR] 2022-04-02T08:28:39.158+0100 [DEBUG] Using Values: ref=consul + values= + | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | replicas:1 storage:128Mi] ui:map[enabled:true]] + +2022-04-02T08:28:39.158+0100 [DEBUG] Validate chart: ref=consul +2022-04-02T08:28:39.158+0100 [DEBUG] Run chart: ref=consul +2022-04-02T08:28:39.204+0100 [ERROR] 2022-04-02T08:28:39.204+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:28:39.758+0100 [ERROR] 2022-04-02T08:28:39.758+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" +2022-04-02T08:28:39.761+0100 [ERROR] 2022-04-02T08:28:39.761+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" +2022-04-02T08:28:39.813+0100 [ERROR] 2022-04-02T08:28:39.813+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:28:39.818+0100 [ERROR] 2022-04-02T08:28:39.818+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" +2022-04-02T08:28:39.820+0100 [ERROR] 2022-04-02T08:28:39.820+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:28:39.870+0100 [ERROR] 2022-04-02T08:28:39.870+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:28:39.875+0100 [ERROR] 2022-04-02T08:28:39.875+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" +2022-04-02T08:28:39.877+0100 [ERROR] 2022-04-02T08:28:39.877+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:28:39.937+0100 [ERROR] 2022-04-02T08:28:39.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:28:39.941+0100 [ERROR] 2022-04-02T08:28:39.941+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:28:39.943+0100 [ERROR] 2022-04-02T08:28:39.943+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" +2022-04-02T08:28:39.995+0100 [ERROR] 2022-04-02T08:28:39.995+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:28:40.003+0100 [ERROR] 2022-04-02T08:28:40.003+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" +2022-04-02T08:28:40.008+0100 [ERROR] 2022-04-02T08:28:40.008+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" +2022-04-02T08:28:40.008+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:28:40.019+0100 [ERROR] 2022-04-02T08:28:40.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:28:40.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:28:41.209+0100 [ERROR] 2022-04-02T08:28:41.209+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager status=Pending +2022-04-02T08:28:42.167+0100 [ERROR] 2022-04-02T08:28:42.167+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:28:42.167+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:28:42.180+0100 [ERROR] 2022-04-02T08:28:42.180+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:28:42.183+0100 [ERROR] 2022-04-02T08:28:42.183+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:28:42.189+0100 [ERROR] 2022-04-02T08:28:42.189+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" +2022-04-02T08:28:42.578+0100 [ERROR] 2022-04-02T08:28:42.578+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:28:42.584+0100 [ERROR] 2022-04-02T08:28:42.584+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" +2022-04-02T08:28:42.586+0100 [ERROR] 2022-04-02T08:28:42.586+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" +2022-04-02T08:28:42.586+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:28:42.590+0100 [ERROR] 2022-04-02T08:28:42.590+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:28:42.590+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:28:43.214+0100 [ERROR] 2022-04-02T08:28:43.214+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False +2022-04-02T08:28:43.283+0100 [ERROR] 2022-04-02T08:28:43.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000563] +2022-04-02T08:28:45.221+0100 [ERROR] 2022-04-02T08:28:45.221+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False +2022-04-02T08:28:47.227+0100 [ERROR] 2022-04-02T08:28:47.227+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False +2022-04-02T08:28:49.231+0100 [ERROR] 2022-04-02T08:28:49.231+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False +2022-04-02T08:28:51.236+0100 [ERROR] 2022-04-02T08:28:51.236+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False +2022-04-02T08:28:53.242+0100 [ERROR] 2022-04-02T08:28:53.242+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:28:58.283+0100 [ERROR] 2022-04-02T08:28:58.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001061] +2022-04-02T08:29:01.396+0100 [ERROR] 2022-04-02T08:29:01.396+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:29:01.396+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:01.404+0100 [ERROR] 2022-04-02T08:29:01.404+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:29:01.406+0100 [ERROR] 2022-04-02T08:29:01.406+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" +2022-04-02T08:29:01.461+0100 [ERROR] 2022-04-02T08:29:01.461+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:29:03.467+0100 [ERROR] 2022-04-02T08:29:03.466+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-5w9d9 namespace=consul type=Ready value=False +2022-04-02T08:29:05.472+0100 [ERROR] 2022-04-02T08:29:05.472+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:29:05.472+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:29:07.477+0100 [ERROR] 2022-04-02T08:29:07.477+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:29:07.477+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:29:09.481+0100 [ERROR] 2022-04-02T08:29:09.481+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:29:09.481+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:29:11.485+0100 [ERROR] 2022-04-02T08:29:11.485+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=grafana_secret_template + source= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: #{{ .Vars.monitoring_namespace }} + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= + +2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=tempo +2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=prometheus_operator_template + source= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=monitoring_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring + +2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:32577 local_addr=tempo.default.svc:3100 +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Creating Helm chart: ref=prometheus +2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=grafana_secret_template + destination= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: monitoring + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= + +2022-04-02T08:29:11.486+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] +2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=prometheus +2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=monitoring_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts +2022-04-02T08:29:11.486+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:32577 local_addr=prometheus-operated.monitoring.svc:9090 +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=grafana +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:32577 local_addr=grafana.monitoring.svc:80 +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=prometheus_operator_template + destination= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh +2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=fetch_consul_resources + source= + | #!/bin/sh -e + | + | echo "Port #{{ .Vars.port }}" + | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" + | + | #{{ if eq .Vars.acl_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | #{{end}} + | + | #{{ if eq .Vars.tls_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | #{{end}} +2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=zipkin +2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:32577 local_addr=tempo.monitoring.svc:9411 +2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Template output: ref=fetch_consul_resources + destination= + | #!/bin/sh -e + | + | echo "Port 8501" + | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | + | + | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | + | + | + | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | +2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" +2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:29:11.488+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:29:11.506+0100 [ERROR] 2022-04-02T08:29:11.506+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 +2022-04-02T08:29:11.506+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec +2022-04-02T08:29:11.509+0100 [ERROR] 2022-04-02T08:29:11.509+0100 [DEBUG] Successfully exposed service: id=8b652934-a4a2-415c-a36f-2b174ed2c944 +2022-04-02T08:29:11.517+0100 [ERROR] 2022-04-02T08:29:11.517+0100 [DEBUG] Successfully exposed service: id=8716f023-e206-4731-ae8b-6afde65709bc +2022-04-02T08:29:11.517+0100 [ERROR] 2022-04-02T08:29:11.517+0100 [DEBUG] Successfully exposed service: id=37e8b5ce-cc2f-40c7-b07e-8da29488a100 +2022-04-02T08:29:11.518+0100 [ERROR] 2022-04-02T08:29:11.518+0100 [DEBUG] Successfully exposed service: id=9ca4de8e-a6a9-4722-add2-cd56e3550f65 +2022-04-02T08:29:11.563+0100 [ERROR] 2022-04-02T08:29:11.563+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec +2022-04-02T08:29:11.566+0100 [ERROR] 2022-04-02T08:29:11.566+0100 [DEBUG] Attaching container to network: ref=5883402fa0ca508e895b64ed2555bcd9fb9dab62665f096f10cb657f1163f863 network=dc1 +2022-04-02T08:29:11.572+0100 [ERROR] 2022-04-02T08:29:11.572+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec +2022-04-02T08:29:11.981+0100 [ERROR] 2022-04-02T08:29:11.981+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:11.981+0100 [ERROR] 2022-04-02T08:29:11.981+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack +2022-04-02T08:29:12.090+0100 [ERROR] 2022-04-02T08:29:12.090+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] +2022-04-02T08:29:12.091+0100 [ERROR] 2022-04-02T08:29:12.090+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:29:12.571+0100 [ERROR] 2022-04-02T08:29:12.571+0100 [DEBUG] Port 8501 +Fetching resources from running cluster, acls_enabled: true, tls_enabled true +2022-04-02T08:29:12.778+0100 [ERROR] 2022-04-02T08:29:12.778+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz +2022-04-02T08:29:12.794+0100 [ERROR] 2022-04-02T08:29:12.794+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" +2022-04-02T08:29:12.794+0100 [DEBUG] Validate chart: ref=prometheus +2022-04-02T08:29:12.794+0100 [DEBUG] Run chart: ref=prometheus +2022-04-02T08:29:12.811+0100 [ERROR] 2022-04-02T08:29:12.811+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:12.860+0100 [ERROR] 2022-04-02T08:29:12.860+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:12.910+0100 [ERROR] 2022-04-02T08:29:12.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:12.929+0100 [ERROR] 2022-04-02T08:29:12.929+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:12.972+0100 [ERROR] 2022-04-02T08:29:12.972+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:13.058+0100 [ERROR] 2022-04-02T08:29:13.058+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:13.062+0100 [ERROR] 2022-04-02T08:29:13.062+0100 [DEBUG] Forcefully remove: container=5883402fa0ca508e895b64ed2555bcd9fb9dab62665f096f10cb657f1163f863 +2022-04-02T08:29:13.068+0100 [ERROR] 2022-04-02T08:29:13.068+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:13.099+0100 [ERROR] 2022-04-02T08:29:13.099+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:13.162+0100 [ERROR] 2022-04-02T08:29:13.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" +2022-04-02T08:29:13.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" +2022-04-02T08:29:13.283+0100 [ERROR] 2022-04-02T08:29:13.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000695] +2022-04-02T08:29:16.570+0100 [ERROR] 2022-04-02T08:29:16.569+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:16.843+0100 [ERROR] 2022-04-02T08:29:16.843+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:29:16.846+0100 [ERROR] 2022-04-02T08:29:16.846+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:17.125+0100 [ERROR] 2022-04-02T08:29:17.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:17.131+0100 [ERROR] 2022-04-02T08:29:17.130+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:29:17.133+0100 [ERROR] 2022-04-02T08:29:17.133+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:17.424+0100 [ERROR] 2022-04-02T08:29:17.424+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:17.430+0100 [ERROR] 2022-04-02T08:29:17.430+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:29:17.432+0100 [ERROR] 2022-04-02T08:29:17.432+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:17.709+0100 [ERROR] 2022-04-02T08:29:17.709+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:17.715+0100 [ERROR] 2022-04-02T08:29:17.715+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:29:17.717+0100 [ERROR] 2022-04-02T08:29:17.717+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:17.999+0100 [ERROR] 2022-04-02T08:29:17.999+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:18.005+0100 [ERROR] 2022-04-02T08:29:18.004+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:29:18.007+0100 [ERROR] 2022-04-02T08:29:18.007+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:18.294+0100 [ERROR] 2022-04-02T08:29:18.294+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:18.300+0100 [ERROR] 2022-04-02T08:29:18.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:29:18.302+0100 [ERROR] 2022-04-02T08:29:18.302+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" +2022-04-02T08:29:18.578+0100 [ERROR] 2022-04-02T08:29:18.578+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:18.582+0100 [ERROR] 2022-04-02T08:29:18.582+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" +2022-04-02T08:29:18.584+0100 [ERROR] 2022-04-02T08:29:18.584+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" +2022-04-02T08:29:18.584+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:18.602+0100 [ERROR] 2022-04-02T08:29:18.602+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:29:18.602+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:20.271+0100 [ERROR] 2022-04-02T08:29:20.271+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:29:20.271+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:20.279+0100 [ERROR] 2022-04-02T08:29:20.279+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:29:20.281+0100 [ERROR] 2022-04-02T08:29:20.281+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:29:20.287+0100 [ERROR] 2022-04-02T08:29:20.287+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:29:20.296+0100 [ERROR] 2022-04-02T08:29:20.295+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:29:20.301+0100 [ERROR] 2022-04-02T08:29:20.300+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:29:20.306+0100 [ERROR] 2022-04-02T08:29:20.306+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:29:20.310+0100 [ERROR] 2022-04-02T08:29:20.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:29:20.314+0100 [ERROR] 2022-04-02T08:29:20.314+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" +2022-04-02T08:29:20.508+0100 [ERROR] 2022-04-02T08:29:20.508+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:29:20.511+0100 [ERROR] 2022-04-02T08:29:20.511+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:20.791+0100 [ERROR] 2022-04-02T08:29:20.791+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:20.797+0100 [ERROR] 2022-04-02T08:29:20.797+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:29:20.800+0100 [ERROR] 2022-04-02T08:29:20.800+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:21.080+0100 [ERROR] 2022-04-02T08:29:21.080+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:21.085+0100 [ERROR] 2022-04-02T08:29:21.085+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:29:21.087+0100 [ERROR] 2022-04-02T08:29:21.087+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:21.375+0100 [ERROR] 2022-04-02T08:29:21.375+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:21.380+0100 [ERROR] 2022-04-02T08:29:21.380+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:29:21.384+0100 [ERROR] 2022-04-02T08:29:21.383+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:21.692+0100 [ERROR] 2022-04-02T08:29:21.691+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:21.697+0100 [ERROR] 2022-04-02T08:29:21.697+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:29:21.699+0100 [ERROR] 2022-04-02T08:29:21.699+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:29:21.987+0100 [ERROR] 2022-04-02T08:29:21.987+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:21.993+0100 [ERROR] 2022-04-02T08:29:21.993+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:29:21.997+0100 [ERROR] 2022-04-02T08:29:21.997+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" +2022-04-02T08:29:22.289+0100 [ERROR] 2022-04-02T08:29:22.289+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:29:22.297+0100 [ERROR] 2022-04-02T08:29:22.297+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" +2022-04-02T08:29:22.299+0100 [ERROR] 2022-04-02T08:29:22.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" +2022-04-02T08:29:22.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:22.310+0100 [ERROR] 2022-04-02T08:29:22.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:29:22.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:25.290+0100 [ERROR] 2022-04-02T08:29:25.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:29:25.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:29:25.300+0100 [ERROR] 2022-04-02T08:29:25.300+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:29:25.302+0100 [ERROR] 2022-04-02T08:29:25.302+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:29:25.308+0100 [ERROR] 2022-04-02T08:29:25.308+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:29:25.318+0100 [ERROR] 2022-04-02T08:29:25.318+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:29:25.323+0100 [ERROR] 2022-04-02T08:29:25.323+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:29:25.328+0100 [ERROR] 2022-04-02T08:29:25.328+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:29:25.334+0100 [ERROR] 2022-04-02T08:29:25.334+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:29:25.685+0100 [ERROR] 2022-04-02T08:29:25.685+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:29:27.690+0100 [ERROR] 2022-04-02T08:29:27.690+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-nkkrw namespace=monitoring type=Ready value=False +2022-04-02T08:29:28.283+0100 [ERROR] 2022-04-02T08:29:28.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000978] +2022-04-02T08:29:29.696+0100 [ERROR] 2022-04-02T08:29:29.696+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-nkkrw namespace=monitoring type=Ready value=False +2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] +2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [INFO] Creating Helm chart: ref=loki +2022-04-02T08:29:31.701+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:29:31.702+0100 [ERROR] 2022-04-02T08:29:31.702+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:29:32.025+0100 [ERROR] 2022-04-02T08:29:32.025+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:32.025+0100 [ERROR] 2022-04-02T08:29:32.025+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki +2022-04-02T08:29:32.914+0100 [ERROR] 2022-04-02T08:29:32.913+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz +2022-04-02T08:29:32.914+0100 [ERROR] 2022-04-02T08:29:32.914+0100 [DEBUG] Using Values: ref=loki values=map[] +2022-04-02T08:29:32.914+0100 [DEBUG] Validate chart: ref=loki +2022-04-02T08:29:32.914+0100 [DEBUG] Run chart: ref=loki +2022-04-02T08:29:33.148+0100 [ERROR] W0402 08:29:33.148759 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:33.162+0100 [ERROR] 2022-04-02T08:29:33.162+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" +2022-04-02T08:29:33.170+0100 [ERROR] 2022-04-02T08:29:33.170+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" +2022-04-02T08:29:33.174+0100 [ERROR] W0402 08:29:33.174431 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:33.203+0100 [ERROR] 2022-04-02T08:29:33.203+0100 [INFO] Creating Helm chart: ref=promtail +2022-04-02T08:29:33.203+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:29:33.203+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:33.204+0100 [ERROR] 2022-04-02T08:29:33.204+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail +2022-04-02T08:29:33.856+0100 [ERROR] 2022-04-02T08:29:33.856+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz +2022-04-02T08:29:33.857+0100 [ERROR] 2022-04-02T08:29:33.857+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] +2022-04-02T08:29:33.857+0100 [DEBUG] Validate chart: ref=promtail +2022-04-02T08:29:33.857+0100 [DEBUG] Run chart: ref=promtail +2022-04-02T08:29:34.276+0100 [ERROR] 2022-04-02T08:29:34.276+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" +2022-04-02T08:29:34.286+0100 [ERROR] 2022-04-02T08:29:34.285+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" +2022-04-02T08:29:34.310+0100 [ERROR] 2022-04-02T08:29:34.310+0100 [INFO] Creating Helm chart: ref=tempo +2022-04-02T08:29:34.310+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:29:34.310+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:34.311+0100 [ERROR] 2022-04-02T08:29:34.311+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo +2022-04-02T08:29:34.902+0100 [ERROR] 2022-04-02T08:29:34.902+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz +2022-04-02T08:29:34.903+0100 [ERROR] 2022-04-02T08:29:34.903+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" +2022-04-02T08:29:34.903+0100 [DEBUG] Validate chart: ref=tempo +2022-04-02T08:29:34.903+0100 [DEBUG] Run chart: ref=tempo +2022-04-02T08:29:35.144+0100 [ERROR] 2022-04-02T08:29:35.144+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" +2022-04-02T08:29:35.153+0100 [ERROR] 2022-04-02T08:29:35.153+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" +2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.184+0100 [INFO] Creating Helm chart: ref=grafana +2022-04-02T08:29:35.185+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.185+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.185+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana +2022-04-02T08:29:35.528+0100 [ERROR] 2022-04-02T08:29:35.528+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz +2022-04-02T08:29:35.530+0100 [ERROR] 2022-04-02T08:29:35.529+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" +2022-04-02T08:29:35.530+0100 [DEBUG] Validate chart: ref=grafana +2022-04-02T08:29:35.530+0100 [DEBUG] Run chart: ref=grafana +2022-04-02T08:29:35.852+0100 [ERROR] W0402 08:29:35.852165 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:35.854+0100 [ERROR] W0402 08:29:35.854231 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:35.884+0100 [ERROR] 2022-04-02T08:29:35.884+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" +2022-04-02T08:29:35.903+0100 [ERROR] 2022-04-02T08:29:35.902+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" +2022-04-02T08:29:35.906+0100 [ERROR] W0402 08:29:35.906253 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:35.906+0100 [ERROR] W0402 08:29:35.906415 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:29:35.964+0100 [DEBUG] Template content: ref=monitor_ingress_gateway + source= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: #{{ .Vars.monitoring_namespace }} + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: #{{ .Vars.consul_namespace }} + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [DEBUG] Template output: ref=monitor_ingress_gateway + destination= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: monitoring + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: consul + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] +2022-04-02T08:29:35.965+0100 [ERROR] 2022-04-02T08:29:35.965+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] +2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [INFO] Creating Helm chart: ref=consul-release-controller +2022-04-02T08:29:36.045+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] +2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml +2022-04-02T08:29:36.045+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml +2022-04-02T08:29:36.046+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:29:36.045+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:29:36.047+0100 [ERROR] 2022-04-02T08:29:36.046+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" +2022-04-02T08:29:36.047+0100 [DEBUG] Validate chart: ref=consul-release-controller +2022-04-02T08:29:36.047+0100 [DEBUG] Run chart: ref=consul-release-controller +2022-04-02T08:29:36.168+0100 [ERROR] 2022-04-02T08:29:36.168+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml +2022-04-02T08:29:36.194+0100 [ERROR] 2022-04-02T08:29:36.194+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml +2022-04-02T08:29:36.266+0100 [ERROR] 2022-04-02T08:29:36.265+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml +2022-04-02T08:29:36.293+0100 [ERROR] 2022-04-02T08:29:36.293+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml +2022-04-02T08:29:36.351+0100 [ERROR] 2022-04-02T08:29:36.350+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml +2022-04-02T08:29:36.357+0100 [ERROR] 2022-04-02T08:29:36.357+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml +2022-04-02T08:29:36.448+0100 [ERROR] 2022-04-02T08:29:36.448+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" +2022-04-02T08:29:36.461+0100 [ERROR] 2022-04-02T08:29:36.461+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" +2022-04-02T08:29:36.600+0100 [ERROR] 2022-04-02T08:29:36.600+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" +2022-04-02T08:29:36.623+0100 [ERROR] 2022-04-02T08:29:36.623+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 +2022-04-02T08:29:36.623+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec +2022-04-02T08:29:37.048+0100 [ERROR] 2022-04-02T08:29:37.048+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec +2022-04-02T08:29:37.052+0100 [ERROR] 2022-04-02T08:29:37.052+0100 [DEBUG] Attaching container to network: ref=7f054585b5c6de149a4fd558847b805022365300fb29756bbd0f59a3c1560f2e network=dc1 +2022-04-02T08:29:37.066+0100 [ERROR] 2022-04-02T08:29:37.066+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec +2022-04-02T08:29:40.323+0100 [ERROR] 2022-04-02T08:29:40.323+0100 [DEBUG] Forcefully remove: container=7f054585b5c6de149a4fd558847b805022365300fb29756bbd0f59a3c1560f2e +2022-04-02T08:29:40.857+0100 [ERROR] 2022-04-02T08:29:40.857+0100 [DEBUG] Health check urls for browser windows: count=0 +2022-04-02T08:29:40.857+0100 [DEBUG] Browser windows open + +######################################################## + +Title Development setup +Author Nic Jackson +2022-04-02T08:29:40.857+0100 [ERROR] +• Consul: https://localhost:8501 +• Grafana: https://localhost:8080 +• Application: http://localhost:18080 + +This blueprint defines 13 output variables. + +You can set output variables as environment variables for your current terminal session using the following command: + +eval $(shipyard env) + +To list output variables use the command: + +shipyard output +2022-04-02T08:29:41.478+0100 [INFO] Starting controller +2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start +2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start +2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Configure: state=state_configure +2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure +2022-04-02T08:29:46.062+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api +2022-04-02T08:29:46.062+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api +2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_configure +2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Reject deployment, there is currently an active release for this deployment: name=api-deployment namespace=default state=state_configure +2022-04-02T08:29:46.092+0100 [INFO] Shutting down server gracefully +2022-04-02T08:29:46.093+0100 [INFO] Shutting down listener +2022-04-02T08:29:46.093+0100 [INFO] Shutting down metrics +2022-04-02T08:29:46.095+0100 [INFO] Shutting down kubernetes controller +2022-04-02T08:29:46.095+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller +2022-04-02T08:29:47.071+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceDefaults: name=consul-release-controller error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" +2022-04-02T08:29:47.071+0100 [ERROR] statemachine: Configure completed with error: error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" +2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_configure +2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_configure +2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail +2022-04-02T08:30:31.299+0100 [ERROR] 2022-04-02T08:30:31.299+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs +2022-04-02T08:30:33.676+0100 [ERROR] 2022-04-02T08:30:33.676+0100 [DEBUG] Starting Ingress +2022-04-02T08:30:33.676+0100 [ERROR] Running configuration from: ./shipyard/kubernetes + +2022-04-02T08:30:33.676+0100 [DEBUG] Statefile does not exist +2022-04-02T08:30:36.894+0100 [ERROR] 2022-04-02T08:30:36.894+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes +2022-04-02T08:30:36.894+0100 [DEBUG] Statefile does not exist +2022-04-02T08:30:39.982+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR +2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_CACERT +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TLS_KEY +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_USER +2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:30:39.982+0100 [DEBUG] Template content: ref=consul_proxy_defaults + source= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } +2022-04-02T08:30:39.982+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Network: ref=dc1 +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [DEBUG] Template content: ref=consul_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh +2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=certs_script + source= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=consul_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul + +2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=certs_script + destination= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=controller_values + source= + | controller: + | enabled: "#{{ .Vars.controller_enabled }}" + | container_config: + | image: + | repository: "#{{ .Vars.controller_repo }}" + | tag: "#{{ .Vars.controller_version }}" + | autoencrypt: + | enabled: #{{ .Vars.tls_enabled }} + | acls: + | enabled: #{{ .Vars.acls_enabled }} + | #{{- if eq .Vars.controller_enabled false }} + | webhook: + | service: controller-webhook + | namespace: shipyard + | #{{ end }} +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TLS_CERT +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_CAKEY +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=UPSTREAMS +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=KUBECONFIG +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=consul_values + source= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: #{{ .Vars.datacenter }} + | + | acls: + | manageSystemACLs: #{{ .Vars.acl_enabled }} + | tls: + | enabled: #{{ .Vars.tls_enabled }} + | enableAutoEncrypt: #{{ .Vars.tls_enabled }} + | httpsOnly: false + | + | federation: + | enabled: #{{ .Vars.federation_enabled }} + | createFederationSecret: #{{ .Vars.create_federation_secret }} + | + | image: #{{ .Vars.consul_image }} + | + | imageK8S: #{{ .Vars.consul_k8s_image }} + | + | imageEnvoy: #{{ .Vars.consul_envoy_image }} + | + | metrics: + | enabled: #{{ .Vars.metrics_enabled }} + | enableAgentMetrics: #{{ .Vars.metrics_enabled }} + | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} + | + | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} + | + | transparentProxy: + | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: #{{ .Vars.ingress_gateway_enabled }} + | defaults: + | replicas: 1 + | service: + | ports: + | #{{ range .Vars.ingress_gateway_ports }} + | - port: #{{ . }} + | nodePort: null + | #{{ end }} + | + | + | meshGateway: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | replicas: 1 + | + | wanAddress: + | source: Static + | static: #{{ .Vars.mesh_gateway_address }} + | port: 30443 + | + | service: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | type: NodePort + | nodePort: 30443 +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=controller_values + destination= + | controller: + | enabled: "false" + | container_config: + | image: + | repository: "nicholasjackson/consul-release-controller" + | tag: "" + | autoencrypt: + | enabled: true + | acls: + | enabled: true + | webhook: + | service: controller-webhook + | namespace: shipyard + | +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [DEBUG] Template output: ref=consul_proxy_defaults + destination= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.monitoring.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } + +2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR +2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=consul_values + destination= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: dc1 + | + | acls: + | manageSystemACLs: true + | tls: + | enabled: true + | enableAutoEncrypt: true + | httpsOnly: false + | + | federation: + | enabled: false + | createFederationSecret: false + | + | image: hashicorp/consul:1.11.3 + | + | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 + | + | imageEnvoy: envoyproxy/envoy:v1.20.1 + | + | metrics: + | enabled: true + | enableAgentMetrics: true + | enableGatewayMetrics: true + | + | logLevel: "info" + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: null + | + | transparentProxy: + | defaultEnabled: false + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: true + | defaults: + | replicas: 1 + | service: + | ports: + | + | - port: 18080 + | nodePort: null + | + | - port: 18443 + | nodePort: null + | + | + | + | meshGateway: + | enabled: false + | replicas: 1 + | + | wanAddress: + | source: Static + | static: dc1.k8s-cluster.shipyard.run + | port: 30443 + | + | service: + | enabled: false + | type: NodePort + | nodePort: 30443 +2022-04-02T08:30:39.984+0100 [ERROR] 2022-04-02T08:30:39.984+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 +2022-04-02T08:30:40.007+0100 [ERROR] 2022-04-02T08:30:40.007+0100 [INFO] Creating ImageCache: ref=docker-cache +2022-04-02T08:30:40.010+0100 [ERROR] 2022-04-02T08:30:40.010+0100 [DEBUG] Connecting cache to network: name=network.dc1 +2022-04-02T08:30:40.011+0100 [ERROR] 2022-04-02T08:30:40.011+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:30:40.029+0100 [ERROR] 2022-04-02T08:30:40.029+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:30:40.029+0100 [DEBUG] Creating Docker Container: ref=29925218-import +2022-04-02T08:30:42.697+0100 [ERROR] 2022-04-02T08:30:42.697+0100 [DEBUG] Forcefully remove: container=1a96b777bdae3b860cce347673c73d3f3d70fe9e009e4257bcc5817acf7f775b +2022-04-02T08:30:43.107+0100 [ERROR] 2022-04-02T08:30:43.107+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 +2022-04-02T08:30:43.107+0100 [ERROR] 2022-04-02T08:30:43.107+0100 [DEBUG] Creating Docker Container: ref=docker-cache +2022-04-02T08:30:43.159+0100 [ERROR] 2022-04-02T08:30:43.159+0100 [DEBUG] Remove container from default networks: ref=docker-cache +2022-04-02T08:30:43.162+0100 [ERROR] 2022-04-02T08:30:43.162+0100 [DEBUG] Attaching container to network: ref=d6e52b47c162800478704bcb36db2e9991f1b72fc4ac8388540bb8ae49b2acb5 network=dc1 +2022-04-02T08:30:43.169+0100 [ERROR] 2022-04-02T08:30:43.169+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache +2022-04-02T08:30:43.837+0100 [ERROR] 2022-04-02T08:30:43.837+0100 [INFO] dc1: Creating Cluster: ref=dc1 +2022-04-02T08:30:43.859+0100 [ERROR] 2022-04-02T08:30:43.859+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 +2022-04-02T08:30:43.860+0100 [ERROR] 2022-04-02T08:30:43.860+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:30:43.860+0100 [ERROR] 2022-04-02T08:30:43.860+0100 [DEBUG] Creating Docker Container: ref=server.dc1 +2022-04-02T08:30:43.916+0100 [ERROR] 2022-04-02T08:30:43.916+0100 [DEBUG] Remove container from default networks: ref=server.dc1 +2022-04-02T08:30:43.919+0100 [ERROR] 2022-04-02T08:30:43.919+0100 [DEBUG] Attaching container to network: ref=02863c59bf438c3069014412f24e105baf08258f0205b50ab210c46162bdd358 network=dc1 +2022-04-02T08:30:43.929+0100 [ERROR] 2022-04-02T08:30:43.929+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 +2022-04-02T08:30:46.534+0100 [ERROR] 2022-04-02T08:30:46.534+0100 [DEBUG] Copying file from: id=02863c59bf438c3069014412f24e105baf08258f0205b50ab210c46162bdd358 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:30:46.574+0100 [ERROR] 2022-04-02T08:30:46.573+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:48.584+0100 [ERROR] 2022-04-02T08:30:48.584+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:50.587+0100 [ERROR] 2022-04-02T08:30:50.587+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:51.895+0100 [ERROR] 2022-04-02T08:30:51.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000301] +2022-04-02T08:30:52.590+0100 [ERROR] 2022-04-02T08:30:52.590+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:54.594+0100 [ERROR] 2022-04-02T08:30:54.594+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:56.597+0100 [ERROR] 2022-04-02T08:30:56.597+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:30:58.602+0100 [ERROR] 2022-04-02T08:30:58.602+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:31:00.606+0100 [ERROR] 2022-04-02T08:31:00.606+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:31:02.611+0100 [ERROR] 2022-04-02T08:31:02.610+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-9j4kj namespace=kube-system status=Pending +2022-04-02T08:31:04.616+0100 [ERROR] 2022-04-02T08:31:04.616+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-9j4kj namespace=kube-system status=Pending +2022-04-02T08:31:06.620+0100 [ERROR] 2022-04-02T08:31:06.620+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:31:06.620+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:31:06.895+0100 [ERROR] 2022-04-02T08:31:06.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000659] +2022-04-02T08:31:08.624+0100 [ERROR] 2022-04-02T08:31:08.624+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:31:08.624+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run +2022-04-02T08:31:08.641+0100 [ERROR] 2022-04-02T08:31:08.641+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:31:08.641+0100 [DEBUG] Creating Docker Container: ref=41887903-import +2022-04-02T08:31:11.174+0100 [ERROR] 2022-04-02T08:31:11.174+0100 [DEBUG] Forcefully remove: container=16f5ef710361f211aa41a4e0ca31daf0647a0da07d4fdc99d72d17bc37e8e3c2 +2022-04-02T08:31:11.516+0100 [ERROR] 2022-04-02T08:31:11.516+0100 [DEBUG] dc1: Deploying connector +2022-04-02T08:31:12.791+0100 [ERROR] 2022-04-02T08:31:12.791+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/1072507525/namespace.yaml +2022-04-02T08:31:12.791+0100 [DEBUG] dc1: Writing secret config: file=/tmp/1072507525/secret.yaml +2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/1072507525/rbac.yaml +2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/1072507525/deployment.yaml +2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/namespace.yaml +2022-04-02T08:31:13.335+0100 [ERROR] 2022-04-02T08:31:13.335+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/secret.yaml +2022-04-02T08:31:13.340+0100 [ERROR] 2022-04-02T08:31:13.340+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/rbac.yaml +2022-04-02T08:31:13.349+0100 [ERROR] 2022-04-02T08:31:13.349+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/deployment.yaml +2022-04-02T08:31:13.366+0100 [ERROR] 2022-04-02T08:31:13.366+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=web +2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=consul-lan-serf +2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=controller-webhook +2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:32633 local_addr=web.default.svc:9090 +2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8301 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=upstreams-proxy +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul-rpc +2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8300 +2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8501 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:32633 local_addr=consul-release-controller.default.svc:8080 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:32633 local_addr=consul-ingress-gateway.consul.svc:18080 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:32633 local_addr=localhost:19443 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] +2022-04-02T08:31:15.370+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 +2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:32633 local_addr=consul-ingress-gateway.consul.svc:18443 +2022-04-02T08:31:15.372+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:31:15.372+0100 [ERROR] 2022-04-02T08:31:15.372+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml +2022-04-02T08:31:15.392+0100 [ERROR] 2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=c4bff055-8fd0-46bf-8cb5-7787f96a3772 +2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=44c19ea1-1b6a-4b0a-be29-9283b735100e +2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=50ef2855-746f-46aa-8f89-71c56c2c7c3f +2022-04-02T08:31:15.393+0100 [ERROR] 2022-04-02T08:31:15.393+0100 [DEBUG] Successfully exposed service: id=d9c5944a-fed4-45a9-947c-8ba09c344433 +2022-04-02T08:31:15.393+0100 [DEBUG] Successfully exposed service: id=2c265d3f-1dd7-44da-8382-3fba078e4643 +2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=865e314c-8a34-4980-b6d3-97dfe035f7b9 +2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=1444b229-e58a-4259-b750-bd184bcb6678 +2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=faa09547-d6be-4c53-9b5b-6466a248686b +2022-04-02T08:31:15.424+0100 [ERROR] 2022-04-02T08:31:15.424+0100 [INFO] Creating Helm chart: ref=consul +2022-04-02T08:31:15.424+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com +2022-04-02T08:31:15.538+0100 [ERROR] 2022-04-02T08:31:15.538+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:31:15.539+0100 [ERROR] 2022-04-02T08:31:15.538+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul +2022-04-02T08:31:15.650+0100 [ERROR] 2022-04-02T08:31:15.650+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz +2022-04-02T08:31:15.655+0100 [ERROR] 2022-04-02T08:31:15.655+0100 [DEBUG] Using Values: ref=consul + values= + | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | replicas:1 storage:128Mi] ui:map[enabled:true]] + +2022-04-02T08:31:15.655+0100 [DEBUG] Validate chart: ref=consul +2022-04-02T08:31:15.655+0100 [DEBUG] Run chart: ref=consul +2022-04-02T08:31:15.767+0100 [ERROR] 2022-04-02T08:31:15.767+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:31:16.311+0100 [ERROR] 2022-04-02T08:31:16.311+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" +2022-04-02T08:31:16.314+0100 [ERROR] 2022-04-02T08:31:16.314+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" +2022-04-02T08:31:16.373+0100 [ERROR] 2022-04-02T08:31:16.373+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:31:16.378+0100 [ERROR] 2022-04-02T08:31:16.377+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" +2022-04-02T08:31:16.380+0100 [ERROR] 2022-04-02T08:31:16.380+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:31:16.431+0100 [ERROR] 2022-04-02T08:31:16.431+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:31:16.436+0100 [ERROR] 2022-04-02T08:31:16.436+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" +2022-04-02T08:31:16.438+0100 [ERROR] 2022-04-02T08:31:16.438+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:31:16.491+0100 [ERROR] 2022-04-02T08:31:16.490+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:31:16.495+0100 [ERROR] 2022-04-02T08:31:16.495+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:31:16.497+0100 [ERROR] 2022-04-02T08:31:16.497+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" +2022-04-02T08:31:16.548+0100 [ERROR] 2022-04-02T08:31:16.548+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:31:16.555+0100 [ERROR] 2022-04-02T08:31:16.555+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" +2022-04-02T08:31:16.559+0100 [ERROR] 2022-04-02T08:31:16.559+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" +2022-04-02T08:31:16.559+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:16.569+0100 [ERROR] 2022-04-02T08:31:16.569+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:31:16.569+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:17.772+0100 [ERROR] 2022-04-02T08:31:17.772+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-zw4v2 namespace=cert-manager status=Pending +2022-04-02T08:31:19.044+0100 [ERROR] 2022-04-02T08:31:19.044+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:31:19.044+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:19.053+0100 [ERROR] 2022-04-02T08:31:19.053+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:31:19.055+0100 [ERROR] 2022-04-02T08:31:19.055+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:31:19.059+0100 [ERROR] 2022-04-02T08:31:19.059+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" +2022-04-02T08:31:19.517+0100 [ERROR] 2022-04-02T08:31:19.517+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:31:19.537+0100 [ERROR] 2022-04-02T08:31:19.537+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" +2022-04-02T08:31:19.541+0100 [ERROR] 2022-04-02T08:31:19.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" +2022-04-02T08:31:19.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:19.571+0100 [ERROR] 2022-04-02T08:31:19.571+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:31:19.571+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:19.776+0100 [ERROR] 2022-04-02T08:31:19.776+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False +2022-04-02T08:31:21.781+0100 [ERROR] 2022-04-02T08:31:21.781+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False +2022-04-02T08:31:21.894+0100 [ERROR] 2022-04-02T08:31:21.894+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000098] +2022-04-02T08:31:23.786+0100 [ERROR] 2022-04-02T08:31:23.786+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False +2022-04-02T08:31:25.791+0100 [ERROR] 2022-04-02T08:31:25.791+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False +2022-04-02T08:31:27.796+0100 [ERROR] 2022-04-02T08:31:27.796+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False +2022-04-02T08:31:29.802+0100 [ERROR] 2022-04-02T08:31:29.802+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:31:36.895+0100 [ERROR] 2022-04-02T08:31:36.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.000289] +2022-04-02T08:31:38.440+0100 [ERROR] 2022-04-02T08:31:38.440+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:31:38.440+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:38.447+0100 [ERROR] 2022-04-02T08:31:38.447+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:31:38.449+0100 [ERROR] 2022-04-02T08:31:38.449+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" +2022-04-02T08:31:38.504+0100 [ERROR] 2022-04-02T08:31:38.504+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:31:40.509+0100 [ERROR] 2022-04-02T08:31:40.509+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-bhkhs namespace=consul status=Pending +2022-04-02T08:31:42.514+0100 [ERROR] 2022-04-02T08:31:42.514+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-bhkhs namespace=consul type=Ready value=False +2022-04-02T08:31:44.519+0100 [ERROR] 2022-04-02T08:31:44.519+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:31:44.519+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:31:46.523+0100 [ERROR] 2022-04-02T08:31:46.523+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:31:46.523+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:31:48.529+0100 [ERROR] 2022-04-02T08:31:48.529+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:31:48.529+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Creating Helm chart: ref=prometheus +2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=zipkin +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts +2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh +2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=monitoring_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=fetch_consul_resources + source= + | #!/bin/sh -e + | + | echo "Port #{{ .Vars.port }}" + | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" + | + | #{{ if eq .Vars.acl_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | #{{end}} + | + | #{{ if eq .Vars.tls_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | #{{end}} + +2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=prometheus +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:31:50.533+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] +2022-04-02T08:31:50.533+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:32633 local_addr=prometheus-operated.monitoring.svc:9090 +2022-04-02T08:31:50.533+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:32633 local_addr=tempo.monitoring.svc:9411 +2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=grafana +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:31:50.534+0100 [DEBUG] Template content: ref=prometheus_operator_template + source= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template output: ref=monitoring_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=fetch_consul_resources + destination= + | #!/bin/sh -e + | + | echo "Port 8501" + | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | + | + | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | + | + | + | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] +2022-04-02T08:31:50.534+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=tempo +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:32633 local_addr=tempo.default.svc:3100 +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=grafana_secret_template + source= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: #{{ .Vars.monitoring_namespace }} + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:32633 local_addr=grafana.monitoring.svc:80 +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=grafana_secret_template + destination= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: monitoring + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= + +2022-04-02T08:31:50.534+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=prometheus_operator_template + destination= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:31:50.551+0100 [ERROR] 2022-04-02T08:31:50.551+0100 [DEBUG] Successfully exposed service: id=5b3be5cd-d3e8-477c-a5e0-7ae51aabcc06 +2022-04-02T08:31:50.551+0100 [ERROR] 2022-04-02T08:31:50.551+0100 [DEBUG] Successfully exposed service: id=81268bfc-ed90-4b13-9694-d8a69a89c8e3 +2022-04-02T08:31:50.556+0100 [ERROR] 2022-04-02T08:31:50.556+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 +2022-04-02T08:31:50.556+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec +2022-04-02T08:31:50.559+0100 [ERROR] 2022-04-02T08:31:50.558+0100 [DEBUG] Successfully exposed service: id=e3a0bcf3-5aaf-40d9-b5eb-c079afdbfbd0 +2022-04-02T08:31:50.561+0100 [ERROR] 2022-04-02T08:31:50.561+0100 [DEBUG] Successfully exposed service: id=15a3045e-533a-40e6-a6b4-2b5303849bb3 +2022-04-02T08:31:50.609+0100 [ERROR] 2022-04-02T08:31:50.609+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec +2022-04-02T08:31:50.612+0100 [ERROR] 2022-04-02T08:31:50.612+0100 [DEBUG] Attaching container to network: ref=5a408b458acc1a3a690a8b2b43107fcfa9feb1ab8be03017917c36bdf04403a2 network=dc1 +2022-04-02T08:31:50.620+0100 [ERROR] 2022-04-02T08:31:50.620+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec +2022-04-02T08:31:50.943+0100 [ERROR] 2022-04-02T08:31:50.943+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:31:50.943+0100 [ERROR] 2022-04-02T08:31:50.943+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack +2022-04-02T08:31:51.112+0100 [ERROR] 2022-04-02T08:31:51.111+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] +2022-04-02T08:31:51.112+0100 [ERROR] 2022-04-02T08:31:51.112+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:31:51.370+0100 [ERROR] 2022-04-02T08:31:51.370+0100 [DEBUG] Port 8501 +Fetching resources from running cluster, acls_enabled: true, tls_enabled true +2022-04-02T08:31:51.755+0100 [ERROR] 2022-04-02T08:31:51.754+0100 [DEBUG] Forcefully remove: container=5a408b458acc1a3a690a8b2b43107fcfa9feb1ab8be03017917c36bdf04403a2 +2022-04-02T08:31:51.781+0100 [ERROR] 2022-04-02T08:31:51.781+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz +2022-04-02T08:31:51.796+0100 [ERROR] 2022-04-02T08:31:51.796+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" +2022-04-02T08:31:51.796+0100 [DEBUG] Validate chart: ref=prometheus +2022-04-02T08:31:51.796+0100 [DEBUG] Run chart: ref=prometheus +2022-04-02T08:31:51.813+0100 [ERROR] 2022-04-02T08:31:51.813+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:51.863+0100 [ERROR] 2022-04-02T08:31:51.863+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:51.895+0100 [ERROR] 2022-04-02T08:31:51.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000272] +2022-04-02T08:31:51.909+0100 [ERROR] 2022-04-02T08:31:51.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:51.922+0100 [ERROR] 2022-04-02T08:31:51.921+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:51.957+0100 [ERROR] 2022-04-02T08:31:51.957+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:52.044+0100 [ERROR] 2022-04-02T08:31:52.044+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:52.055+0100 [ERROR] 2022-04-02T08:31:52.055+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:52.089+0100 [ERROR] 2022-04-02T08:31:52.089+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:52.162+0100 [ERROR] 2022-04-02T08:31:52.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" +2022-04-02T08:31:52.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" +2022-04-02T08:31:53.367+0100 [ERROR] 2022-04-02T08:31:53.367+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:53.661+0100 [ERROR] 2022-04-02T08:31:53.661+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:31:53.680+0100 [ERROR] 2022-04-02T08:31:53.680+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:53.964+0100 [ERROR] 2022-04-02T08:31:53.964+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:53.968+0100 [ERROR] 2022-04-02T08:31:53.968+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:31:53.971+0100 [ERROR] 2022-04-02T08:31:53.971+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:54.251+0100 [ERROR] 2022-04-02T08:31:54.251+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:54.256+0100 [ERROR] 2022-04-02T08:31:54.256+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:31:54.259+0100 [ERROR] 2022-04-02T08:31:54.258+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:54.543+0100 [ERROR] 2022-04-02T08:31:54.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:54.549+0100 [ERROR] 2022-04-02T08:31:54.549+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:31:54.551+0100 [ERROR] 2022-04-02T08:31:54.551+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:54.831+0100 [ERROR] 2022-04-02T08:31:54.831+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:54.836+0100 [ERROR] 2022-04-02T08:31:54.836+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:31:54.839+0100 [ERROR] 2022-04-02T08:31:54.839+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:55.122+0100 [ERROR] 2022-04-02T08:31:55.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:55.127+0100 [ERROR] 2022-04-02T08:31:55.127+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:31:55.130+0100 [ERROR] 2022-04-02T08:31:55.130+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" +2022-04-02T08:31:55.420+0100 [ERROR] 2022-04-02T08:31:55.420+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:55.425+0100 [ERROR] 2022-04-02T08:31:55.425+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" +2022-04-02T08:31:55.428+0100 [ERROR] 2022-04-02T08:31:55.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" +2022-04-02T08:31:55.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:55.445+0100 [ERROR] 2022-04-02T08:31:55.445+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:31:55.445+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:57.170+0100 [ERROR] 2022-04-02T08:31:57.170+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:31:57.170+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:57.178+0100 [ERROR] 2022-04-02T08:31:57.177+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:31:57.179+0100 [ERROR] 2022-04-02T08:31:57.179+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:31:57.184+0100 [ERROR] 2022-04-02T08:31:57.184+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:31:57.193+0100 [ERROR] 2022-04-02T08:31:57.193+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:31:57.198+0100 [ERROR] 2022-04-02T08:31:57.198+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:31:57.203+0100 [ERROR] 2022-04-02T08:31:57.203+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:31:57.209+0100 [ERROR] 2022-04-02T08:31:57.209+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:31:57.213+0100 [ERROR] 2022-04-02T08:31:57.213+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" +2022-04-02T08:31:57.402+0100 [ERROR] 2022-04-02T08:31:57.402+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:31:57.404+0100 [ERROR] 2022-04-02T08:31:57.404+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:57.680+0100 [ERROR] 2022-04-02T08:31:57.680+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:57.685+0100 [ERROR] 2022-04-02T08:31:57.685+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:31:57.688+0100 [ERROR] 2022-04-02T08:31:57.688+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:57.969+0100 [ERROR] 2022-04-02T08:31:57.969+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:57.974+0100 [ERROR] 2022-04-02T08:31:57.974+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:31:57.977+0100 [ERROR] 2022-04-02T08:31:57.977+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:58.281+0100 [ERROR] 2022-04-02T08:31:58.281+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:58.288+0100 [ERROR] 2022-04-02T08:31:58.288+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:31:58.290+0100 [ERROR] 2022-04-02T08:31:58.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:58.573+0100 [ERROR] 2022-04-02T08:31:58.573+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:58.578+0100 [ERROR] 2022-04-02T08:31:58.578+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:31:58.581+0100 [ERROR] 2022-04-02T08:31:58.581+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:31:58.867+0100 [ERROR] 2022-04-02T08:31:58.867+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:58.873+0100 [ERROR] 2022-04-02T08:31:58.873+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:31:58.876+0100 [ERROR] 2022-04-02T08:31:58.876+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" +2022-04-02T08:31:59.173+0100 [ERROR] 2022-04-02T08:31:59.173+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:31:59.177+0100 [ERROR] 2022-04-02T08:31:59.177+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" +2022-04-02T08:31:59.180+0100 [ERROR] 2022-04-02T08:31:59.180+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" +2022-04-02T08:31:59.180+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:31:59.199+0100 [ERROR] 2022-04-02T08:31:59.199+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:31:59.199+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:32:02.368+0100 [ERROR] 2022-04-02T08:32:02.368+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:32:02.368+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:32:02.375+0100 [ERROR] 2022-04-02T08:32:02.375+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:32:02.377+0100 [ERROR] 2022-04-02T08:32:02.377+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:32:02.383+0100 [ERROR] 2022-04-02T08:32:02.383+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:32:02.394+0100 [ERROR] 2022-04-02T08:32:02.394+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:32:02.400+0100 [ERROR] 2022-04-02T08:32:02.400+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:32:02.405+0100 [ERROR] 2022-04-02T08:32:02.405+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:32:02.410+0100 [ERROR] 2022-04-02T08:32:02.410+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:32:02.696+0100 [ERROR] 2022-04-02T08:32:02.696+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:32:04.703+0100 [ERROR] 2022-04-02T08:32:04.702+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-s58cf namespace=monitoring type=Ready value=False +2022-04-02T08:32:06.709+0100 [ERROR] 2022-04-02T08:32:06.708+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-s58cf namespace=monitoring type=Ready value=False +2022-04-02T08:32:06.895+0100 [ERROR] 2022-04-02T08:32:06.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.001048] +2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [INFO] Creating Helm chart: ref=loki +2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] +2022-04-02T08:32:08.715+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:32:08.715+0100 [ERROR] 2022-04-02T08:32:08.715+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:32:08.937+0100 [ERROR] 2022-04-02T08:32:08.937+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:32:08.937+0100 [ERROR] 2022-04-02T08:32:08.937+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki +2022-04-02T08:32:09.608+0100 [ERROR] 2022-04-02T08:32:09.608+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz +2022-04-02T08:32:09.609+0100 [ERROR] 2022-04-02T08:32:09.609+0100 [DEBUG] Using Values: ref=loki values=map[] +2022-04-02T08:32:09.609+0100 [DEBUG] Validate chart: ref=loki +2022-04-02T08:32:09.609+0100 [DEBUG] Run chart: ref=loki +2022-04-02T08:32:09.827+0100 [ERROR] W0402 08:32:09.827488 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:32:09.841+0100 [ERROR] 2022-04-02T08:32:09.841+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" +2022-04-02T08:32:09.850+0100 [ERROR] 2022-04-02T08:32:09.850+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" +2022-04-02T08:32:09.854+0100 [ERROR] W0402 08:32:09.854588 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:32:09.884+0100 [ERROR] 2022-04-02T08:32:09.884+0100 [INFO] Creating Helm chart: ref=promtail +2022-04-02T08:32:09.884+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:32:09.884+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:32:09.884+0100 [ERROR] 2022-04-02T08:32:09.884+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail +2022-04-02T08:32:10.539+0100 [ERROR] 2022-04-02T08:32:10.539+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz +2022-04-02T08:32:10.540+0100 [ERROR] 2022-04-02T08:32:10.540+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] +2022-04-02T08:32:10.540+0100 [DEBUG] Validate chart: ref=promtail +2022-04-02T08:32:10.540+0100 [DEBUG] Run chart: ref=promtail +2022-04-02T08:32:10.826+0100 [ERROR] 2022-04-02T08:32:10.825+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" +2022-04-02T08:32:10.835+0100 [ERROR] 2022-04-02T08:32:10.835+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" +2022-04-02T08:32:10.859+0100 [ERROR] 2022-04-02T08:32:10.859+0100 [INFO] Creating Helm chart: ref=tempo +2022-04-02T08:32:10.859+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:32:10.859+0100 [ERROR] 2022-04-02T08:32:10.859+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:32:10.860+0100 [ERROR] 2022-04-02T08:32:10.860+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo +2022-04-02T08:32:11.665+0100 [ERROR] 2022-04-02T08:32:11.664+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz +2022-04-02T08:32:11.665+0100 [ERROR] 2022-04-02T08:32:11.665+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" +2022-04-02T08:32:11.665+0100 [DEBUG] Validate chart: ref=tempo +2022-04-02T08:32:11.665+0100 [DEBUG] Run chart: ref=tempo +2022-04-02T08:32:11.940+0100 [ERROR] 2022-04-02T08:32:11.940+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" +2022-04-02T08:32:11.951+0100 [ERROR] 2022-04-02T08:32:11.951+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" +2022-04-02T08:32:11.991+0100 [ERROR] 2022-04-02T08:32:11.991+0100 [INFO] Creating Helm chart: ref=grafana +2022-04-02T08:32:11.991+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:32:11.991+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:32:11.992+0100 [ERROR] 2022-04-02T08:32:11.991+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana +2022-04-02T08:32:12.327+0100 [ERROR] 2022-04-02T08:32:12.327+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz +2022-04-02T08:32:12.329+0100 [ERROR] 2022-04-02T08:32:12.329+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" +2022-04-02T08:32:12.329+0100 [DEBUG] Validate chart: ref=grafana +2022-04-02T08:32:12.329+0100 [DEBUG] Run chart: ref=grafana +2022-04-02T08:32:12.644+0100 [ERROR] W0402 08:32:12.644421 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:32:12.647+0100 [ERROR] W0402 08:32:12.646942 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:32:12.675+0100 [ERROR] 2022-04-02T08:32:12.675+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" +2022-04-02T08:32:12.694+0100 [ERROR] 2022-04-02T08:32:12.693+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" +2022-04-02T08:32:12.698+0100 [ERROR] W0402 08:32:12.698355 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +W0402 08:32:12.698384 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:32:12.770+0100 [ERROR] 2022-04-02T08:32:12.770+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:32:12.770+0100 [DEBUG] Template content: ref=monitor_ingress_gateway + source= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: #{{ .Vars.monitoring_namespace }} + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: #{{ .Vars.consul_namespace }} + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [DEBUG] Template output: ref=monitor_ingress_gateway + destination= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: monitoring + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: consul + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] +2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:32:12.853+0100 [ERROR] 2022-04-02T08:32:12.853+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] +2022-04-02T08:32:12.853+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] +2022-04-02T08:32:12.853+0100 [INFO] Creating Helm chart: ref=consul-release-controller +2022-04-02T08:32:12.853+0100 [ERROR] 2022-04-02T08:32:12.853+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:32:12.854+0100 [ERROR] 2022-04-02T08:32:12.854+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml +2022-04-02T08:32:12.854+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:32:12.854+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:32:12.854+0100 [ERROR] 2022-04-02T08:32:12.854+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml +2022-04-02T08:32:12.855+0100 [ERROR] 2022-04-02T08:32:12.855+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" +2022-04-02T08:32:12.855+0100 [DEBUG] Validate chart: ref=consul-release-controller +2022-04-02T08:32:12.855+0100 [DEBUG] Run chart: ref=consul-release-controller +2022-04-02T08:32:12.978+0100 [ERROR] 2022-04-02T08:32:12.977+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml +2022-04-02T08:32:12.993+0100 [ERROR] 2022-04-02T08:32:12.993+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml +2022-04-02T08:32:13.049+0100 [ERROR] 2022-04-02T08:32:13.049+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml +2022-04-02T08:32:13.064+0100 [ERROR] 2022-04-02T08:32:13.064+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml +2022-04-02T08:32:13.148+0100 [ERROR] 2022-04-02T08:32:13.148+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml +2022-04-02T08:32:13.156+0100 [ERROR] 2022-04-02T08:32:13.156+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml +2022-04-02T08:32:13.236+0100 [ERROR] 2022-04-02T08:32:13.236+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" +2022-04-02T08:32:13.247+0100 [ERROR] 2022-04-02T08:32:13.247+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" +2022-04-02T08:32:13.376+0100 [ERROR] 2022-04-02T08:32:13.375+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" +2022-04-02T08:32:13.404+0100 [ERROR] 2022-04-02T08:32:13.404+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 +2022-04-02T08:32:13.404+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec +2022-04-02T08:32:13.674+0100 [ERROR] 2022-04-02T08:32:13.674+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec +2022-04-02T08:32:13.678+0100 [ERROR] 2022-04-02T08:32:13.678+0100 [DEBUG] Attaching container to network: ref=6a3e025fc3c613189828d689766e3dcce0db016edd7ba4ad7490a81ab03920af network=dc1 +2022-04-02T08:32:13.686+0100 [ERROR] 2022-04-02T08:32:13.686+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec +2022-04-02T08:32:14.813+0100 [ERROR] 2022-04-02T08:32:14.812+0100 [DEBUG] Forcefully remove: container=6a3e025fc3c613189828d689766e3dcce0db016edd7ba4ad7490a81ab03920af +2022-04-02T08:32:15.499+0100 [ERROR] 2022-04-02T08:32:15.499+0100 [DEBUG] Health check urls for browser windows: count=0 +2022-04-02T08:32:15.499+0100 [DEBUG] Browser windows open + +######################################################## + +Title Development setup +Author Nic Jackson +2022-04-02T08:32:15.499+0100 [ERROR] +• Consul: https://localhost:8501 +• Grafana: https://localhost:8080 +• Application: http://localhost:18080 +2022-04-02T08:32:15.499+0100 [ERROR] +2022-04-02T08:32:15.499+0100 [ERROR] This blueprint defines 13 output variables. +2022-04-02T08:32:15.499+0100 [ERROR] +You can set output variables as environment variables for your current terminal session using the following command: +2022-04-02T08:32:15.499+0100 [ERROR] eval $(shipyard env) + +To list output variables use the command: + +shipyard output +2022-04-02T08:32:16.122+0100 [INFO] Starting controller +2022-04-02T08:32:20.658+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:32:20.658+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_fail +2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_fail +2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_fail +2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Deploy: state=state_deploy +2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy +2022-04-02T08:32:20.667+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:20.671+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:32:20.671+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:21.672+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:21.675+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:21.675+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:22.676+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:22.679+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:22.679+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:23.679+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:23.682+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:23.682+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:24.683+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:24.685+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:24.685+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:25.658+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-02T08:32:25.659+0100 [DEBUG] runtime-plugin-kubernetes: No candidate deployment, nothing to do +2022-04-02T08:32:25.659+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:32:25.662+0100 [DEBUG] releaser-plugin-consul: Service not healthy, retrying: name=api +2022-04-02T08:32:25.662+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:32:25.665+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceSplitter: name=api error="Put \"https://127.0.0.1:8501/v1/config\": x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"Consul Agent CA\")" +2022-04-02T08:32:25.665+0100 [ERROR] statemachine: Deploy completed with error: error="Put \"https://127.0.0.1:8501/v1/config\": x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"Consul Agent CA\")" +2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_deploy +2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_deploy +2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail +2022-04-02T08:32:25.685+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:25.689+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:25.689+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:26.689+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:26.692+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:26.692+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:27.692+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:27.695+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:27.695+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:28.695+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:28.698+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:28.698+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:29.699+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:29.702+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:29.702+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:30.703+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:30.707+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:30.707+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:31.707+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:31.711+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:31.711+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:32.712+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:32.715+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:32.715+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:33.715+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:33.718+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:33.718+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:34.718+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:34.722+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:34.722+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:35.722+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:35.727+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:35.727+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:36.728+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:36.731+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:36.731+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:37.731+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:37.734+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:37.734+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:38.735+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:38.739+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:38.739+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:39.740+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:39.743+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:39.743+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:40.743+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:40.747+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:40.747+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:41.747+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:41.750+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:41.750+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:42.750+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:42.753+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:42.753+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:43.754+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:43.757+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:43.757+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:44.757+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:44.760+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:32:44.760+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:32:45.760+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:45.763+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:32:45.763+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:32:45.774+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:32:45.777+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:32:45.777+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:33:15.836+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:15.839+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start +2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start +2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Configure: state=state_configure +2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure +2022-04-02T08:33:15.842+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api +2022-04-02T08:33:15.842+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api +2022-04-02T08:33:16.839+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:16.842+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:17.843+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:17.845+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:18.845+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:18.848+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:18.865+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api +2022-04-02T08:33:19.849+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:19.851+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:19.873+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api +2022-04-02T08:33:20.852+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:20.855+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:20.880+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api +2022-04-02T08:33:21.856+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:21.858+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:21.887+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api +2022-04-02T08:33:22.859+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:22.862+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:23.862+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:23.865+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:24.866+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:24.868+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:25.869+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:25.871+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:26.872+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:26.874+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found +2022-04-02T08:33:26.895+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-02T08:33:26.899+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default +2022-04-02T08:33:26.905+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default +2022-04-02T08:33:26.910+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:26.912+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:33:26.912+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:27.874+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:27.878+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:27.878+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:27.913+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:27.916+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:27.916+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:28.878+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:28.881+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:28.881+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:28.917+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:28.921+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:28.921+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:29.882+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:29.886+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:29.886+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:29.921+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:29.925+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:29.925+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:30.886+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:30.889+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:30.889+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:30.926+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:30.929+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:30.929+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:31.890+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:31.892+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:31.892+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:31.929+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:31.932+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:31.932+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:32.893+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:32.896+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:32.896+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:32.933+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:32.937+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:32.937+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:33.896+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:33.899+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:33.899+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:33.937+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:33.940+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:33.940+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:34.899+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:34.902+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:34.902+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:34.940+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:34.943+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:34.943+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:35.903+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:35.907+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:35.907+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:35.944+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:35.946+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:35.946+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:36.908+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:36.911+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:36.911+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:36.947+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:36.949+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:36.949+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:37.911+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:37.914+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:37.914+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:37.950+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:37.953+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:37.953+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:38.915+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:38.918+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:38.918+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:38.954+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:38.957+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:38.957+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:39.919+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:39.922+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:39.922+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:39.958+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:39.960+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:39.960+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:40.923+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:40.925+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:40.925+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:40.961+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:40.964+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:40.964+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:41.926+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:41.929+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:41.929+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:41.965+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:41.968+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=1 desired_replicas=3 +2022-04-02T08:33:41.968+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.929+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.932+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:33:42.932+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.968+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.971+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:33:42.971+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.971+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default +2022-04-02T08:33:42.971+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default +2022-04-02T08:33:42.971+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:33:42.974+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:33:47.984+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default +2022-04-02T08:33:47.993+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:33:47.993+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2156]" +2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Configure completed successfully +2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure +2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure +2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle +2022-04-02T08:33:48.978+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:33:48.996+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:33:48.996+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle +2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle +2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle +2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Deploy: state=state_deploy +2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy +2022-04-02T08:33:48.999+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:49.003+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:33:49.003+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:50.003+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:50.006+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:50.006+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:51.006+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:51.009+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:51.009+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:52.009+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:52.012+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:52.012+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:53.013+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:53.016+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:53.016+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:53.997+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-02T08:33:54.000+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default +2022-04-02T08:33:54.000+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:33:54.002+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Deploy completed, executing strategy +2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy +2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy +2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor +2022-04-02T08:33:54.006+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 +2022-04-02T08:33:54.006+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 +2022-04-02T08:33:54.017+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:54.020+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:54.020+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:55.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:55.024+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:55.024+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:56.025+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:56.028+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:56.028+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:57.028+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:57.031+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:57.031+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:58.032+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:58.035+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:58.035+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:33:59.036+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:33:59.039+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:33:59.039+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:00.039+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:00.042+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:34:00.042+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:01.043+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:01.046+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:34:01.046+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:02.046+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:02.050+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:34:02.050+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:03.050+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:03.053+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:34:03.053+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:04.053+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:04.056+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 +2022-04-02T08:34:04.056+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:34:05.058+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:05.061+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:34:05.061+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:34:05.069+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-02T08:34:05.072+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:34:05.072+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-02T08:34:05.081+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:34:05.084+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:34:05.084+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:34:05.088+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:10.089+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:15.089+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:20.090+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:24.007+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 +2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-02T08:34:24.007+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 +2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-02T08:34:24.011+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 +2022-04-02T08:34:25.091+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:30.092+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:35.093+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:40.094+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:45.095+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:50.096+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:34:54.012+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:34:54.012+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:34:54.017+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 56.3049965043655 @[1648884894.012]"] value_type=model.Vector warnings=[] +2022-04-02T08:34:54.017+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=56 +2022-04-02T08:34:54.017+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 56" +2022-04-02T08:34:55.097+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:00.099+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:05.100+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:10.101+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:15.102+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:20.102+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:24.017+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:35:24.017+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:35:24.019+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50 @[1648884924.018]"] value_type=model.Vector warnings=[] +2022-04-02T08:35:24.019+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 +2022-04-02T08:35:24.019+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" +2022-04-02T08:35:25.103+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:30.105+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:35.105+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:40.107+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:45.108+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:50.109+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:35:54.020+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:35:54.020+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:35:54.023+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 49.86816018822463 @[1648884954.021]"] value_type=model.Vector warnings=[] +2022-04-02T08:35:54.023+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=49 +2022-04-02T08:35:54.023+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 49" +2022-04-02T08:35:55.109+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:00.111+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:05.111+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:10.112+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:15.113+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:20.114+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:24.024+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:36:24.024+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:36:24.026+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50 @[1648884984.024]"] value_type=model.Vector warnings=[] +2022-04-02T08:36:24.026+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 +2022-04-02T08:36:24.026+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" +2022-04-02T08:36:25.115+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:30.116+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:35.117+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:40.119+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:45.120+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:50.120+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:54.026+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-02T08:36:54.027+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-02T08:36:54.029+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50.4132678214597 @[1648885014.027]"] value_type=model.Vector warnings=[] +2022-04-02T08:36:54.029+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 +2022-04-02T08:36:54.029+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" +2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Monitor checks completed, candidate unhealthy +2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Handle event: event=event_unhealthy state=state_monitor +2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Log state: event=event_unhealthy state=state_monitor +2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Rollback: state=state_rollback +2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Log state: event=event_unhealthy release=api state=state_rollback +2022-04-02T08:36:54.029+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-02T08:36:55.121+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:36:59.037+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default +2022-04-02T08:36:59.051+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:36:59.051+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2620]" +2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_rollback +2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_rollback +2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle +2022-04-02T08:37:00.122+0100 [INFO] release_handler: Release GET handler called +2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Handle event: event=event_destroy state=state_idle +2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Log state: event=event_destroy state=state_idle +2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Destroy: state=state_destroy +2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Log state: event=event_destroy release=api state=state_destroy +2022-04-02T08:37:00.158+0100 [INFO] runtime-plugin-kubernetes: Restore original deployment: name=api-deployment namespace=default +2022-04-02T08:37:00.161+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing candidate deployment: name=api-deployment namespace=default +2022-04-02T08:37:00.168+0100 [DEBUG] runtime-plugin-kubernetes: Clone primary to create original deployment: name=api-deployment namespace=default +2022-04-02T08:37:00.179+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:37:00.186+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:00.189+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-02T08:37:00.189+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:01.190+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:01.193+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:01.193+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:02.193+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:02.196+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:02.196+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:03.197+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:03.200+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:03.200+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:04.201+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:04.204+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:04.204+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:05.205+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:05.208+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:05.208+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:06.209+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:06.212+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:06.212+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:07.212+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:07.216+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:07.216+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:08.216+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:08.219+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:08.219+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:09.220+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:09.223+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:09.223+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:10.224+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:10.227+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:10.227+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:11.227+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:11.230+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:11.230+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:12.231+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:12.235+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:12.235+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:13.236+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:13.239+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:13.239+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:14.240+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:14.244+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-02T08:37:14.244+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:15.245+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:15.250+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 +2022-04-02T08:37:15.250+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:16.250+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:16.253+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 +2022-04-02T08:37:16.253+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:17.253+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:17.257+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 +2022-04-02T08:37:17.257+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:18.257+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:18.260+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 +2022-04-02T08:37:18.260+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:19.260+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:19.263+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 +2022-04-02T08:37:19.263+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-02T08:37:20.264+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:20.267+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:37:20.267+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:37:20.267+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-02T08:37:20.270+0100 [DEBUG] releaser-plugin-consul: Service not healthy, retrying: name=api +2022-04-02T08:37:20.270+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 +2022-04-02T08:37:25.274+0100 [INFO] runtime-plugin-kubernetes: Remove primary deployment: name=api-deployment namespace=default +2022-04-02T08:37:25.279+0100 [INFO] releaser-plugin-consul: Remove Consul config: name=api +2022-04-02T08:37:25.279+0100 [DEBUG] releaser-plugin-consul: Delete splitter: name=api +2022-04-02T08:37:26.283+0100 [DEBUG] releaser-plugin-consul: Cleanup router: name=api +2022-04-02T08:37:27.290+0100 [DEBUG] releaser-plugin-consul: Cleanup upstream router: name=api +2022-04-02T08:37:28.301+0100 [DEBUG] releaser-plugin-consul: Cleanup resolver: name=api +2022-04-02T08:37:29.313+0100 [DEBUG] releaser-plugin-consul: Cleanup service intentions: name=api +2022-04-02T08:37:30.324+0100 [DEBUG] releaser-plugin-consul: Cleanup defaults: name=api +2022-04-02T08:37:30.326+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_destroy +2022-04-02T08:37:30.326+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_destroy +2022-04-02T08:37:30.327+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle +2022-04-02T08:37:32.206+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-02T08:37:32.209+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-02T08:37:32.209+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-02T08:37:32.225+0100 [INFO] Shutting down server gracefully +2022-04-02T08:37:32.226+0100 [INFO] Shutting down listener +2022-04-02T08:37:32.226+0100 [INFO] Shutting down metrics +2022-04-02T08:37:32.227+0100 [INFO] Shutting down kubernetes controller +2022-04-02T08:37:32.227+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller +2022-04-02T08:38:16.782+0100 [ERROR] 2022-04-02T08:38:16.782+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs +2022-04-02T08:38:18.828+0100 [ERROR] 2022-04-02T08:38:18.828+0100 [DEBUG] Starting Ingress +2022-04-02T08:38:18.828+0100 [ERROR] Running configuration from: ./shipyard/kubernetes + +2022-04-02T08:38:18.828+0100 [DEBUG] Statefile does not exist +2022-04-02T08:38:21.828+0100 [ERROR] 2022-04-02T08:38:21.828+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes +2022-04-02T08:38:21.828+0100 [DEBUG] Statefile does not exist +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=UPSTREAMS +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR +2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR +2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_values + source= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: #{{ .Vars.datacenter }} + | + | acls: + | manageSystemACLs: #{{ .Vars.acl_enabled }} + | tls: + | enabled: #{{ .Vars.tls_enabled }} + | enableAutoEncrypt: #{{ .Vars.tls_enabled }} + | httpsOnly: false + | + | federation: + | enabled: #{{ .Vars.federation_enabled }} + | createFederationSecret: #{{ .Vars.create_federation_secret }} + | + | image: #{{ .Vars.consul_image }} + | + | imageK8S: #{{ .Vars.consul_k8s_image }} + | + | imageEnvoy: #{{ .Vars.consul_envoy_image }} + | + | metrics: + | enabled: #{{ .Vars.metrics_enabled }} + | enableAgentMetrics: #{{ .Vars.metrics_enabled }} + | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} + | + | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} + | + | transparentProxy: + | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: #{{ .Vars.ingress_gateway_enabled }} + | defaults: + | replicas: 1 + | service: + | ports: + | #{{ range .Vars.ingress_gateway_ports }} + | - port: #{{ . }} + | nodePort: null + | #{{ end }} + | + | + | meshGateway: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | replicas: 1 + | + | wanAddress: + | source: Static + | static: #{{ .Vars.mesh_gateway_address }} + | port: 30443 + | + | service: + | enabled: #{{ .Vars.mesh_gateway_enabled }} + | type: NodePort + | nodePort: 30443 +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TLS_KEY +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD +2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh +2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=certs_script + source= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=certs_script + destination= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key + +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TLS_CERT +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_proxy_defaults + source= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } + +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_CAKEY +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml +2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=controller_values + source= + | controller: + | enabled: "#{{ .Vars.controller_enabled }}" + | container_config: + | image: + | repository: "#{{ .Vars.controller_repo }}" + | tag: "#{{ .Vars.controller_version }}" + | autoencrypt: + | enabled: #{{ .Vars.tls_enabled }} + | acls: + | enabled: #{{ .Vars.acls_enabled }} + | #{{- if eq .Vars.controller_enabled false }} + | webhook: + | service: controller-webhook + | namespace: shipyard + | #{{ end }} +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_proxy_defaults + destination= + | --- + | apiVersion: consul.hashicorp.com/v1alpha1 + | kind: ProxyDefaults + | metadata: + | name: global + | spec: + | config: + | envoy_prometheus_bind_addr: '0.0.0.0:9102' + | envoy_extra_static_clusters_json: > + | { + | "name": "tempo", + | "type": "STRICT_DNS", + | "connect_timeout": "3.000s", + | "lb_policy": "ROUND_ROBIN", + | "load_assignment": { + | "cluster_name": "tempo", + | "endpoints": [ + | { + | "lb_endpoints": [ + | { + | "endpoint": { + | "address": { + | "socket_address": { + | "address": "tempo.monitoring.svc", + | "port_value": 9411 + | } + | } + | } + | } + | ] + | } + | ] + | } + | } + | envoy_tracing_json: > + | { + | "http": { + | "name": "envoy.tracers.zipkin", + | "typedConfig": { + | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", + | "collector_cluster": "tempo", + | "collector_endpoint_version": "HTTP_JSON", + | "collector_endpoint": "/api/v1/spans", + | "shared_span_context": false + | } + | } + | } + +2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR +2022-04-02T08:38:26.503+0100 [INFO] Creating Network: ref=dc1 +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=KUBECONFIG +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_USER +2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_CACERT +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=controller_values + destination= + | controller: + | enabled: "false" + | container_config: + | image: + | repository: "nicholasjackson/consul-release-controller" + | tag: "" + | autoencrypt: + | enabled: true + | acls: + | enabled: true + | webhook: + | service: controller-webhook + | namespace: shipyard + | +2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_values + destination= + | # Available parameters and their default values for the Consul chart. + | # Server, when enabled, configures a server cluster to run. This should + | # be disabled if you plan on connecting to a Consul cluster external to + | # the Kube cluster. + | global: + | # image: hashicorpdev/consul + | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest + | name: consul + | + | datacenter: dc1 + | + | acls: + | manageSystemACLs: true + | tls: + | enabled: true + | enableAutoEncrypt: true + | httpsOnly: false + | + | federation: + | enabled: false + | createFederationSecret: false + | + | image: hashicorp/consul:1.11.3 + | + | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 + | + | imageEnvoy: envoyproxy/envoy:v1.20.1 + | + | metrics: + | enabled: true + | enableAgentMetrics: true + | enableGatewayMetrics: true + | + | logLevel: "info" + | + | server: + | replicas: 1 + | bootstrapExpect: 1 + | + | storage: 128Mi + | + | extraConfig: | + | { + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | + | controller: + | enabled: true + | ui: + | enabled: true + | connectInject: + | enabled: true + | default: false # true will inject by default, otherwise requires annotation + | failurePolicy: "Ignore" + | replicas: 1 + | envoyExtraArgs: null + | + | transparentProxy: + | defaultEnabled: false + | + | # Requires Consul v1.5+ and consul-k8s v0.8.1+ + | centralConfig: + | enabled: true + | + | ingressGateways: + | enabled: true + | defaults: + | replicas: 1 + | service: + | ports: + | + | - port: 18080 + | nodePort: null + | + | - port: 18443 + | nodePort: null + | + | + | + | meshGateway: + | enabled: false + | replicas: 1 + | + | wanAddress: + | source: Static + | static: dc1.k8s-cluster.shipyard.run + | port: 30443 + | + | service: + | enabled: false + | type: NodePort + | nodePort: 30443 +2022-04-02T08:38:26.504+0100 [ERROR] 2022-04-02T08:38:26.504+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 +2022-04-02T08:38:26.532+0100 [ERROR] 2022-04-02T08:38:26.532+0100 [INFO] Creating ImageCache: ref=docker-cache +2022-04-02T08:38:26.534+0100 [ERROR] 2022-04-02T08:38:26.534+0100 [DEBUG] Connecting cache to network: name=network.dc1 +2022-04-02T08:38:26.535+0100 [ERROR] 2022-04-02T08:38:26.535+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:38:26.554+0100 [ERROR] 2022-04-02T08:38:26.554+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:38:26.554+0100 [DEBUG] Creating Docker Container: ref=54515060-import +2022-04-02T08:38:29.265+0100 [ERROR] 2022-04-02T08:38:29.265+0100 [DEBUG] Forcefully remove: container=a8e614bd79d9e7cec397b299236664a208ab2b4c7d342773b196e8c50be2269a +2022-04-02T08:38:29.683+0100 [ERROR] 2022-04-02T08:38:29.683+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 +2022-04-02T08:38:29.683+0100 [DEBUG] Creating Docker Container: ref=docker-cache +2022-04-02T08:38:29.739+0100 [ERROR] 2022-04-02T08:38:29.739+0100 [DEBUG] Remove container from default networks: ref=docker-cache +2022-04-02T08:38:29.743+0100 [ERROR] 2022-04-02T08:38:29.743+0100 [DEBUG] Attaching container to network: ref=f6996541b1a7da01c14e377112a71fcbee017f1b9e8d5f1ff779c90497690485 network=dc1 +2022-04-02T08:38:29.753+0100 [ERROR] 2022-04-02T08:38:29.753+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache +2022-04-02T08:38:30.257+0100 [ERROR] 2022-04-02T08:38:30.256+0100 [INFO] dc1: Creating Cluster: ref=dc1 +2022-04-02T08:38:30.279+0100 [ERROR] 2022-04-02T08:38:30.278+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 +2022-04-02T08:38:30.280+0100 [ERROR] 2022-04-02T08:38:30.280+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-02T08:38:30.280+0100 [ERROR] 2022-04-02T08:38:30.280+0100 [DEBUG] Creating Docker Container: ref=server.dc1 +2022-04-02T08:38:30.334+0100 [ERROR] 2022-04-02T08:38:30.334+0100 [DEBUG] Remove container from default networks: ref=server.dc1 +2022-04-02T08:38:30.337+0100 [ERROR] 2022-04-02T08:38:30.337+0100 [DEBUG] Attaching container to network: ref=37b6bbefd7b2edf86e8d376a3e650e8a42b7093c1aac72919acdc693714a10cf network=dc1 +2022-04-02T08:38:30.342+0100 [ERROR] 2022-04-02T08:38:30.342+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 +2022-04-02T08:38:32.995+0100 [ERROR] 2022-04-02T08:38:32.995+0100 [DEBUG] Copying file from: id=37b6bbefd7b2edf86e8d376a3e650e8a42b7093c1aac72919acdc693714a10cf src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:38:33.034+0100 [ERROR] 2022-04-02T08:38:33.034+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:35.044+0100 [ERROR] 2022-04-02T08:38:35.044+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:36.829+0100 [ERROR] 2022-04-02T08:38:36.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000826] +2022-04-02T08:38:37.047+0100 [ERROR] 2022-04-02T08:38:37.047+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:39.050+0100 [ERROR] 2022-04-02T08:38:39.050+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:41.054+0100 [ERROR] 2022-04-02T08:38:41.054+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:43.058+0100 [ERROR] 2022-04-02T08:38:43.058+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:45.062+0100 [ERROR] 2022-04-02T08:38:45.062+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:47.065+0100 [ERROR] 2022-04-02T08:38:47.065+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:49.069+0100 [ERROR] 2022-04-02T08:38:49.069+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-gwrmw namespace=kube-system status=Pending +2022-04-02T08:38:51.073+0100 [ERROR] 2022-04-02T08:38:51.073+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-02T08:38:51.073+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:38:51.829+0100 [ERROR] 2022-04-02T08:38:51.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000979] +2022-04-02T08:38:53.077+0100 [ERROR] 2022-04-02T08:38:53.077+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-02T08:38:53.077+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run +2022-04-02T08:38:53.094+0100 [ERROR] 2022-04-02T08:38:53.094+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-02T08:38:53.094+0100 [DEBUG] Creating Docker Container: ref=94770021-import +2022-04-02T08:38:55.706+0100 [ERROR] 2022-04-02T08:38:55.706+0100 [DEBUG] Forcefully remove: container=f6d6e6617de51861365ed1334669722bcbfd67a57c6871225938d289d69907e9 +2022-04-02T08:38:56.094+0100 [ERROR] 2022-04-02T08:38:56.094+0100 [DEBUG] dc1: Deploying connector +2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/391914446/namespace.yaml +2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing secret config: file=/tmp/391914446/secret.yaml +2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/391914446/rbac.yaml +2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/391914446/deployment.yaml +2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/namespace.yaml +2022-04-02T08:38:58.169+0100 [ERROR] 2022-04-02T08:38:58.169+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/secret.yaml +2022-04-02T08:38:58.176+0100 [ERROR] 2022-04-02T08:38:58.176+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/rbac.yaml +2022-04-02T08:38:58.183+0100 [ERROR] 2022-04-02T08:38:58.183+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/deployment.yaml +2022-04-02T08:38:58.198+0100 [ERROR] 2022-04-02T08:38:58.198+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] +2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=upstreams-proxy +2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=web +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:30577 local_addr=consul-release-controller.default.svc:8080 +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-rpc +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=controller-webhook +2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-lan-serf +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] +2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:30577 local_addr=localhost:19443 +2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:30577 local_addr=web.default.svc:9090 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8300 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8301 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 +2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:30577 local_addr=consul-ingress-gateway.consul.svc:18080 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:30577 local_addr=consul-ingress-gateway.consul.svc:18443 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul +2022-04-02T08:39:00.203+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8501 +2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-02T08:39:00.222+0100 [ERROR] 2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=5165c57e-37ed-4a04-9294-e8bd4997fb68 +2022-04-02T08:39:00.223+0100 [ERROR] 2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=c383235b-8767-4d83-81d9-d976fe1a3886 +2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=04a2c7c6-e60f-46d8-9003-df82f7622726 +2022-04-02T08:39:00.225+0100 [ERROR] 2022-04-02T08:39:00.225+0100 [DEBUG] Successfully exposed service: id=de30d4c2-08e5-4064-acea-bdfc76c9d697 +2022-04-02T08:39:00.225+0100 [DEBUG] Successfully exposed service: id=832a43de-db62-4200-a441-f0e5a712b49b +2022-04-02T08:39:00.226+0100 [ERROR] 2022-04-02T08:39:00.226+0100 [DEBUG] Successfully exposed service: id=4dc3ab26-f73b-4022-9bee-9413290abbb9 +2022-04-02T08:39:00.226+0100 [DEBUG] Successfully exposed service: id=7f15ab98-a1de-403e-b519-39dd623fbadb +2022-04-02T08:39:00.227+0100 [ERROR] 2022-04-02T08:39:00.227+0100 [DEBUG] Successfully exposed service: id=341f839f-1806-409f-8463-36365d7490ec +2022-04-02T08:39:00.262+0100 [ERROR] 2022-04-02T08:39:00.262+0100 [INFO] Creating Helm chart: ref=consul +2022-04-02T08:39:00.262+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com +2022-04-02T08:39:00.392+0100 [ERROR] 2022-04-02T08:39:00.392+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:00.393+0100 [ERROR] 2022-04-02T08:39:00.393+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul +2022-04-02T08:39:00.489+0100 [ERROR] 2022-04-02T08:39:00.489+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz +2022-04-02T08:39:00.494+0100 [ERROR] 2022-04-02T08:39:00.494+0100 [DEBUG] Using Values: ref=consul + values= + | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ + | "ui_config": { + | "enabled": true, + | "metrics_provider": "prometheus", + | "metrics_proxy": { + | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" + | } + | } + | } + | replicas:1 storage:128Mi] ui:map[enabled:true]] + +2022-04-02T08:39:00.494+0100 [DEBUG] Validate chart: ref=consul +2022-04-02T08:39:00.494+0100 [DEBUG] Run chart: ref=consul +2022-04-02T08:39:00.595+0100 [ERROR] 2022-04-02T08:39:00.595+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:39:01.158+0100 [ERROR] 2022-04-02T08:39:01.158+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" +2022-04-02T08:39:01.160+0100 [ERROR] 2022-04-02T08:39:01.160+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" +2022-04-02T08:39:01.212+0100 [ERROR] 2022-04-02T08:39:01.212+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:39:01.216+0100 [ERROR] 2022-04-02T08:39:01.216+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" +2022-04-02T08:39:01.217+0100 [ERROR] 2022-04-02T08:39:01.217+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:39:01.267+0100 [ERROR] 2022-04-02T08:39:01.267+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:39:01.271+0100 [ERROR] 2022-04-02T08:39:01.271+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" +2022-04-02T08:39:01.274+0100 [ERROR] 2022-04-02T08:39:01.274+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-02T08:39:01.324+0100 [ERROR] 2022-04-02T08:39:01.324+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:39:01.329+0100 [ERROR] 2022-04-02T08:39:01.329+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:39:01.331+0100 [ERROR] 2022-04-02T08:39:01.331+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" +2022-04-02T08:39:01.383+0100 [ERROR] 2022-04-02T08:39:01.383+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:39:01.390+0100 [ERROR] 2022-04-02T08:39:01.389+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" +2022-04-02T08:39:01.395+0100 [ERROR] 2022-04-02T08:39:01.394+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" +2022-04-02T08:39:01.394+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:01.408+0100 [ERROR] 2022-04-02T08:39:01.407+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:39:01.408+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:02.600+0100 [ERROR] 2022-04-02T08:39:02.600+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-bwdbb namespace=cert-manager status=Pending +2022-04-02T08:39:03.700+0100 [ERROR] 2022-04-02T08:39:03.700+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:39:03.700+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:03.709+0100 [ERROR] 2022-04-02T08:39:03.709+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-02T08:39:03.711+0100 [ERROR] 2022-04-02T08:39:03.711+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-02T08:39:03.715+0100 [ERROR] 2022-04-02T08:39:03.715+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" +2022-04-02T08:39:04.132+0100 [ERROR] 2022-04-02T08:39:04.131+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-02T08:39:04.135+0100 [ERROR] 2022-04-02T08:39:04.135+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" +2022-04-02T08:39:04.138+0100 [ERROR] 2022-04-02T08:39:04.138+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" +2022-04-02T08:39:04.138+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:04.153+0100 [ERROR] 2022-04-02T08:39:04.153+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:39:04.153+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:04.605+0100 [ERROR] 2022-04-02T08:39:04.605+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False +2022-04-02T08:39:06.610+0100 [ERROR] 2022-04-02T08:39:06.610+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False +2022-04-02T08:39:06.829+0100 [ERROR] 2022-04-02T08:39:06.828+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000112] +2022-04-02T08:39:08.616+0100 [ERROR] 2022-04-02T08:39:08.616+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False +2022-04-02T08:39:10.621+0100 [ERROR] 2022-04-02T08:39:10.621+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False +2022-04-02T08:39:12.626+0100 [ERROR] 2022-04-02T08:39:12.626+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False +2022-04-02T08:39:14.631+0100 [ERROR] 2022-04-02T08:39:14.631+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-02T08:39:21.829+0100 [ERROR] 2022-04-02T08:39:21.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001048] +2022-04-02T08:39:22.792+0100 [ERROR] 2022-04-02T08:39:22.792+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:39:22.792+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:22.802+0100 [ERROR] 2022-04-02T08:39:22.802+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-02T08:39:22.804+0100 [ERROR] 2022-04-02T08:39:22.804+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" +2022-04-02T08:39:22.871+0100 [ERROR] 2022-04-02T08:39:22.871+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:39:24.876+0100 [ERROR] 2022-04-02T08:39:24.876+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-km4s4 namespace=consul status=Pending +2022-04-02T08:39:26.881+0100 [ERROR] 2022-04-02T08:39:26.881+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-02T08:39:26.881+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:39:28.886+0100 [ERROR] 2022-04-02T08:39:28.886+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-02T08:39:28.886+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:39:30.891+0100 [ERROR] 2022-04-02T08:39:30.891+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-02T08:39:30.891+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=grafana +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh +2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=fetch_consul_resources + source= + | #!/bin/sh -e + | + | echo "Port #{{ .Vars.port }}" + | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" + | + | #{{ if eq .Vars.acl_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | #{{end}} + | + | #{{ if eq .Vars.tls_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | #{{end}} +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:30577 local_addr=grafana.monitoring.svc:80 +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=grafana_secret_template + source= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: #{{ .Vars.monitoring_namespace }} + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= + +2022-04-02T08:39:32.897+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=tempo +2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=zipkin +2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=prometheus_operator_template + source= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: #{{ .Vars.monitoring_namespace }} + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=grafana_secret_template + destination= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: monitoring + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:30577 local_addr=tempo.default.svc:3100 +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:30577 local_addr=tempo.monitoring.svc:9411 +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=fetch_consul_resources + destination= + | #!/bin/sh -e + | + | echo "Port 8501" + | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | + | + | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | + | + | + | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=prometheus_operator_template + destination= + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | app: metrics + | jobLabel: applications + | endpoints: + | - port: metrics + | interval: 15s + | namespaceSelector: + | matchNames: + | - default + | + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: PodMonitor + | metadata: + | name: applications + | namespace: monitoring + | labels: + | app: applications + | release: prometheus + | spec: + | selector: + | matchLabels: + | metrics: enabled + | podMetricsEndpoints: + | - port: "9102" +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" +2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=prometheus +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:30577 local_addr=prometheus-operated.monitoring.svc:9090 +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Creating Helm chart: ref=prometheus +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:39:32.898+0100 [DEBUG] Template content: ref=monitoring_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts +2022-04-02T08:39:32.898+0100 [DEBUG] Template output: ref=monitoring_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-02T08:39:32.921+0100 [ERROR] 2022-04-02T08:39:32.921+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 +2022-04-02T08:39:32.921+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec +2022-04-02T08:39:32.922+0100 [ERROR] 2022-04-02T08:39:32.921+0100 [DEBUG] Successfully exposed service: id=a66636be-a025-4d41-906a-b68fc9386da3 +2022-04-02T08:39:32.922+0100 [ERROR] 2022-04-02T08:39:32.922+0100 [DEBUG] Successfully exposed service: id=4712ed66-bd4d-4aee-a4fe-a7a5a5032cda +2022-04-02T08:39:32.924+0100 [ERROR] 2022-04-02T08:39:32.924+0100 [DEBUG] Successfully exposed service: id=265a4e71-6c4f-49e5-8b58-340fbe41daaa +2022-04-02T08:39:32.924+0100 [ERROR] 2022-04-02T08:39:32.924+0100 [DEBUG] Successfully exposed service: id=c0bf3fb5-ca65-42ad-adf7-40e32b574b0a +2022-04-02T08:39:32.978+0100 [ERROR] 2022-04-02T08:39:32.978+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec +2022-04-02T08:39:32.982+0100 [ERROR] 2022-04-02T08:39:32.982+0100 [DEBUG] Attaching container to network: ref=f01b322cf48d4b4862d9adfbb3e33a0363798a93e6a88cc82b753c7612f1ddc7 network=dc1 +2022-04-02T08:39:32.989+0100 [ERROR] 2022-04-02T08:39:32.989+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec +2022-04-02T08:39:33.292+0100 [ERROR] 2022-04-02T08:39:33.292+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:33.292+0100 [ERROR] 2022-04-02T08:39:33.292+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack +2022-04-02T08:39:33.465+0100 [ERROR] 2022-04-02T08:39:33.465+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] +2022-04-02T08:39:33.465+0100 [ERROR] 2022-04-02T08:39:33.465+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-02T08:39:33.768+0100 [ERROR] 2022-04-02T08:39:33.768+0100 [DEBUG] Port 8501 +Fetching resources from running cluster, acls_enabled: true, tls_enabled true +2022-04-02T08:39:34.070+0100 [ERROR] 2022-04-02T08:39:34.070+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz +2022-04-02T08:39:34.083+0100 [ERROR] 2022-04-02T08:39:34.083+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" +2022-04-02T08:39:34.083+0100 [DEBUG] Validate chart: ref=prometheus +2022-04-02T08:39:34.083+0100 [DEBUG] Run chart: ref=prometheus +2022-04-02T08:39:34.098+0100 [ERROR] 2022-04-02T08:39:34.098+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.148+0100 [ERROR] 2022-04-02T08:39:34.148+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.204+0100 [ERROR] 2022-04-02T08:39:34.203+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.222+0100 [ERROR] 2022-04-02T08:39:34.222+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.223+0100 [ERROR] 2022-04-02T08:39:34.223+0100 [DEBUG] Forcefully remove: container=f01b322cf48d4b4862d9adfbb3e33a0363798a93e6a88cc82b753c7612f1ddc7 +2022-04-02T08:39:34.257+0100 [ERROR] 2022-04-02T08:39:34.257+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.318+0100 [ERROR] 2022-04-02T08:39:34.318+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.329+0100 [ERROR] 2022-04-02T08:39:34.329+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.367+0100 [ERROR] 2022-04-02T08:39:34.367+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:34.411+0100 [ERROR] 2022-04-02T08:39:34.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" +2022-04-02T08:39:34.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" +2022-04-02T08:39:36.829+0100 [ERROR] 2022-04-02T08:39:36.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000159] +2022-04-02T08:39:37.830+0100 [ERROR] 2022-04-02T08:39:37.829+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:38.119+0100 [ERROR] 2022-04-02T08:39:38.119+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:39:38.122+0100 [ERROR] 2022-04-02T08:39:38.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:38.401+0100 [ERROR] 2022-04-02T08:39:38.401+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:38.406+0100 [ERROR] 2022-04-02T08:39:38.406+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:39:38.408+0100 [ERROR] 2022-04-02T08:39:38.408+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:38.692+0100 [ERROR] 2022-04-02T08:39:38.692+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:38.698+0100 [ERROR] 2022-04-02T08:39:38.697+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:39:38.700+0100 [ERROR] 2022-04-02T08:39:38.700+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:39.002+0100 [ERROR] 2022-04-02T08:39:39.002+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:39.011+0100 [ERROR] 2022-04-02T08:39:39.011+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:39:39.014+0100 [ERROR] 2022-04-02T08:39:39.014+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:39.306+0100 [ERROR] 2022-04-02T08:39:39.306+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:39.312+0100 [ERROR] 2022-04-02T08:39:39.312+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:39:39.315+0100 [ERROR] 2022-04-02T08:39:39.315+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:39.597+0100 [ERROR] 2022-04-02T08:39:39.597+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:39.603+0100 [ERROR] 2022-04-02T08:39:39.603+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:39:39.605+0100 [ERROR] 2022-04-02T08:39:39.605+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" +2022-04-02T08:39:39.885+0100 [ERROR] 2022-04-02T08:39:39.885+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:39.891+0100 [ERROR] 2022-04-02T08:39:39.890+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" +2022-04-02T08:39:39.893+0100 [ERROR] 2022-04-02T08:39:39.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" +2022-04-02T08:39:39.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:39.910+0100 [ERROR] 2022-04-02T08:39:39.910+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:39:39.910+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:41.706+0100 [ERROR] 2022-04-02T08:39:41.706+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:39:41.706+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:41.714+0100 [ERROR] 2022-04-02T08:39:41.714+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-02T08:39:41.716+0100 [ERROR] 2022-04-02T08:39:41.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:39:41.721+0100 [ERROR] 2022-04-02T08:39:41.721+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:39:41.728+0100 [ERROR] 2022-04-02T08:39:41.728+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:39:41.733+0100 [ERROR] 2022-04-02T08:39:41.733+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:39:41.738+0100 [ERROR] 2022-04-02T08:39:41.738+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:39:41.744+0100 [ERROR] 2022-04-02T08:39:41.744+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-02T08:39:41.747+0100 [ERROR] 2022-04-02T08:39:41.747+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" +2022-04-02T08:39:41.938+0100 [ERROR] 2022-04-02T08:39:41.938+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:39:41.940+0100 [ERROR] 2022-04-02T08:39:41.940+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:42.215+0100 [ERROR] 2022-04-02T08:39:42.215+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:42.219+0100 [ERROR] 2022-04-02T08:39:42.219+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:39:42.221+0100 [ERROR] 2022-04-02T08:39:42.221+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:42.530+0100 [ERROR] 2022-04-02T08:39:42.530+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:42.535+0100 [ERROR] 2022-04-02T08:39:42.534+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:39:42.537+0100 [ERROR] 2022-04-02T08:39:42.537+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:42.818+0100 [ERROR] 2022-04-02T08:39:42.818+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:42.824+0100 [ERROR] 2022-04-02T08:39:42.823+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:39:42.826+0100 [ERROR] 2022-04-02T08:39:42.826+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:43.114+0100 [ERROR] 2022-04-02T08:39:43.114+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:43.120+0100 [ERROR] 2022-04-02T08:39:43.120+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:39:43.122+0100 [ERROR] 2022-04-02T08:39:43.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-02T08:39:43.422+0100 [ERROR] 2022-04-02T08:39:43.422+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:43.427+0100 [ERROR] 2022-04-02T08:39:43.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:39:43.430+0100 [ERROR] 2022-04-02T08:39:43.430+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" +2022-04-02T08:39:43.729+0100 [ERROR] 2022-04-02T08:39:43.728+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-02T08:39:43.749+0100 [ERROR] 2022-04-02T08:39:43.749+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" +2022-04-02T08:39:43.751+0100 [ERROR] 2022-04-02T08:39:43.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" +2022-04-02T08:39:43.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:43.771+0100 [ERROR] 2022-04-02T08:39:43.771+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:39:43.771+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:46.726+0100 [ERROR] 2022-04-02T08:39:46.726+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:39:46.726+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-02T08:39:46.734+0100 [ERROR] 2022-04-02T08:39:46.734+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-02T08:39:46.736+0100 [ERROR] 2022-04-02T08:39:46.736+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-02T08:39:46.742+0100 [ERROR] 2022-04-02T08:39:46.742+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-02T08:39:46.752+0100 [ERROR] 2022-04-02T08:39:46.752+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-02T08:39:46.758+0100 [ERROR] 2022-04-02T08:39:46.758+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-02T08:39:46.764+0100 [ERROR] 2022-04-02T08:39:46.764+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-02T08:39:46.769+0100 [ERROR] 2022-04-02T08:39:46.769+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-02T08:39:47.058+0100 [ERROR] 2022-04-02T08:39:47.058+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:39:49.063+0100 [ERROR] 2022-04-02T08:39:49.063+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-w6vcc namespace=monitoring type=Ready value=False +2022-04-02T08:39:51.069+0100 [ERROR] 2022-04-02T08:39:51.069+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-w6vcc namespace=monitoring type=Ready value=False +2022-04-02T08:39:51.829+0100 [ERROR] 2022-04-02T08:39:51.828+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000092] +2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] +2022-04-02T08:39:53.074+0100 [INFO] Creating Helm chart: ref=loki +2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-02T08:39:53.384+0100 [ERROR] 2022-04-02T08:39:53.383+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:53.384+0100 [ERROR] 2022-04-02T08:39:53.384+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki +2022-04-02T08:39:53.811+0100 [ERROR] 2022-04-02T08:39:53.811+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz +2022-04-02T08:39:53.812+0100 [ERROR] 2022-04-02T08:39:53.812+0100 [DEBUG] Using Values: ref=loki values=map[] +2022-04-02T08:39:53.812+0100 [DEBUG] Validate chart: ref=loki +2022-04-02T08:39:53.812+0100 [DEBUG] Run chart: ref=loki +2022-04-02T08:39:54.046+0100 [ERROR] W0402 08:39:54.046433 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:54.060+0100 [ERROR] 2022-04-02T08:39:54.060+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" +2022-04-02T08:39:54.068+0100 [ERROR] 2022-04-02T08:39:54.068+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" +2022-04-02T08:39:54.072+0100 [ERROR] W0402 08:39:54.072601 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:54.103+0100 [ERROR] 2022-04-02T08:39:54.103+0100 [INFO] Creating Helm chart: ref=promtail +2022-04-02T08:39:54.103+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:39:54.103+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:54.103+0100 [ERROR] 2022-04-02T08:39:54.103+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail +2022-04-02T08:39:54.778+0100 [ERROR] 2022-04-02T08:39:54.778+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz +2022-04-02T08:39:54.780+0100 [ERROR] 2022-04-02T08:39:54.779+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] +2022-04-02T08:39:54.780+0100 [DEBUG] Validate chart: ref=promtail +2022-04-02T08:39:54.780+0100 [DEBUG] Run chart: ref=promtail +2022-04-02T08:39:55.068+0100 [ERROR] 2022-04-02T08:39:55.068+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" +2022-04-02T08:39:55.077+0100 [ERROR] 2022-04-02T08:39:55.077+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" +2022-04-02T08:39:55.102+0100 [ERROR] 2022-04-02T08:39:55.102+0100 [INFO] Creating Helm chart: ref=tempo +2022-04-02T08:39:55.102+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:39:55.102+0100 [ERROR] 2022-04-02T08:39:55.102+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:55.103+0100 [ERROR] 2022-04-02T08:39:55.103+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo +2022-04-02T08:39:55.707+0100 [ERROR] 2022-04-02T08:39:55.707+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz +2022-04-02T08:39:55.708+0100 [ERROR] 2022-04-02T08:39:55.708+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" +2022-04-02T08:39:55.708+0100 [DEBUG] Validate chart: ref=tempo +2022-04-02T08:39:55.708+0100 [DEBUG] Run chart: ref=tempo +2022-04-02T08:39:55.953+0100 [ERROR] 2022-04-02T08:39:55.953+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" +2022-04-02T08:39:55.962+0100 [ERROR] 2022-04-02T08:39:55.962+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" +2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [INFO] Creating Helm chart: ref=grafana +2022-04-02T08:39:55.993+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana +2022-04-02T08:39:56.591+0100 [ERROR] 2022-04-02T08:39:56.591+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz +2022-04-02T08:39:56.593+0100 [ERROR] 2022-04-02T08:39:56.593+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" +2022-04-02T08:39:56.593+0100 [DEBUG] Validate chart: ref=grafana +2022-04-02T08:39:56.593+0100 [DEBUG] Run chart: ref=grafana +2022-04-02T08:39:56.918+0100 [ERROR] W0402 08:39:56.918085 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:56.920+0100 [ERROR] W0402 08:39:56.920379 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:56.949+0100 [ERROR] 2022-04-02T08:39:56.949+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" +2022-04-02T08:39:56.968+0100 [ERROR] 2022-04-02T08:39:56.967+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" +2022-04-02T08:39:56.972+0100 [ERROR] W0402 08:39:56.971941 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:56.972+0100 [ERROR] W0402 08:39:56.972048 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:39:57.059+0100 [DEBUG] Template content: ref=monitor_ingress_gateway + source= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: #{{ .Vars.monitoring_namespace }} + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: #{{ .Vars.consul_namespace }} + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [DEBUG] Template output: ref=monitor_ingress_gateway + destination= + | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace + | --- + | apiVersion: monitoring.coreos.com/v1 + | kind: ServiceMonitor + | metadata: + | labels: + | release: prometheus + | name: ingress-gateway + | namespace: monitoring + | spec: + | endpoints: + | - interval: 15s + | port: metrics + | jobLabel: ingress-gateway + | namespaceSelector: + | matchNames: + | - consul + | selector: + | matchLabels: + | app: metrics + | + | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace + | --- + | apiVersion: v1 + | kind: Service + | metadata: + | name: ingress-gateway-metrics + | namespace: consul + | labels: + | app: metrics + | spec: + | selector: + | component: ingress-gateway + | ports: + | - name: metrics + | protocol: TCP + | port: 20200 + | targetPort: 20200 +2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] +2022-04-02T08:39:57.060+0100 [ERROR] 2022-04-02T08:39:57.060+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Creating Helm chart: ref=consul-release-controller +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml +2022-04-02T08:39:57.150+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml +2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:39:57.150+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-02T08:39:57.151+0100 [ERROR] 2022-04-02T08:39:57.151+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" +2022-04-02T08:39:57.151+0100 [DEBUG] Validate chart: ref=consul-release-controller +2022-04-02T08:39:57.151+0100 [DEBUG] Run chart: ref=consul-release-controller +2022-04-02T08:39:57.255+0100 [ERROR] 2022-04-02T08:39:57.255+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml +2022-04-02T08:39:57.272+0100 [ERROR] 2022-04-02T08:39:57.272+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml +2022-04-02T08:39:57.358+0100 [ERROR] 2022-04-02T08:39:57.358+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml +2022-04-02T08:39:57.378+0100 [ERROR] 2022-04-02T08:39:57.378+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml +2022-04-02T08:39:57.424+0100 [ERROR] 2022-04-02T08:39:57.424+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml +2022-04-02T08:39:57.451+0100 [ERROR] 2022-04-02T08:39:57.450+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml +2022-04-02T08:39:57.527+0100 [ERROR] 2022-04-02T08:39:57.527+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" +2022-04-02T08:39:57.539+0100 [ERROR] 2022-04-02T08:39:57.539+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" +2022-04-02T08:39:57.680+0100 [ERROR] 2022-04-02T08:39:57.680+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" +2022-04-02T08:39:57.699+0100 [ERROR] 2022-04-02T08:39:57.698+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 +2022-04-02T08:39:57.699+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec +2022-04-02T08:39:57.770+0100 [ERROR] 2022-04-02T08:39:57.770+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec +2022-04-02T08:39:57.774+0100 [ERROR] 2022-04-02T08:39:57.774+0100 [DEBUG] Attaching container to network: ref=b348885b4e875314e67b40934ba881759666f2cfd09ed8c2913726cee9b97278 network=dc1 +2022-04-02T08:39:57.783+0100 [ERROR] 2022-04-02T08:39:57.783+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec +2022-04-02T08:39:58.929+0100 [ERROR] 2022-04-02T08:39:58.929+0100 [DEBUG] Forcefully remove: container=b348885b4e875314e67b40934ba881759666f2cfd09ed8c2913726cee9b97278 +2022-04-02T08:39:59.637+0100 [ERROR] 2022-04-02T08:39:59.637+0100 [DEBUG] Health check urls for browser windows: count=0 +2022-04-02T08:39:59.637+0100 [DEBUG] Browser windows open + +######################################################## + +Title Development setup +Author Nic Jackson +2022-04-02T08:39:59.637+0100 [ERROR] +• Consul: https://localhost:8501 +• Grafana: https://localhost:8080 +• Application: http://localhost:18080 + +This blueprint defines 13 output variables. + +You can set output variables as environment variables for your current terminal session using the following command: + +eval $(shipyard env) + +To list output variables use the command: + +shipyard output +2022-04-02T08:40:00.249+0100 [INFO] Starting controller +2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start +2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start +2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Configure: state=state_configure +2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure +2022-04-02T08:40:04.825+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api +2022-04-02T08:40:04.825+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api +2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_configure +2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Reject deployment, there is currently an active release for this deployment: name=api-deployment namespace=default state=state_configure +2022-04-02T08:40:04.856+0100 [INFO] Shutting down server gracefully +2022-04-02T08:40:04.857+0100 [INFO] Shutting down listener +2022-04-02T08:40:04.857+0100 [INFO] Shutting down metrics +2022-04-02T08:40:04.858+0100 [INFO] Shutting down kubernetes controller +2022-04-02T08:40:04.858+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller +2022-04-02T08:40:05.834+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceDefaults: name=consul-release-controller error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" +2022-04-02T08:40:05.834+0100 [ERROR] statemachine: Configure completed with error: error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" +2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_configure +2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_configure +2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail diff --git a/kubernetes/controller/validatingwebhook.go b/kubernetes/controller/validatingwebhook.go index 1070d26..a16a794 100644 --- a/kubernetes/controller/validatingwebhook.go +++ b/kubernetes/controller/validatingwebhook.go @@ -6,7 +6,6 @@ import ( "net/http" "github.com/hashicorp/go-hclog" - "github.com/kr/pretty" "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/nicholasjackson/consul-release-controller/plugins/kubernetes" appsv1 "k8s.io/api/apps/v1" @@ -34,17 +33,27 @@ func (a *deploymentAdmission) Handle(ctx context.Context, req admission.Request) err := a.decoder.Decode(req, deployment) if err != nil { + a.log.Error("Error decoding deployment", "request", req, "error", err) + return admission.Errored(http.StatusBadRequest, err) } + a.log.Debug("Handle deployment admission", "deployment", deployment.Name, "namespaces", deployment.Namespace) + // was the deployment modified by the release controller, if so, ignore - pretty.Println(deployment.Labels) - if deployment.Labels != nil && deployment.Labels["consul-release-controller-version"] == deployment.ResourceVersion { + if deployment.Labels != nil && deployment.Labels["consul-release-controller-version"] != "" && deployment.Labels["consul-release-controller-version"] == deployment.ResourceVersion { + a.log.Debug("Ignore deployment, resource was modified by the controller", "name", deployment.Name, "namespace", deployment.Namespace, "labels", deployment.Labels) + return admission.Allowed("resource modified by controller") } // is there release for this deployment? rels, err := a.provider.GetDataStore().ListReleases(&interfaces.ListOptions{"kubernetes"}) + if err != nil { + a.log.Error("Error fetching releases", "name", deployment.Name, "namespace", deployment.Namespace, "error", err) + return admission.Errored(500, err) + } + for _, rel := range rels { conf := &kubernetes.PluginConfig{} json.Unmarshal(rel.Runtime.Config, conf) @@ -53,15 +62,17 @@ func (a *deploymentAdmission) Handle(ctx context.Context, req admission.Request) // found a release for this deployment, check the state sm, err := a.provider.GetStateMachine(rel) if err != nil { + a.log.Error("Error fetching statemachine", "name", deployment.Name, "namespace", deployment.Namespace, "error", err) return admission.Errored(500, err) } - a.log.Debug("Found existing release", "state", sm.CurrentState()) + a.log.Debug("Found existing release", "name", deployment.Name, "namespace", deployment.Namespace, "state", sm.CurrentState()) - if sm.CurrentState() == interfaces.StateIdle { + if sm.CurrentState() == interfaces.StateIdle || sm.CurrentState() == interfaces.StateFail { // kick off a new deployment err = sm.Deploy() if err != nil { + a.log.Error("Error initializing new deployment", "name", deployment.Name, "namespace", deployment.Namespace, "error", err) return admission.Errored(500, err) } @@ -69,6 +80,7 @@ func (a *deploymentAdmission) Handle(ctx context.Context, req admission.Request) } // release currently active, reject deployment + a.log.Debug("Reject deployment, there is currently an active release for this deployment", "name", deployment.Name, "namespace", deployment.Namespace, "state", sm.CurrentState()) return admission.Denied("A release is currently active") } } diff --git a/kubernetes/controller/validatingwebhook_test.go b/kubernetes/controller/validatingwebhook_test.go new file mode 100644 index 0000000..640ef7b --- /dev/null +++ b/kubernetes/controller/validatingwebhook_test.go @@ -0,0 +1,130 @@ +package controller + +import ( + "context" + "encoding/json" + "testing" + + "github.com/nicholasjackson/consul-release-controller/models" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" + "github.com/nicholasjackson/consul-release-controller/plugins/kubernetes" + "github.com/nicholasjackson/consul-release-controller/plugins/mocks" + "github.com/nicholasjackson/consul-release-controller/testutils" + "github.com/stretchr/testify/require" + + appsv1 "k8s.io/api/apps/v1" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +func setupAdmission(t *testing.T) (*deploymentAdmission, *mocks.Mocks) { + pm, mm := mocks.BuildMocks(t) + + pc := &kubernetes.PluginConfig{} + pc.Deployment = "test-deployment" + + pcd, _ := json.Marshal(pc) + + testutils.ClearMockCall(&mm.StoreMock.Mock, "ListReleases") + + mm.StoreMock.On("ListReleases", &interfaces.ListOptions{"kubernetes"}).Return( + []*models.Release{ + &models.Release{ + Name: "test", + Runtime: &models.PluginConfig{ + Name: "kubernetes", + Config: pcd, + }, + }, + }, + nil, + ) + + testutils.ClearMockCall(&mm.StateMachineMock.Mock, "CurrentState") + mm.StateMachineMock.On("CurrentState").Return(interfaces.StateIdle) + + da := NewDeploymentAdmission(nil, pm, pm.GetLogger()) + + decoder, err := admission.NewDecoder(scheme) + require.NoError(t, err) + + da.InjectDecoder(decoder) + + return da, mm +} + +func createAdmissionRequest(withVersionLabels bool) admission.Request { + ar := admission.Request{} + ar.AdmissionRequest.Name = "test-deployment" + + dep := &appsv1.Deployment{} + dep.Name = "test-deployment" + dep.Labels = map[string]string{"app": "test"} + + if withVersionLabels { + dep.Labels["consul-release-controller-version"] = "1" + dep.ResourceVersion = "1" + } + + data, _ := json.Marshal(dep) + + ar.Object.Raw = data + + return ar +} + +func TestIgnoresDeploymentModifiedByControllerWhenActive(t *testing.T) { + ar := createAdmissionRequest(true) + d, mm := setupAdmission(t) + + resp := d.Handle(context.TODO(), ar) + require.True(t, resp.Allowed) + mm.StateMachineMock.AssertNotCalled(t, "Deploy") +} + +func TestCallsDeployForNewDeploymentWhenIdle(t *testing.T) { + ar := createAdmissionRequest(false) + d, mm := setupAdmission(t) + + resp := d.Handle(context.TODO(), ar) + require.True(t, resp.Allowed) + mm.StateMachineMock.AssertCalled(t, "Deploy") +} + +func TestCallsDeployForNewDeploymentWhenFailed(t *testing.T) { + ar := createAdmissionRequest(false) + d, mm := setupAdmission(t) + + testutils.ClearMockCall(&mm.StateMachineMock.Mock, "CurrentState") + mm.StateMachineMock.On("CurrentState").Return(interfaces.StateFail) + + resp := d.Handle(context.TODO(), ar) + require.True(t, resp.Allowed) + mm.StateMachineMock.AssertCalled(t, "Deploy") +} + +func TestReturnsAllowedWhenReleaseNotFound(t *testing.T) { + ar := createAdmissionRequest(false) + d, mm := setupAdmission(t) + + testutils.ClearMockCall(&mm.StoreMock.Mock, "ListReleases") + mm.StoreMock.On("ListReleases", &interfaces.ListOptions{"kubernetes"}).Return( + []*models.Release{}, + nil, + ) + + resp := d.Handle(context.TODO(), ar) + require.True(t, resp.Allowed) + mm.StateMachineMock.AssertNotCalled(t, "Deploy") +} + +func TestReturnsDeniedWhenReleaseActive(t *testing.T) { + ar := createAdmissionRequest(false) + d, mm := setupAdmission(t) + + testutils.ClearMockCall(&mm.StateMachineMock.Mock, "CurrentState") + mm.StateMachineMock.On("CurrentState").Return(interfaces.StateMonitor) + + resp := d.Handle(context.TODO(), ar) + require.False(t, resp.Allowed) + mm.StateMachineMock.AssertNotCalled(t, "Deploy") +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..48e341a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3 @@ +{ + "lockfileVersion": 1 +} diff --git a/plugins/consul/plugin.go b/plugins/consul/plugin.go index 71c25b0..a125e1c 100644 --- a/plugins/consul/plugin.go +++ b/plugins/consul/plugin.go @@ -13,7 +13,7 @@ import ( "github.com/sethvargo/go-retry" ) -var syncDelay = 2 * time.Second +var syncDelay = 1 * time.Second type Plugin struct { log hclog.Logger @@ -87,6 +87,8 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + time.Sleep(syncDelay) + // create the service defaults for the controller and the virtual service that allows // access to candidate deployments err = p.consulClient.CreateServiceDefaults(clients.ControllerServiceName) @@ -96,6 +98,8 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + time.Sleep(syncDelay) + err = p.consulClient.CreateServiceDefaults(clients.UpstreamRouterName) if err != nil { p.log.Error("Unable to create Consul ServiceDefaults", "name", clients.UpstreamRouterName, "error", err) @@ -103,6 +107,8 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + time.Sleep(syncDelay) + // create the service resolver p.log.Debug("Create service resolver", "service", p.config.ConsulService) err = p.consulClient.CreateServiceResolver(p.config.ConsulService) @@ -112,6 +118,8 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + time.Sleep(syncDelay) + // create the service router p.log.Debug("Create service router", "service", p.config.ConsulService) err = p.consulClient.CreateServiceRouter(p.config.ConsulService) @@ -121,6 +129,8 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } + time.Sleep(syncDelay) + // create the service router to enable post deployment tests p.log.Debug("Create upstream service router", "service", p.config.ConsulService) err = p.consulClient.CreateUpstreamRouter(p.config.ConsulService) @@ -130,15 +140,10 @@ func (p *Plugin) Setup(ctx context.Context) error { return err } - // create the service intentions to allow an upstream from the controller to - p.log.Debug("Create service intentions for the upstreams", "service", "consul-release-controller") - err = p.consulClient.CreateServiceIntention("consul-release-controller") - if err != nil { - p.log.Error("Unable to create Consul ServiceIntention", "name", "consul-release-controller", "error", err) - - return err - } + time.Sleep(syncDelay) + // create the service intentions to allow an upstream from the controller to + p.log.Debug("Create service intentions for the upstreams", "service", p.config.ConsulService) err = p.consulClient.CreateServiceIntention(p.config.ConsulService) if err != nil { p.log.Error("Unable to create Consul ServiceIntention", "name", p.config.ConsulService, "error", err) @@ -179,6 +184,26 @@ func (p *Plugin) Destroy(ctx context.Context) error { time.Sleep(syncDelay) + p.log.Debug("Cleanup router", "name", p.config.ConsulService) + err = p.consulClient.DeleteServiceRouter(p.config.ConsulService) + if err != nil { + p.log.Error("Unable to delete Consul ServiceRouter", "name", p.config.ConsulService, "error", err) + + return err + } + + time.Sleep(syncDelay) + + p.log.Debug("Cleanup upstream router", "name", p.config.ConsulService) + err = p.consulClient.DeleteUpstreamRouter(p.config.ConsulService) + if err != nil { + p.log.Error("Unable to delete upstream Consul ServiceRouter", "name", p.config.ConsulService, "error", err) + + return err + } + + time.Sleep(syncDelay) + p.log.Debug("Cleanup resolver", "name", p.config.ConsulService) err = p.consulClient.DeleteServiceResolver(p.config.ConsulService) if err != nil { @@ -189,10 +214,11 @@ func (p *Plugin) Destroy(ctx context.Context) error { time.Sleep(syncDelay) - p.log.Debug("Cleanup router", "name", p.config.ConsulService) - err = p.consulClient.DeleteServiceRouter(p.config.ConsulService) + // delete will only happen if this plugin created the defaults + p.log.Debug("Cleanup service intentions", "name", p.config.ConsulService) + err = p.consulClient.DeleteServiceIntention(p.config.ConsulService) if err != nil { - p.log.Error("Unable to delete Consul ServiceRouter", "name", p.config.ConsulService, "error", err) + p.log.Error("Unable to delete Consul ServiceIntention", "name", p.config.ConsulService, "error", err) return err } diff --git a/plugins/kubernetes/plugin.go b/plugins/kubernetes/plugin.go index 0c18b5b..db06a41 100644 --- a/plugins/kubernetes/plugin.go +++ b/plugins/kubernetes/plugin.go @@ -86,9 +86,10 @@ func (p *Plugin) InitPrimary(ctx context.Context) (interfaces.RuntimeDeploymentS } // fetch the current deployment - candidateDeployment, err = p.kubeClient.GetHealthyDeployment(ctx, p.config.Deployment, p.config.Namespace) + candidateDeployment, err = p.kubeClient.GetDeployment(ctx, p.config.Deployment, p.config.Namespace) // if we have no Candidate there is nothing we can do if err != nil || candidateDeployment == nil { + p.log.Debug("No candidate deployment, nothing to do") return interfaces.RuntimeDeploymentNoAction, nil } diff --git a/plugins/statemachine/statemachine.go b/plugins/statemachine/statemachine.go index 4fbd1da..f23c0f3 100644 --- a/plugins/statemachine/statemachine.go +++ b/plugins/statemachine/statemachine.go @@ -417,7 +417,7 @@ func (s *StateMachine) doMonitor() func(e *fsm.Event) { err, ) - e.FSM.Event(interfaces.EventFail) + e.FSM.Event(interfaces.EventUnhealthy) return } } diff --git a/ui/.gitignore b/ui/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/ui/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/ui/README.md b/ui/README.md new file mode 100644 index 0000000..c0541f9 --- /dev/null +++ b/ui/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can't go back!** + +If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. + +You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `yarn build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/ui/package-lock.json b/ui/package-lock.json new file mode 100644 index 0000000..73e7ce2 --- /dev/null +++ b/ui/package-lock.json @@ -0,0 +1,10545 @@ +{ + "name": "ui", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@apideck/better-ajv-errors": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", + "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" + }, + "@babel/core": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", + "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.7", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.8", + "@babel/parser": "^7.17.8", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==" + } + } + }, + "@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "requires": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", + "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz", + "integrity": "sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz", + "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==", + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", + "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + } + }, + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz", + "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==", + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==" + } + } + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", + "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==" + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, + "@csstools/postcss-color-function": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.0.3.tgz", + "integrity": "sha512-J26I69pT2B3MYiLY/uzCGKVJyMYVg9TCpXkWsRlt+Yfq+nELUEm72QXIMYXs4xA9cJA4Oqs2EylrfokKl3mJEQ==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz", + "integrity": "sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.1.tgz", + "integrity": "sha512-Og5RrTzwFhrKoA79c3MLkfrIBYmwuf/X83s+JQtz/Dkk/MpsaKtqHV1OOzYkogQ+tj3oYp5Mq39XotBXNqVc3Q==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.2.tgz", + "integrity": "sha512-QwhWesEkMlp4narAwUi6pgc6kcooh8cC7zfxa9LSQNYXqzcdNUtNBzbGc5nuyAVreb7uf5Ox4qH1vYT3GA1wOg==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz", + "integrity": "sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==", + "requires": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.8.1", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "@popperjs/core": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", + "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==" + }, + "@react-aria/ssr": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.1.2.tgz", + "integrity": "sha512-amXY11ImpokvkTMeKRHjsSsG7v1yzzs6yeqArCyBIk60J3Yhgxwx9Cah+Uu/804ATFwqzN22AXIo7SdtIaMP+g==", + "requires": { + "@babel/runtime": "^7.6.2" + } + }, + "@restart/hooks": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.5.tgz", + "integrity": "sha512-tLGtY0aHeIfT7aPwUkvQuhIy3+q3w4iqmUzFLPlOAf/vNUacLaBt1j/S//jv/dQhenRh8jvswyMojCwmLvJw8A==", + "requires": { + "dequal": "^2.0.2" + } + }, + "@restart/ui": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.2.0.tgz", + "integrity": "sha512-oIh2t3tG8drZtZ9SlaV5CY6wGsUViHk8ZajjhcI+74IQHyWy+AnxDv8rJR5wVgsgcgrPBUvGNkC1AEdcGNPaLQ==", + "requires": { + "@babel/runtime": "^7.13.16", + "@popperjs/core": "^2.10.1", + "@react-aria/ssr": "^3.0.1", + "@restart/hooks": "^0.4.0", + "@types/warning": "^3.0.0", + "dequal": "^2.0.2", + "dom-helpers": "^5.2.0", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + } + } + }, + "@rushstack/eslint-patch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz", + "integrity": "sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==" + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@testing-library/dom": { + "version": "8.11.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.4.tgz", + "integrity": "sha512-7vZ6ZoBEbr6bfEM89W1nzl0vHbuI0g0kRrI0hwSXH3epnuqGO3KulFLQCKfmmW+60t7e4sevAkJPASSMmnNCRw==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.4.4", + "pretty-format": "^27.0.2" + } + }, + "@testing-library/jest-dom": { + "version": "5.16.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.3.tgz", + "integrity": "sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA==", + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@testing-library/react": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz", + "integrity": "sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA==", + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "*" + } + }, + "@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "requires": { + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "requires": { + "@types/node": "*" + } + }, + "@types/invariant": { + "version": "2.2.35", + "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", + "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==" + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/react": { + "version": "17.0.43", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.43.tgz", + "integrity": "sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.14.tgz", + "integrity": "sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", + "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "requires": { + "@types/react": "*" + } + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "requires": { + "@types/node": "*" + } + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + }, + "@types/testing-library__jest-dom": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", + "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", + "requires": { + "@types/jest": "*" + } + }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "@types/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", + "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", + "requires": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/type-utils": "5.16.0", + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.16.0.tgz", + "integrity": "sha512-bitZtqO13XX64/UOQKoDbVg2H4VHzbHnWWlTRc7ofq7SuQyPCwEycF1Zmn5ZAMTJZ3p5uMS7xJGUdOtZK7LrNw==", + "requires": { + "@typescript-eslint/utils": "5.16.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz", + "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", + "requires": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "debug": "^4.3.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", + "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", + "requires": { + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==" + }, + "@typescript-eslint/typescript-estree": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "requires": { + "@typescript-eslint/types": "5.16.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "requires": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axe-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==" + }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "requires": { + "follow-redirects": "^1.14.8" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-loader": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==" + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "requires": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bfj": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", + "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "requires": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001320", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz", + "integrity": "sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==" + } + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001320", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz", + "integrity": "sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==" + }, + "chart.js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" + }, + "chartjs-plugin-datasource-prometheus": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datasource-prometheus/-/chartjs-plugin-datasource-prometheus-1.0.7.tgz", + "integrity": "sha512-y3/MXZOg5CNZkXY4GM+t4f0QYAEfbRV1HFV26DVmzXtfAiX/r0KLEGoTSqpGcb1i40SFFL9OtgDLo+8lVBqebw==", + "requires": { + "prometheus-query": "^3.2.1" + } + }, + "check-types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", + "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" + }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==" + }, + "core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "requires": { + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==" + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssdb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", + "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.5.tgz", + "integrity": "sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg==", + "requires": { + "cssnano-preset-default": "^5.2.5", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz", + "integrity": "sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ==", + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.3", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", + "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==" + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + } + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } + }, + "electron-to-chromium": { + "version": "1.4.94", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.94.tgz", + "integrity": "sha512-CoOKsuACoa0PAG3hQXxbh/XDiFcjGuSyGKUi09cjMHOt6RCi7/EXgXhaFF3I+aC89Omudqmkzd0YOQKxwtf/Bg==" + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "eslint-config-react-app": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.0.tgz", + "integrity": "sha512-xyymoxtIt1EOsSaGag+/jmcywRuieQoA2JbPCjnw9HukFj9/97aGPoZVFioaotzk1K5Qt9sHO5EutZbkrAXS0g==", + "requires": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "requires": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "requires": { + "@typescript-eslint/experimental-utils": "^5.0.0" + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "requires": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", + "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==" + }, + "eslint-plugin-testing-library": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.1.0.tgz", + "integrity": "sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ==", + "requires": { + "@typescript-eslint/utils": "^5.13.0" + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + }, + "eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "requires": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + } + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + } + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + }, + "fork-ts-checker-webpack-plugin": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + } + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + } + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + }, + "idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==" + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + }, + "immer": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", + "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + }, + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.8.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", + "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "requires": { + "async": "0.9.x", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "dependencies": { + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + } + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-watch-typeahead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.0.0.tgz", + "integrity": "sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^27.0.0", + "jest-watcher": "^27.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + }, + "string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "requires": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonpointer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", + "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==" + }, + "jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "requires": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" + }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "requires": { + "tmpl": "1.0.5" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "momentjs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/momentjs/-/momentjs-2.0.0.tgz", + "integrity": "sha1-c9+QS0+kGPbjxgXoMc727VUY69Q=" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "node-forge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", + "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "requires": { + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==" + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==" + }, + "postcss-custom-properties": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz", + "integrity": "sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==" + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" + }, + "postcss-double-position-gradients": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==" + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==" + }, + "postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==" + }, + "postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==" + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-lab-function": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz", + "integrity": "sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-load-config": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", + "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", + "requires": { + "lilconfig": "^2.0.4", + "yaml": "^1.10.2" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==" + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==" + }, + "postcss-merge-longhand": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz", + "integrity": "sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w==", + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "postcss-nesting": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.3.tgz", + "integrity": "sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "requires": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==" + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==" + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==" + }, + "postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz", + "integrity": "sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg==", + "requires": { + "@csstools/postcss-color-function": "^1.0.3", + "@csstools/postcss-font-format-keywords": "^1.0.0", + "@csstools/postcss-hwb-function": "^1.0.0", + "@csstools/postcss-ic-unit": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^2.0.1", + "@csstools/postcss-normalize-display-values": "^1.0.0", + "@csstools/postcss-oklab-function": "^1.0.2", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "autoprefixer": "^10.4.4", + "browserslist": "^4.20.2", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^6.5.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.2", + "postcss-color-hex-alpha": "^8.0.3", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.5", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.4", + "postcss-double-position-gradients": "^3.1.1", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.3", + "postcss-image-set-function": "^4.0.6", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.1.2", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.3", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.3", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.4", + "postcss-pseudo-class-any-link": "^7.1.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz", + "integrity": "sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg==", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==" + }, + "postcss-selector-not": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "dependencies": { + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + } + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "prometheus-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/prometheus-query/-/prometheus-query-3.2.1.tgz", + "integrity": "sha512-YVOYAejblsiTZ8uBMhTf6vXj9EKT4Ru5knAwtyv9ZGOPAHgrTOFq/owrV4DpqypzCJhGxAjkkkDiMoMlFEVlWw==", + "requires": { + "axios": "^0.26.1" + } + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "requires": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + } + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "requires": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + } + }, + "react-bootstrap": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.2.2.tgz", + "integrity": "sha512-zfVGUU14BMZo7KqR1QHXBAqpbWa6bu4S9dZ6O4rd/hDZi1tiNeGkISbuBednb1TxyXrOwpvnvlHNk3OuYQNq6w==", + "requires": { + "@babel/runtime": "^7.17.2", + "@restart/hooks": "^0.4.5", + "@restart/ui": "^1.2.0", + "@types/invariant": "^2.2.35", + "@types/prop-types": "^15.7.4", + "@types/react": ">=16.14.8", + "@types/react-transition-group": "^4.4.4", + "@types/warning": "^3.0.0", + "classnames": "^2.3.1", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + } + }, + "react-dev-utils": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", + "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", + "requires": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.10", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-error-overlay": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.10.tgz", + "integrity": "sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==" + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" + }, + "react-scripts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz", + "integrity": "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==", + "requires": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.0", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "fsevents": "^2.3.2", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.0", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "react-transition-group": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", + "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + }, + "sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "tailwindcss": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", + "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", + "requires": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss": "^8.4.6", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, + "tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "requires": { + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "requires": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "requires": { + "makeerror": "1.0.12" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" + } + } + }, + "webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "requires": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "dependencies": { + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "workbox-background-sync": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz", + "integrity": "sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g==", + "requires": { + "idb": "^6.1.4", + "workbox-core": "6.5.2" + } + }, + "workbox-broadcast-update": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz", + "integrity": "sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-build": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.2.tgz", + "integrity": "sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ==", + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.5.2", + "workbox-broadcast-update": "6.5.2", + "workbox-cacheable-response": "6.5.2", + "workbox-core": "6.5.2", + "workbox-expiration": "6.5.2", + "workbox-google-analytics": "6.5.2", + "workbox-navigation-preload": "6.5.2", + "workbox-precaching": "6.5.2", + "workbox-range-requests": "6.5.2", + "workbox-recipes": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2", + "workbox-streams": "6.5.2", + "workbox-sw": "6.5.2", + "workbox-window": "6.5.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz", + "integrity": "sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.2.tgz", + "integrity": "sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ==" + }, + "workbox-expiration": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.2.tgz", + "integrity": "sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw==", + "requires": { + "idb": "^6.1.4", + "workbox-core": "6.5.2" + } + }, + "workbox-google-analytics": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz", + "integrity": "sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw==", + "requires": { + "workbox-background-sync": "6.5.2", + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "workbox-navigation-preload": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz", + "integrity": "sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-precaching": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.2.tgz", + "integrity": "sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w==", + "requires": { + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "workbox-range-requests": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz", + "integrity": "sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-recipes": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.2.tgz", + "integrity": "sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA==", + "requires": { + "workbox-cacheable-response": "6.5.2", + "workbox-core": "6.5.2", + "workbox-expiration": "6.5.2", + "workbox-precaching": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "workbox-routing": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.2.tgz", + "integrity": "sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-strategies": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.2.tgz", + "integrity": "sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw==", + "requires": { + "workbox-core": "6.5.2" + } + }, + "workbox-streams": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.2.tgz", + "integrity": "sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w==", + "requires": { + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2" + } + }, + "workbox-sw": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.2.tgz", + "integrity": "sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw==" + }, + "workbox-webpack-plugin": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.2.tgz", + "integrity": "sha512-StrJ7wKp5tZuGVcoKLVjFWlhDy+KT7ZWsKnNcD6F08wA9Cpt6JN+PLIrplcsTHbQpoAV8+xg6RvcG0oc9z+RpQ==", + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.5.2" + }, + "dependencies": { + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "workbox-window": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.2.tgz", + "integrity": "sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A==", + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.5.2" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + } +} diff --git a/ui/package.json b/ui/package.json new file mode 100644 index 0000000..a72b84a --- /dev/null +++ b/ui/package.json @@ -0,0 +1,43 @@ +{ + "name": "ui", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^12.0.0", + "@testing-library/user-event": "^13.2.1", + "bootstrap": "^5.1.3", + "chart.js": "^3.7.1", + "chartjs-plugin-datasource-prometheus": "^1.0.7", + "momentjs": "^2.0.0", + "react": "^17.0.2", + "react-bootstrap": "^2.2.2", + "react-dom": "^17.0.2", + "react-scripts": "5.0.0", + "web-vitals": "^2.1.0" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/ui/public/favicon.ico b/ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/ui/public/index.html b/ui/public/index.html new file mode 100644 index 0000000..a5068f0 --- /dev/null +++ b/ui/public/index.html @@ -0,0 +1,12 @@ + + + + + + React-Bootstrap CodeSandbox Starter + + + +
+ + \ No newline at end of file diff --git a/ui/public/logo192.png b/ui/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/ui/public/manifest.json b/ui/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/ui/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/ui/public/robots.txt b/ui/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/ui/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/ui/src/App.css b/ui/src/App.css new file mode 100644 index 0000000..e994711 --- /dev/null +++ b/ui/src/App.css @@ -0,0 +1,3 @@ +.App { + text-align: center; +} \ No newline at end of file diff --git a/ui/src/App.js b/ui/src/App.js new file mode 100644 index 0000000..f79756b --- /dev/null +++ b/ui/src/App.js @@ -0,0 +1,25 @@ +import './App.css'; +import Navbar from 'react-bootstrap/Navbar'; +import Nav from 'react-bootstrap/Nav'; +import Container from 'react-bootstrap/Container'; + +function App() { + return ( +
+
+ + + Navbar + + + +
+
+ ); +} + +export default App; diff --git a/ui/src/App.test.js b/ui/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/ui/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/ui/src/index.css b/ui/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/ui/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/ui/src/index.js b/ui/src/index.js new file mode 100644 index 0000000..ca76cdc --- /dev/null +++ b/ui/src/index.js @@ -0,0 +1,19 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; + +import reportWebVitals from './reportWebVitals'; + +import 'bootstrap/dist/css/bootstrap.min.css'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/ui/src/logo.svg b/ui/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/ui/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/reportWebVitals.js b/ui/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/ui/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/ui/src/setupTests.js b/ui/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/ui/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/ui/yarn.lock b/ui/yarn.lock new file mode 100644 index 0000000..d81919e --- /dev/null +++ b/ui/yarn.lock @@ -0,0 +1,9315 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15" + integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + +"@babel/core@^7.1.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + +"@babel/eslint-parser@^7.16.3": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" + integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== + dependencies: + eslint-scope "^5.1.1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.7.2": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" + integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== + dependencies: + "@babel/types" "^7.8.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== + +"@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" + integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00" + integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.17.0" + charcodes "^0.2.0" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + dependencies: + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" + integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" + integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" + integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-flow" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" + integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== + dependencies: + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" + integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + +"@babel/preset-typescript@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" + +"@babel/runtime-corejs3@^7.10.2": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" + integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== + dependencies: + core-js-pure "^3.20.2" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" + integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.6.3": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.16.7", "@babel/template@^7.3.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.2": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.3": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@csstools/normalize.css@*": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" + integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== + +"@csstools/postcss-color-function@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.0.3.tgz#251c961a852c99e9aabdbbdbefd50e9a96e8a9ff" + integrity sha512-J26I69pT2B3MYiLY/uzCGKVJyMYVg9TCpXkWsRlt+Yfq+nELUEm72QXIMYXs4xA9cJA4Oqs2EylrfokKl3mJEQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz#7e7df948a83a0dfb7eb150a96e2390ac642356a1" + integrity sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz#d6785c1c5ba8152d1d392c66f3a6a446c6034f6d" + integrity sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz#f484db59fc94f35a21b6d680d23b0ec69b286b7f" + integrity sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.1.tgz#472fff2cf434bdf832f7145b2a5491587e790c9e" + integrity sha512-Og5RrTzwFhrKoA79c3MLkfrIBYmwuf/X83s+JQtz/Dkk/MpsaKtqHV1OOzYkogQ+tj3oYp5Mq39XotBXNqVc3Q== + dependencies: + postcss-selector-parser "^6.0.9" + +"@csstools/postcss-normalize-display-values@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz#ce698f688c28517447aedf15a9037987e3d2dc97" + integrity sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.2.tgz#87cd646e9450347a5721e405b4f7cc35157b7866" + integrity sha512-QwhWesEkMlp4narAwUi6pgc6kcooh8cC7zfxa9LSQNYXqzcdNUtNBzbGc5nuyAVreb7uf5Ox4qH1vYT3GA1wOg== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@eslint/eslintrc@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" + integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.1" + globals "^13.9.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" + integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/eslint-patch@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz#782fa5da44c4f38ae9fd38e9184b54e451936118" + integrity sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^8.0.0": + version "8.11.4" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.4.tgz#dc94d830b862e7a20686b0379eefd931baf0445b" + integrity sha512-7vZ6ZoBEbr6bfEM89W1nzl0vHbuI0g0kRrI0hwSXH3epnuqGO3KulFLQCKfmmW+60t7e4sevAkJPASSMmnNCRw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.14.1": + version "5.16.3" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.3.tgz#b76851a909586113c20486f1679ffb4d8ec27bfa" + integrity sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA== + dependencies: + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^12.0.0": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0" + integrity sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.0.0" + "@types/react-dom" "*" + +"@testing-library/user-event@^13.2.1": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/babel__traverse@^7.0.4": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.28.2": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*": + version "27.4.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" + integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*": + version "13.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.1.tgz#238eb34a66431b71d2aaddeaa7db166f25971a0d" + integrity sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.5": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" + integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-dom@*": + version "17.0.14" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f" + integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.43" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55" + integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz#ee6c7ffe9f8595882ee7bda8af33ae7b8789ef17" + integrity sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw== + dependencies: + "@types/jest" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + +"@types/ws@^8.2.2": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz#78f246dd8d1b528fc5bfca99a8a64d4023a3d86d" + integrity sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw== + dependencies: + "@typescript-eslint/scope-manager" "5.16.0" + "@typescript-eslint/type-utils" "5.16.0" + "@typescript-eslint/utils" "5.16.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.16.0.tgz#0b852567efa10660047f281cf004ed3db32866da" + integrity sha512-bitZtqO13XX64/UOQKoDbVg2H4VHzbHnWWlTRc7ofq7SuQyPCwEycF1Zmn5ZAMTJZ3p5uMS7xJGUdOtZK7LrNw== + dependencies: + "@typescript-eslint/utils" "5.16.0" + +"@typescript-eslint/parser@^5.5.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.16.0.tgz#e4de1bde4b4dad5b6124d3da227347616ed55508" + integrity sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA== + dependencies: + "@typescript-eslint/scope-manager" "5.16.0" + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/typescript-estree" "5.16.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz#7e7909d64bd0c4d8aef629cdc764b9d3e1d3a69a" + integrity sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ== + dependencies: + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/visitor-keys" "5.16.0" + +"@typescript-eslint/type-utils@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz#b482bdde1d7d7c0c7080f7f2f67ea9580b9e0692" + integrity sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ== + dependencies: + "@typescript-eslint/utils" "5.16.0" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" + integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== + +"@typescript-eslint/typescript-estree@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" + integrity sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ== + dependencies: + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/visitor-keys" "5.16.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.16.0", "@typescript-eslint/utils@^5.13.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" + integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.16.0" + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/typescript-estree" "5.16.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz#f27dc3b943e6317264c7492e390c6844cd4efbbb" + integrity sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g== + dependencies: + "@typescript-eslint/types" "5.16.0" + eslint-visitor-keys "^3.0.0" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +address@^1.0.1, address@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" + integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + +ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" + integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.3, array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" + integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" + integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +array.prototype.flatmap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" + integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.19.0" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^10.4.4: + version "10.4.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" + integrity sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA== + dependencies: + browserslist "^4.20.2" + caniuse-lite "^1.0.30001317" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axe-core@^4.3.5: + version "4.4.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" + integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" + integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.0.0: + version "4.8.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0" + integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA== + dependencies: + caniuse-lite "^1.0.30001027" + electron-to-chromium "^1.3.349" + node-releases "^1.1.49" + +browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1, browserslist@^4.20.2: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001027: + version "1.0.30001027" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz#283e2ef17d94889cc216a22c6f85303d78ca852d" + integrity sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg== + +caniuse-lite@^1.0.30001317: + version "1.0.30001320" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz#8397391bec389b8ccce328636499b7284ee13285" + integrity sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +charcodes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" + integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +clean-css@^5.2.2: + version "5.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + +colorette@^2.0.10: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js-pure@^3.20.2, core-js-pure@^3.8.1: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" + integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + +core-js@^3.19.2: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.0.3: + version "6.1.4" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== + dependencies: + timsort "^0.3.0" + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.7" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.5" + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.5.0.tgz#61264b71f29c834f09b59cb3e5b43c8226590122" + integrity sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" + integrity sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ== + dependencies: + css-declaration-sorter "^6.0.3" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.0" + postcss-discard-comments "^5.1.1" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.3" + postcss-merge-rules "^5.1.1" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" + postcss-minify-selectors "^5.2.0" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.0" + postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.5.tgz#5f3f519538c7f1c182c527096892243db3e17397" + integrity sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg== + dependencies: + cssnano-preset-default "^5.2.5" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + +damerau-levenshtein@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.0.0, debug@^3.1.1: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.13" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" + integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.349: + version "1.3.349" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.349.tgz#663f26a69d348a462df47b4d7ab162a2f29bbcb7" + integrity sha512-uEb2zs6EJ6OZIqaMsCSliYVgzE/f7/s1fLWqtvRtHg/v5KBF2xds974fUnyatfxIDgkqzQVwFtam5KExqywx0Q== + +electron-to-chromium@^1.4.84: + version "1.4.94" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.94.tgz#f19206c977361264a51d53a7ea7ef861a94baa10" + integrity sha512-CoOKsuACoa0PAG3hQXxbh/XDiFcjGuSyGKUi09cjMHOt6RCi7/EXgXhaFF3I+aC89Omudqmkzd0YOQKxwtf/Bg== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +enhanced-resolve@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" + integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" + integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.0.tgz#0fa96d5ec1dfb99c029b1554362ab3fa1c3757df" + integrity sha512-xyymoxtIt1EOsSaGag+/jmcywRuieQoA2JbPCjnw9HukFj9/97aGPoZVFioaotzk1K5Qt9sHO5EutZbkrAXS0g== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.25.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" + integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.2" + has "^1.0.3" + is-core-module "^2.8.0" + is-glob "^4.0.3" + minimatch "^3.0.4" + object.values "^1.1.5" + resolve "^1.20.0" + tsconfig-paths "^3.12.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" + integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + dependencies: + "@babel/runtime" "^7.16.3" + aria-query "^4.2.2" + array-includes "^3.1.4" + ast-types-flow "^0.0.7" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.2.1" + language-tags "^1.0.5" + minimatch "^3.0.4" + +eslint-plugin-react-hooks@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" + integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== + +eslint-plugin-react@^7.27.1: + version "7.29.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" + integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + +eslint-plugin-testing-library@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.1.0.tgz#6ad539a53d4e897d3045902f8e534e07cebd4e8b" + integrity sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ== + dependencies: + "@typescript-eslint/utils" "^5.13.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint-webpack-plugin@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz#83dad2395e5f572d6f4d919eedaa9cf902890fcb" + integrity sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg== + dependencies: + "@types/eslint" "^7.28.2" + jest-worker "^27.3.1" + micromatch "^4.0.4" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + +eslint@^8.3.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e" + integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q== + dependencies: + "@eslint/eslintrc" "^1.2.1" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== + dependencies: + acorn "^8.7.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +follow-redirects@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== + dependencies: + debug "^3.0.0" + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" + integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" + integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" + integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.1, globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-parser-js@>=0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a" + integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^6.1.4: + version "6.1.5" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" + integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immer@^9.0.7: + version "9.0.12" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" + integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA== + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.6.1: + version "10.8.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a" + integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA== + dependencies: + async "0.9.x" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^27.0.0, jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.0.0.tgz#4de2ca1eb596acb1889752afbab84b74fcd99173" + integrity sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^27.0.0" + jest-watcher "^27.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.0.0, jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.3.1, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpointer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" + integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3, lilconfig@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.13, lodash@^4.17.14: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memfs@^3.1.2, memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime-types@^2.1.27, mime-types@^2.1.31: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nanoid@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.0.tgz#37a874ea723855f37db091e6c186e5b67a01d4b2" + integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-releases@^1.1.49: + version "1.1.49" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.49.tgz#67ba5a3fac2319262675ef864ed56798bb33b93e" + integrity sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg== + dependencies: + semver "^6.3.0" + +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.hasown@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" + integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + dependencies: + "@types/retry" "^0.12.0" + retry "^0.13.1" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +postcss-attribute-case-insensitive@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" + integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== + dependencies: + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz#f59ccaeb4ee78f1b32987d43df146109cc743073" + integrity sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz#61a0fd151d28b128aa6a8a21a2dad24eebb34d52" + integrity sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" + integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" + integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" + integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== + +postcss-custom-properties@^12.1.5: + version "12.1.5" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.5.tgz#e669cfff89b0ea6fc85c45864a32b450cb6b196f" + integrity sha512-FHbbB/hRo/7cxLGkc2NS7cDRIDN1oFqQnUKBiyh4b/gwk8DD8udvmRDpUhEK836kB8ggUCieHVOvZDnF9XhI3g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" + integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" + integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz#a12cfdb7d11fa1a99ccecc747f0c19718fb37152" + integrity sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" + integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== + +postcss-image-set-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" + integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.1.2.tgz#b75afe43ba9c1f16bfe9bb12c8109cabd55b5fc2" + integrity sha512-isudf5ldhg4fk16M8viAwAbg6Gv14lVO35N3Z/49NhbwPQ2xbiEoHgrRgpgQojosF4vF7jY653ktB6dDrUOR8Q== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" + integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== + dependencies: + lilconfig "^2.0.4" + yaml "^1.10.2" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" + integrity sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" + +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" + integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + +postcss-nesting@^10.1.3: + version "10.1.3" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.3.tgz#f0b1cd7ae675c697ab6a5a5ca1feea4784a2ef77" + integrity sha512-wUC+/YCik4wH3StsbC5fBG1s2Z3ZV74vjGqBFYtmYKlVxoio5TYGM06AiaKkQPPlkXWn72HKfS7Cw5PYxnoXSw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" + integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" + integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" + integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== + +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" + integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" + integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.4.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz#fb1c8b4cb405da042da0ddb8c5eda7842c08a449" + integrity sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg== + dependencies: + "@csstools/postcss-color-function" "^1.0.3" + "@csstools/postcss-font-format-keywords" "^1.0.0" + "@csstools/postcss-hwb-function" "^1.0.0" + "@csstools/postcss-ic-unit" "^1.0.0" + "@csstools/postcss-is-pseudo-class" "^2.0.1" + "@csstools/postcss-normalize-display-values" "^1.0.0" + "@csstools/postcss-oklab-function" "^1.0.2" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + autoprefixer "^10.4.4" + browserslist "^4.20.2" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^6.5.0" + postcss-attribute-case-insensitive "^5.0.0" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.2" + postcss-color-hex-alpha "^8.0.3" + postcss-color-rebeccapurple "^7.0.2" + postcss-custom-media "^8.0.0" + postcss-custom-properties "^12.1.5" + postcss-custom-selectors "^6.0.0" + postcss-dir-pseudo-class "^6.0.4" + postcss-double-position-gradients "^3.1.1" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.3" + postcss-image-set-function "^4.0.6" + postcss-initial "^4.0.1" + postcss-lab-function "^4.1.2" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.1.3" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.3" + postcss-page-break "^3.0.4" + postcss-place "^7.0.4" + postcss-pseudo-class-any-link "^7.1.1" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^5.0.0" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz#534eb1dadd9945eb07830dbcc06fb4d5d865b8e0" + integrity sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz#ac5fc506f7565dd872f82f5314c0f81a05630dc7" + integrity sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ== + dependencies: + balanced-match "^1.0.0" + +postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.3.5, postcss@^8.4.4, postcss@^8.4.6, postcss@^8.4.7: + version "8.4.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" + integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== + dependencies: + nanoid "^3.3.1" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.3" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-dev-utils@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" + integrity sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.10" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" + integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-scripts@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.0.tgz#6547a6d7f8b64364ef95273767466cc577cb4b60" + integrity sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.0" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.0" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.1: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexp.prototype.flags@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.14.2, resolve@^1.3.2: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.70.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" + integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== + dependencies: + node-forge "^1" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.4.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" + integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.6: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" + integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.0, strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + dependencies: + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tailwindcss@^3.0.2: + version "3.0.23" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10" + integrity sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== + dependencies: + arg "^5.0.1" + chalk "^4.1.2" + chokidar "^3.5.3" + color-name "^1.1.4" + cosmiconfig "^7.0.1" + detective "^5.2.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.11" + glob-parent "^6.0.2" + is-glob "^4.0.3" + normalize-path "^3.0.0" + object-hash "^2.2.0" + postcss "^8.4.6" + postcss-js "^4.0.0" + postcss-load-config "^3.1.0" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: + version "5.12.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" + integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +tsconfig-paths@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tslib@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" + integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== + dependencies: + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0: + version "4.7.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.2.2" + ansi-html-community "^0.0.8" + bonjour "^3.5.0" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + default-gateway "^6.0.3" + del "^6.0.0" + express "^4.17.1" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^4.0.0" + selfsigned "^2.0.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + strip-ansi "^7.0.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.70.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.9.2" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz#28be9bf89b8e4e0379d45903280c7c12f4df836f" + integrity sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g== + dependencies: + idb "^6.1.4" + workbox-core "6.5.2" + +workbox-broadcast-update@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz#b1f32bb40a9dcb5b05ca27e09fb7c01a0a126182" + integrity sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q== + dependencies: + workbox-core "6.5.2" + +workbox-build@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.2.tgz#774faafd84b1dc94b74739ceb5d8ff367748523b" + integrity sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.2" + workbox-broadcast-update "6.5.2" + workbox-cacheable-response "6.5.2" + workbox-core "6.5.2" + workbox-expiration "6.5.2" + workbox-google-analytics "6.5.2" + workbox-navigation-preload "6.5.2" + workbox-precaching "6.5.2" + workbox-range-requests "6.5.2" + workbox-recipes "6.5.2" + workbox-routing "6.5.2" + workbox-strategies "6.5.2" + workbox-streams "6.5.2" + workbox-sw "6.5.2" + workbox-window "6.5.2" + +workbox-cacheable-response@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz#d9252eb99f0d0fceb70f63866172f4eaac56a3e8" + integrity sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg== + dependencies: + workbox-core "6.5.2" + +workbox-core@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.2.tgz#f5e06a22c6cb4651d3e13107443d972fdbd47364" + integrity sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ== + +workbox-expiration@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.2.tgz#ee6ed755a220a0b375d67831f9237e4dcbccb59c" + integrity sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw== + dependencies: + idb "^6.1.4" + workbox-core "6.5.2" + +workbox-google-analytics@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz#a79fa7a40824873baaa333dcd72d1fdf1c53adf5" + integrity sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw== + dependencies: + workbox-background-sync "6.5.2" + workbox-core "6.5.2" + workbox-routing "6.5.2" + workbox-strategies "6.5.2" + +workbox-navigation-preload@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz#ffb3d9d5cdb881a3824851707da221dbb0bb3f23" + integrity sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg== + dependencies: + workbox-core "6.5.2" + +workbox-precaching@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.2.tgz#a3117b4d3eb61ce8d01b9dfc063c48155bd7f9d3" + integrity sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w== + dependencies: + workbox-core "6.5.2" + workbox-routing "6.5.2" + workbox-strategies "6.5.2" + +workbox-range-requests@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz#b8b7e5b5830fecc22f0a1d8815457921df2e5bf9" + integrity sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg== + dependencies: + workbox-core "6.5.2" + +workbox-recipes@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.2.tgz#19f47ec25a8788c65d0cc8d217cbebc0bbbb5c63" + integrity sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA== + dependencies: + workbox-cacheable-response "6.5.2" + workbox-core "6.5.2" + workbox-expiration "6.5.2" + workbox-precaching "6.5.2" + workbox-routing "6.5.2" + workbox-strategies "6.5.2" + +workbox-routing@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.2.tgz#e0ad46246ba51224fd57eff0dd46891b3220cb9a" + integrity sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA== + dependencies: + workbox-core "6.5.2" + +workbox-strategies@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.2.tgz#56b02e6959c6391351011fc2e5b0829aff1ed859" + integrity sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw== + dependencies: + workbox-core "6.5.2" + +workbox-streams@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.2.tgz#2fb6ba307f7d2cbda63f64522a197be868b4ea25" + integrity sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w== + dependencies: + workbox-core "6.5.2" + workbox-routing "6.5.2" + +workbox-sw@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.2.tgz#2f5dca0e96c61a450fccf0405095ddf1b6f43bc7" + integrity sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw== + +workbox-webpack-plugin@^6.4.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.2.tgz#0cf6e1d23d5107a88fd8502fd4f534215e1dd298" + integrity sha512-StrJ7wKp5tZuGVcoKLVjFWlhDy+KT7ZWsKnNcD6F08wA9Cpt6JN+PLIrplcsTHbQpoAV8+xg6RvcG0oc9z+RpQ== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.2" + +workbox-window@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.2.tgz#46d6412cd57039bdf3d5dd914ad21fb3f98fe980" + integrity sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.2" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.4.6: + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + +ws@^8.4.2: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 4cfb2b7f10bb63b0557022ef5d7ac2fe92ed4c3b Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Wed, 6 Apr 2022 17:17:52 +0100 Subject: [PATCH 06/12] Add post deployment tests --- changelog.md | 18 +- clients/prometheus_mock.go | 6 +- .../config/api_release_with_check.yaml | 2 +- functional_tests/features/kubernetes.feature | 35 +- functional_tests/main.go | 4 +- functional_tests/tests.log | 6477 +++++------------ plugins/canary/plugin_test.go | 2 +- plugins/consul/plugin.go | 2 +- plugins/consul/plugin_test.go | 121 +- plugins/httptest/plugin.go | 2 +- plugins/interfaces/deploymenttest.go | 3 +- plugins/kubernetes/plugin.go | 11 +- plugins/kubernetes/plugin_test.go | 4 +- plugins/mocks/deploymenttest.go | 5 +- plugins/mocks/mocks.go | 5 +- plugins/mocks/releaser.go | 13 + plugins/prometheus/monitor.go | 2 +- plugins/prometheus/monitor_test.go | 25 +- plugins/statemachine/statemachine.go | 2 +- plugins/statemachine/statemachine_test.go | 6 +- 20 files changed, 1977 insertions(+), 4768 deletions(-) diff --git a/changelog.md b/changelog.md index fe340e4..9e126df 100644 --- a/changelog.md +++ b/changelog.md @@ -12,7 +12,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Configuration for the server moved to global `config` package ### Added -- PostDeploymentTests +- Added features to run manual tests for candidate services before initial traffic is sent. + Post deployment tests can be configured to automatically call the defined endpoint for the consul + service under test. All traffic is routed over consul service mesh ensuring no requirement to have + the candidate service exposed outside of the mesh. + +```yaml +postDeploymentTest: + pluginName: "http" + config: + path: "/" + method: "GET" + requiredTestPasses: 3 + interval: "10s" + timeout: "120s" +``` + +- Added sidecar to controller deployment to allow communication with consul services for post deployment tests ## [0.0.14 - 2022-03-14 ### Fixed diff --git a/clients/prometheus_mock.go b/clients/prometheus_mock.go index ca23009..101a40b 100644 --- a/clients/prometheus_mock.go +++ b/clients/prometheus_mock.go @@ -17,5 +17,9 @@ type PrometheusMock struct { func (mq *PrometheusMock) Query(ctx context.Context, address, query string, ts time.Time) (model.Value, v1.Warnings, error) { args := mq.Called(ctx, query, ts) - return args.Get(0).(model.Value), args.Get(1).(v1.Warnings), args.Error(2) + if mv, ok := args.Get(0).(model.Value); ok { + return mv, args.Get(1).(v1.Warnings), args.Error(2) + } + + return nil, args.Get(1).(v1.Warnings), args.Error(2) } diff --git a/functional_tests/config/api_release_with_check.yaml b/functional_tests/config/api_release_with_check.yaml index 80304e0..32034df 100644 --- a/functional_tests/config/api_release_with_check.yaml +++ b/functional_tests/config/api_release_with_check.yaml @@ -18,7 +18,7 @@ spec: config: path: "/" method: "GET" - requiredTestPasses: 5 + requiredTestPasses: 3 interval: "10s" timeout: "120s" strategy: diff --git a/functional_tests/features/kubernetes.feature b/functional_tests/features/kubernetes.feature index 9207ffc..5799f7d 100644 --- a/functional_tests/features/kubernetes.feature +++ b/functional_tests/features/kubernetes.feature @@ -52,23 +52,21 @@ Feature: Kubernetes Then a Kubernetes deployment called "api-deployment" should not exist And a Kubernetes deployment called "api-deployment-primary" should not exist When I create a new Kubernetes release "./config/api_release.yaml" - Then a Kubernetes deployment called "api-deployment-primary" should not exist - And a Kubernetes deployment called "api-deployment" should not exist - When I create a new version of the Kubernetes deployment "./config/api.yaml" - Then a Kubernetes deployment called "api-deployment-primary" should exist - Then a Kubernetes deployment called "api-deployment" should not exist - And eventually a call to the URL "http://localhost:18080" contains the text + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ - API V1 + "status":"state_idle" """ And a Consul "service-defaults" called "api" should be created And a Consul "service-resolver" called "api" should be created And a Consul "service-router" called "api" should be created - And a Consul "service-splitter" called "api" should be created - And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + When I create a new version of the Kubernetes deployment "./config/api.yaml" + Then a Kubernetes deployment called "api-deployment-primary" should exist + And a Kubernetes deployment called "api-deployment" should not exist + And eventually a call to the URL "http://localhost:18080" contains the text """ - "status":"state_idle" + API V1 """ + And a Consul "service-splitter" called "api" should be created When I create a new version of the Kubernetes deployment "./config/api_canary.yaml" Then a Kubernetes deployment called "api-deployment-primary" should exist And a Kubernetes deployment called "api-deployment" should exist @@ -104,7 +102,6 @@ Feature: Kubernetes And a Consul "service-defaults" called "api" should be created And a Consul "service-resolver" called "api" should be created And a Consul "service-router" called "api" should be created - And a Consul "service-splitter" called "api" should be created And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ "status":"state_idle" @@ -112,6 +109,7 @@ Feature: Kubernetes When I create a new version of the Kubernetes deployment "./config/api_with_error.yaml" Then a Kubernetes deployment called "api-deployment-primary" should exist And a Kubernetes deployment called "api-deployment" should exist + And a Consul "service-splitter" called "api" should be created And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ "status":"state_idle" @@ -135,8 +133,13 @@ Feature: Kubernetes Then a Kubernetes deployment called "api-deployment" should not exist And a Kubernetes deployment called "api-deployment-primary" should not exist When I create a new Kubernetes release "./config/api_release_with_check.yaml" - Then a Kubernetes deployment called "api-deployment-primary" should not exist - And a Kubernetes deployment called "api-deployment" should not exist + Then a Consul "service-defaults" called "api" should be created + And a Consul "service-resolver" called "api" should be created + And a Consul "service-router" called "api" should be created + And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text + """ + "status":"state_idle" + """ When I create a new version of the Kubernetes deployment "./config/api.yaml" Then a Kubernetes deployment called "api-deployment-primary" should exist Then a Kubernetes deployment called "api-deployment" should not exist @@ -144,10 +147,6 @@ Feature: Kubernetes """ API V1 """ - And a Consul "service-defaults" called "api" should be created - And a Consul "service-resolver" called "api" should be created - And a Consul "service-router" called "api" should be created - And a Consul "service-splitter" called "api" should be created And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ "status":"state_idle" @@ -155,6 +154,7 @@ Feature: Kubernetes When I create a new version of the Kubernetes deployment "./config/api_canary.yaml" Then a Kubernetes deployment called "api-deployment-primary" should exist And a Kubernetes deployment called "api-deployment" should exist + And a Consul "service-splitter" called "api" should be created And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ "status":"state_idle" @@ -187,7 +187,6 @@ Feature: Kubernetes And a Consul "service-defaults" called "api" should be created And a Consul "service-resolver" called "api" should be created And a Consul "service-router" called "api" should be created - And a Consul "service-splitter" called "api" should be created And eventually a call to the URL "https://localhost:9443/v1/releases" contains the text """ "status":"state_idle" diff --git a/functional_tests/main.go b/functional_tests/main.go index 1dcbf00..92ee9a1 100644 --- a/functional_tests/main.go +++ b/functional_tests/main.go @@ -167,8 +167,8 @@ func startServer() error { func retryOperation(f func() error) error { // max time to wait 300s attempt := 0 - maxAttempts := 60 - delay := 5 * time.Second + maxAttempts := 100 + delay := 10 * time.Second var funcError error for attempt = 0; attempt < maxAttempts; attempt++ { diff --git a/functional_tests/tests.log b/functional_tests/tests.log index 2737a33..cfebc55 100755 --- a/functional_tests/tests.log +++ b/functional_tests/tests.log @@ -1,16 +1,18 @@ -2022-04-02T08:19:31.239+0100 [ERROR] 2022-04-02T08:19:31.239+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs -2022-04-02T08:19:33.361+0100 [ERROR] 2022-04-02T08:19:33.361+0100 [DEBUG] Starting Ingress -2022-04-02T08:19:33.362+0100 [ERROR] Running configuration from: ./shipyard/kubernetes +2022-04-05T15:31:05.716+0100 [ERROR] 2022-04-05T15:31:05.716+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs +2022-04-05T15:31:11.261+0100 [ERROR] 2022-04-05T15:31:11.261+0100 [DEBUG] Starting Ingress +2022-04-05T15:31:11.261+0100 [ERROR] Running configuration from: ./shipyard/kubernetes -2022-04-02T08:19:33.362+0100 [DEBUG] Statefile does not exist -2022-04-02T08:19:36.393+0100 [ERROR] 2022-04-02T08:19:36.393+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes -2022-04-02T08:19:36.393+0100 [DEBUG] Statefile does not exist -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_USER -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR -2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_namespace +2022-04-05T15:31:11.261+0100 [DEBUG] Statefile does not exist +2022-04-05T15:31:14.644+0100 [ERROR] 2022-04-05T15:31:14.644+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes +2022-04-05T15:31:14.644+0100 [DEBUG] Statefile does not exist +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_CACERT +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=UPSTREAMS +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TLS_KEY +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TLS_CERT +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_namespace source= | kind: Namespace | apiVersion: v1 @@ -18,33 +20,11 @@ | name: consul | labels: | name: consul - -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_CAKEY -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR -2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=controller_values - source= - | controller: - | enabled: "#{{ .Vars.controller_enabled }}" - | container_config: - | image: - | repository: "#{{ .Vars.controller_repo }}" - | tag: "#{{ .Vars.controller_version }}" - | autoencrypt: - | enabled: #{{ .Vars.tls_enabled }} - | acls: - | enabled: #{{ .Vars.acls_enabled }} - | #{{- if eq .Vars.controller_enabled false }} - | webhook: - | service: controller-webhook - | namespace: shipyard - | #{{ end }} - -2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_CACERT -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TLS_CERT -2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml -2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_values +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_USER +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_values source= | # Available parameters and their default values for the Consul chart. | # Server, when enabled, configures a server cluster to run. This should @@ -141,10 +121,21 @@ | enabled: #{{ .Vars.mesh_gateway_enabled }} | type: NodePort | nodePort: 30443 -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=TLS_KEY -2022-04-02T08:19:39.620+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=consul_proxy_defaults + +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_CAKEY +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Network: ref=dc1 +2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=consul_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: consul + | labels: + | name: consul + +2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_proxy_defaults source= | --- | apiVersion: consul.hashicorp.com/v1alpha1 @@ -193,24 +184,9 @@ | } | } | } -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=controller_values - destination= - | controller: - | enabled: "false" - | container_config: - | image: - | repository: "nicholasjackson/consul-release-controller" - | tag: "" - | autoencrypt: - | enabled: true - | acls: - | enabled: true - | webhook: - | service: controller-webhook - | namespace: shipyard - | - -2022-04-02T08:19:39.620+0100 [DEBUG] Template content: ref=certs_script +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=KUBECONFIG +2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh +2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=certs_script source= | #! /bin/sh -e | @@ -221,19 +197,7 @@ | kubectl get secret consul-release-controller-certificate -n consul -o json | \ | jq -r '.data."tls.key"' | \ | base64 -d > /output/tls.key -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=certs_script - destination= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key - -2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_proxy_defaults +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=consul_proxy_defaults destination= | --- | apiVersion: consul.hashicorp.com/v1alpha1 @@ -282,8 +246,37 @@ | } | } | } - -2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_values +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=certs_script + destination= + | #! /bin/sh -e + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.crt"' | \ + | base64 -d > /output/tls.crt + | + | kubectl get secret consul-release-controller-certificate -n consul -o json | \ + | jq -r '.data."tls.key"' | \ + | base64 -d > /output/tls.key +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml +2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=controller_values + source= + | controller: + | enabled: "#{{ .Vars.controller_enabled }}" + | container_config: + | image: + | repository: "#{{ .Vars.controller_repo }}" + | tag: "#{{ .Vars.controller_version }}" + | autoencrypt: + | enabled: #{{ .Vars.tls_enabled }} + | acls: + | enabled: #{{ .Vars.acls_enabled }} + | #{{- if eq .Vars.controller_enabled false }} + | webhook: + | service: controller-webhook + | namespace: shipyard + | #{{ end }} +2022-04-05T15:31:17.795+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR +2022-04-05T15:31:17.795+0100 [DEBUG] Template output: ref=consul_values destination= | # Available parameters and their default values for the Consul chart. | # Server, when enabled, configures a server cluster to run. This should @@ -384,102 +377,106 @@ | type: NodePort | nodePort: 30443 -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=UPSTREAMS -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Network: ref=dc1 -2022-04-02T08:19:39.620+0100 [ERROR] 2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE -2022-04-02T08:19:39.620+0100 [INFO] Creating Output: ref=KUBECONFIG -2022-04-02T08:19:39.620+0100 [DEBUG] Template output: ref=consul_namespace +2022-04-05T15:31:17.795+0100 [DEBUG] Template output: ref=controller_values destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:19:39.621+0100 [ERROR] 2022-04-02T08:19:39.621+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 -2022-04-02T08:19:39.645+0100 [ERROR] 2022-04-02T08:19:39.645+0100 [INFO] Creating ImageCache: ref=docker-cache -2022-04-02T08:19:39.648+0100 [ERROR] 2022-04-02T08:19:39.648+0100 [DEBUG] Connecting cache to network: name=network.dc1 -2022-04-02T08:19:39.649+0100 [ERROR] 2022-04-02T08:19:39.649+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:19:39.668+0100 [ERROR] 2022-04-02T08:19:39.668+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:19:39.668+0100 [DEBUG] Creating Docker Container: ref=68585690-import -2022-04-02T08:19:42.346+0100 [ERROR] 2022-04-02T08:19:42.346+0100 [DEBUG] Forcefully remove: container=23d98bbe600018033d9fcf4d629a556bc8a786880feb4f1e3238952b36a59898 -2022-04-02T08:19:42.757+0100 [ERROR] 2022-04-02T08:19:42.757+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 -2022-04-02T08:19:42.757+0100 [DEBUG] Creating Docker Container: ref=docker-cache -2022-04-02T08:19:42.815+0100 [ERROR] 2022-04-02T08:19:42.814+0100 [DEBUG] Remove container from default networks: ref=docker-cache -2022-04-02T08:19:42.817+0100 [ERROR] 2022-04-02T08:19:42.817+0100 [DEBUG] Attaching container to network: ref=441440dce441a33d01b9b9e0263bcbb2cb9aec7740227a007dcd4dbceb001acf network=dc1 -2022-04-02T08:19:42.823+0100 [ERROR] 2022-04-02T08:19:42.823+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache -2022-04-02T08:19:43.379+0100 [ERROR] 2022-04-02T08:19:43.379+0100 [INFO] dc1: Creating Cluster: ref=dc1 -2022-04-02T08:19:43.402+0100 [ERROR] 2022-04-02T08:19:43.402+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 -2022-04-02T08:19:43.404+0100 [ERROR] 2022-04-02T08:19:43.403+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:19:43.404+0100 [ERROR] 2022-04-02T08:19:43.404+0100 [DEBUG] Creating Docker Container: ref=server.dc1 -2022-04-02T08:19:43.470+0100 [ERROR] 2022-04-02T08:19:43.470+0100 [DEBUG] Remove container from default networks: ref=server.dc1 -2022-04-02T08:19:43.473+0100 [ERROR] 2022-04-02T08:19:43.473+0100 [DEBUG] Attaching container to network: ref=3b13fb6fa8a9e03ca6efa9c47401857448a1eaf4dd000fc6c519e1b0192bd782 network=dc1 -2022-04-02T08:19:43.479+0100 [ERROR] 2022-04-02T08:19:43.479+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 -2022-04-02T08:19:46.103+0100 [ERROR] 2022-04-02T08:19:46.103+0100 [DEBUG] Copying file from: id=3b13fb6fa8a9e03ca6efa9c47401857448a1eaf4dd000fc6c519e1b0192bd782 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:19:46.143+0100 [ERROR] 2022-04-02T08:19:46.143+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:48.154+0100 [ERROR] 2022-04-02T08:19:48.154+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:50.157+0100 [ERROR] 2022-04-02T08:19:50.157+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:51.394+0100 [ERROR] 2022-04-02T08:19:51.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.001073] -2022-04-02T08:19:52.160+0100 [ERROR] 2022-04-02T08:19:52.160+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:54.165+0100 [ERROR] 2022-04-02T08:19:54.164+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:56.168+0100 [ERROR] 2022-04-02T08:19:56.168+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:19:58.172+0100 [ERROR] 2022-04-02T08:19:58.172+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:20:00.175+0100 [ERROR] 2022-04-02T08:20:00.175+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:20:02.179+0100 [ERROR] 2022-04-02T08:20:02.179+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-w5qs8 namespace=kube-system status=Pending -2022-04-02T08:20:04.184+0100 [ERROR] 2022-04-02T08:20:04.184+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-w5qs8 namespace=kube-system status=Pending -2022-04-02T08:20:06.187+0100 [ERROR] 2022-04-02T08:20:06.187+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:20:06.187+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:20:06.393+0100 [ERROR] 2022-04-02T08:20:06.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000103] -2022-04-02T08:20:08.192+0100 [ERROR] 2022-04-02T08:20:08.192+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:20:08.192+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run -2022-04-02T08:20:08.210+0100 [ERROR] 2022-04-02T08:20:08.209+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:20:08.209+0100 [DEBUG] Creating Docker Container: ref=09975013-import -2022-04-02T08:20:10.738+0100 [ERROR] 2022-04-02T08:20:10.738+0100 [DEBUG] Forcefully remove: container=7988416f996af55736911ad527c3a17e68dfbe3e02fc1d95651689e172d80f65 -2022-04-02T08:20:11.134+0100 [ERROR] 2022-04-02T08:20:11.134+0100 [DEBUG] dc1: Deploying connector -2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/2967719745/namespace.yaml -2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing secret config: file=/tmp/2967719745/secret.yaml -2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/2967719745/rbac.yaml -2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/2967719745/deployment.yaml -2022-04-02T08:20:13.020+0100 [ERROR] 2022-04-02T08:20:13.020+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/namespace.yaml -2022-04-02T08:20:13.569+0100 [ERROR] 2022-04-02T08:20:13.569+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/secret.yaml -2022-04-02T08:20:13.576+0100 [ERROR] 2022-04-02T08:20:13.576+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/rbac.yaml -2022-04-02T08:20:13.585+0100 [ERROR] 2022-04-02T08:20:13.585+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2967719745/deployment.yaml -2022-04-02T08:20:13.603+0100 [ERROR] 2022-04-02T08:20:13.603+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=controller-webhook -2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=upstreams-proxy -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:31205 local_addr=localhost:19443 -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] -2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:31205 local_addr=consul-release-controller.default.svc:8080 -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-rpc -2022-04-02T08:20:15.607+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-lan-serf -2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8300 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8301 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:31205 local_addr=consul-ingress-gateway.consul.svc:18080 -2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=web -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:31205 local_addr=web.default.svc:9090 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:31205 local_addr=consul-server.consul.svc:8501 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.607+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:31205 local_addr=consul-ingress-gateway.consul.svc:18443 -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml -2022-04-02T08:20:15.608+0100 [ERROR] 2022-04-02T08:20:15.608+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:20:15.629+0100 [ERROR] 2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=f2215575-a230-405b-b077-9272a0e271e3 -2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=6be15526-d8ae-478f-a485-4a604913c892 -2022-04-02T08:20:15.629+0100 [ERROR] 2022-04-02T08:20:15.629+0100 [DEBUG] Successfully exposed service: id=11e05ab2-2576-4335-b924-229fe61c0af6 -2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=1ff3d65b-a305-4803-a05c-42d9bfc34537 -2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=bbea0417-1f3c-43ed-93f8-222423849480 -2022-04-02T08:20:15.635+0100 [ERROR] 2022-04-02T08:20:15.635+0100 [DEBUG] Successfully exposed service: id=2026a59d-b584-4883-9819-cb89d28defb6 -2022-04-02T08:20:15.636+0100 [ERROR] 2022-04-02T08:20:15.636+0100 [DEBUG] Successfully exposed service: id=e013a702-b5b7-4abe-a771-b73a1c958af4 -2022-04-02T08:20:15.637+0100 [ERROR] 2022-04-02T08:20:15.637+0100 [DEBUG] Successfully exposed service: id=2fd81567-fa1a-4702-93cb-b623ccb40b58 -2022-04-02T08:20:15.680+0100 [ERROR] 2022-04-02T08:20:15.680+0100 [INFO] Creating Helm chart: ref=consul -2022-04-02T08:20:15.680+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com -2022-04-02T08:20:15.770+0100 [ERROR] 2022-04-02T08:20:15.770+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:20:15.770+0100 [ERROR] 2022-04-02T08:20:15.770+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul -2022-04-02T08:20:15.863+0100 [ERROR] 2022-04-02T08:20:15.863+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz -2022-04-02T08:20:15.870+0100 [ERROR] 2022-04-02T08:20:15.870+0100 [DEBUG] Using Values: ref=consul + | controller: + | enabled: "false" + | container_config: + | image: + | repository: "nicholasjackson/consul-release-controller" + | tag: "" + | autoencrypt: + | enabled: true + | acls: + | enabled: true + | webhook: + | service: controller-webhook + | namespace: shipyard + | +2022-04-05T15:31:17.796+0100 [ERROR] 2022-04-05T15:31:17.796+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 +2022-04-05T15:31:17.819+0100 [ERROR] 2022-04-05T15:31:17.819+0100 [INFO] Creating ImageCache: ref=docker-cache +2022-04-05T15:31:17.821+0100 [ERROR] 2022-04-05T15:31:17.821+0100 [DEBUG] Connecting cache to network: name=network.dc1 +2022-04-05T15:31:17.822+0100 [ERROR] 2022-04-05T15:31:17.822+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-05T15:31:17.839+0100 [ERROR] 2022-04-05T15:31:17.839+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-05T15:31:17.839+0100 [DEBUG] Creating Docker Container: ref=39412348-import +2022-04-05T15:31:20.381+0100 [ERROR] 2022-04-05T15:31:20.381+0100 [DEBUG] Forcefully remove: container=b82c9801aaf8551ca43ea5519e143cb1733eb171de471fd60fa0eccdc05c6d8a +2022-04-05T15:31:20.800+0100 [ERROR] 2022-04-05T15:31:20.799+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 +2022-04-05T15:31:20.800+0100 [ERROR] 2022-04-05T15:31:20.800+0100 [DEBUG] Creating Docker Container: ref=docker-cache +2022-04-05T15:31:20.849+0100 [ERROR] 2022-04-05T15:31:20.849+0100 [DEBUG] Remove container from default networks: ref=docker-cache +2022-04-05T15:31:20.852+0100 [ERROR] 2022-04-05T15:31:20.852+0100 [DEBUG] Attaching container to network: ref=bbfc08c1ee6527702e40ea18867e2515502e5fd5fe0b03f322358ee633b413ef network=dc1 +2022-04-05T15:31:20.858+0100 [ERROR] 2022-04-05T15:31:20.858+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache +2022-04-05T15:31:21.389+0100 [ERROR] 2022-04-05T15:31:21.388+0100 [INFO] dc1: Creating Cluster: ref=dc1 +2022-04-05T15:31:21.411+0100 [ERROR] 2022-04-05T15:31:21.411+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 +2022-04-05T15:31:21.412+0100 [ERROR] 2022-04-05T15:31:21.412+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run +2022-04-05T15:31:21.412+0100 [ERROR] 2022-04-05T15:31:21.412+0100 [DEBUG] Creating Docker Container: ref=server.dc1 +2022-04-05T15:31:21.463+0100 [ERROR] 2022-04-05T15:31:21.463+0100 [DEBUG] Remove container from default networks: ref=server.dc1 +2022-04-05T15:31:21.467+0100 [ERROR] 2022-04-05T15:31:21.467+0100 [DEBUG] Attaching container to network: ref=bfe28d4312bd0a621bb97b4c72b41e3d1318d70bc8c06d08501b9c69e365d53f network=dc1 +2022-04-05T15:31:21.476+0100 [ERROR] 2022-04-05T15:31:21.476+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 +2022-04-05T15:31:24.067+0100 [ERROR] 2022-04-05T15:31:24.067+0100 [DEBUG] Copying file from: id=bfe28d4312bd0a621bb97b4c72b41e3d1318d70bc8c06d08501b9c69e365d53f src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:31:24.104+0100 [ERROR] 2022-04-05T15:31:24.104+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:26.113+0100 [ERROR] 2022-04-05T15:31:26.113+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:28.116+0100 [ERROR] 2022-04-05T15:31:28.116+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:29.644+0100 [ERROR] 2022-04-05T15:31:29.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000652] +2022-04-05T15:31:30.119+0100 [ERROR] 2022-04-05T15:31:30.119+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:32.123+0100 [ERROR] 2022-04-05T15:31:32.123+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:34.127+0100 [ERROR] 2022-04-05T15:31:34.127+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:36.131+0100 [ERROR] 2022-04-05T15:31:36.130+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:38.133+0100 [ERROR] 2022-04-05T15:31:38.133+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:40.137+0100 [ERROR] 2022-04-05T15:31:40.137+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:42.142+0100 [ERROR] 2022-04-05T15:31:42.141+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-hlswc namespace=kube-system status=Pending +2022-04-05T15:31:44.146+0100 [ERROR] 2022-04-05T15:31:44.146+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner +2022-04-05T15:31:44.146+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-05T15:31:44.644+0100 [ERROR] 2022-04-05T15:31:44.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000369] +2022-04-05T15:31:46.149+0100 [ERROR] 2022-04-05T15:31:46.149+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns +2022-04-05T15:31:46.149+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run +2022-04-05T15:31:46.166+0100 [ERROR] 2022-04-05T15:31:46.166+0100 [DEBUG] Image exists in local cache: image=alpine:latest +2022-04-05T15:31:46.166+0100 [DEBUG] Creating Docker Container: ref=66538416-import +2022-04-05T15:31:48.639+0100 [ERROR] 2022-04-05T15:31:48.639+0100 [DEBUG] Forcefully remove: container=51d1374847f4bc317ba4ca6fbd5f1d40ec432d810fd233878608994297c1e2a2 +2022-04-05T15:31:48.959+0100 [ERROR] 2022-04-05T15:31:48.959+0100 [DEBUG] dc1: Deploying connector +2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/2811884817/namespace.yaml +2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing secret config: file=/tmp/2811884817/secret.yaml +2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/2811884817/rbac.yaml +2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/2811884817/deployment.yaml +2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/namespace.yaml +2022-04-05T15:31:50.862+0100 [ERROR] 2022-04-05T15:31:50.862+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/secret.yaml +2022-04-05T15:31:50.867+0100 [ERROR] 2022-04-05T15:31:50.867+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/rbac.yaml +2022-04-05T15:31:50.874+0100 [ERROR] 2022-04-05T15:31:50.874+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/deployment.yaml +2022-04-05T15:31:50.890+0100 [ERROR] 2022-04-05T15:31:50.890+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-05T15:31:52.893+0100 [ERROR] 2022-04-05T15:31:52.893+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=web +2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-rpc +2022-04-05T15:31:52.894+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=upstreams-proxy +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:31246 local_addr=web.default.svc:9090 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:31246 local_addr=consul-release-controller.default.svc:8080 +2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=controller-webhook +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-lan-serf +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8301 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8300 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:31246 local_addr=consul-ingress-gateway.consul.svc:18080 +2022-04-05T15:31:52.894+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] +2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8501 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:31246 local_addr=localhost:19443 +2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:31246 local_addr=consul-ingress-gateway.consul.svc:18443 +2022-04-05T15:31:52.895+0100 [ERROR] 2022-04-05T15:31:52.895+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml +2022-04-05T15:31:52.914+0100 [ERROR] 2022-04-05T15:31:52.914+0100 [DEBUG] Successfully exposed service: id=80a9f5b7-2146-4fa1-ba43-90653767e3c1 +2022-04-05T15:31:52.915+0100 [ERROR] 2022-04-05T15:31:52.915+0100 [DEBUG] Successfully exposed service: id=2e970413-132b-43c3-9207-719a118ab9f4 +2022-04-05T15:31:52.916+0100 [ERROR] 2022-04-05T15:31:52.916+0100 [DEBUG] Successfully exposed service: id=e9882f55-1b26-4797-9db1-225a5aae969f +2022-04-05T15:31:52.918+0100 [ERROR] 2022-04-05T15:31:52.918+0100 [DEBUG] Successfully exposed service: id=1075ce46-24c5-4cc5-a723-d1240b4a6307 +2022-04-05T15:31:52.918+0100 [ERROR] 2022-04-05T15:31:52.918+0100 [DEBUG] Successfully exposed service: id=27c4bf68-b92d-47c2-83ee-d8ca4cf6d790 +2022-04-05T15:31:52.919+0100 [ERROR] 2022-04-05T15:31:52.919+0100 [DEBUG] Successfully exposed service: id=963f10b5-6dad-4fe3-b58e-2a9b9506ad6b +2022-04-05T15:31:52.921+0100 [ERROR] 2022-04-05T15:31:52.921+0100 [DEBUG] Successfully exposed service: id=5da0479b-7375-4d0c-8d65-437475656100 +2022-04-05T15:31:52.922+0100 [ERROR] 2022-04-05T15:31:52.922+0100 [DEBUG] Successfully exposed service: id=dacf1cb6-ba64-45d4-91b0-8da9af742e83 +2022-04-05T15:31:52.960+0100 [ERROR] 2022-04-05T15:31:52.960+0100 [INFO] Creating Helm chart: ref=consul +2022-04-05T15:31:52.960+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com +2022-04-05T15:31:53.054+0100 [ERROR] 2022-04-05T15:31:53.054+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:31:53.055+0100 [ERROR] 2022-04-05T15:31:53.054+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul +2022-04-05T15:31:53.150+0100 [ERROR] 2022-04-05T15:31:53.150+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz +2022-04-05T15:31:53.157+0100 [ERROR] 2022-04-05T15:31:53.157+0100 [DEBUG] Using Values: ref=consul values= | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ | "ui_config": { @@ -492,132 +489,63 @@ | } | replicas:1 storage:128Mi] ui:map[enabled:true]] -2022-04-02T08:20:15.870+0100 [DEBUG] Validate chart: ref=consul -2022-04-02T08:20:15.870+0100 [DEBUG] Run chart: ref=consul -2022-04-02T08:20:16.286+0100 [ERROR] 2022-04-02T08:20:16.285+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:20:18.265+0100 [ERROR] 2022-04-02T08:20:18.265+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" -2022-04-02T08:20:18.269+0100 [ERROR] 2022-04-02T08:20:18.268+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" -2022-04-02T08:20:18.291+0100 [ERROR] 2022-04-02T08:20:18.291+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager status=Pending -2022-04-02T08:20:18.323+0100 [ERROR] 2022-04-02T08:20:18.323+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:20:18.329+0100 [ERROR] 2022-04-02T08:20:18.329+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" -2022-04-02T08:20:18.332+0100 [ERROR] 2022-04-02T08:20:18.332+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:20:18.386+0100 [ERROR] 2022-04-02T08:20:18.386+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:20:18.391+0100 [ERROR] 2022-04-02T08:20:18.391+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" -2022-04-02T08:20:18.394+0100 [ERROR] 2022-04-02T08:20:18.393+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:20:18.452+0100 [ERROR] 2022-04-02T08:20:18.452+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:20:18.457+0100 [ERROR] 2022-04-02T08:20:18.457+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:20:18.460+0100 [ERROR] 2022-04-02T08:20:18.460+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" -2022-04-02T08:20:18.515+0100 [ERROR] 2022-04-02T08:20:18.515+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:20:18.523+0100 [ERROR] 2022-04-02T08:20:18.523+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" -2022-04-02T08:20:18.528+0100 [ERROR] 2022-04-02T08:20:18.528+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" -2022-04-02T08:20:18.528+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:18.541+0100 [ERROR] 2022-04-02T08:20:18.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:20:18.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:20.295+0100 [ERROR] 2022-04-02T08:20:20.295+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False -2022-04-02T08:20:20.602+0100 [ERROR] 2022-04-02T08:20:20.602+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:20:20.602+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:20.610+0100 [ERROR] 2022-04-02T08:20:20.609+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:20:20.611+0100 [ERROR] 2022-04-02T08:20:20.611+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:20:20.616+0100 [ERROR] 2022-04-02T08:20:20.616+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" -2022-04-02T08:20:21.018+0100 [ERROR] 2022-04-02T08:20:21.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:20:21.023+0100 [ERROR] 2022-04-02T08:20:21.022+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" -2022-04-02T08:20:21.025+0100 [ERROR] 2022-04-02T08:20:21.025+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" -2022-04-02T08:20:21.025+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:21.032+0100 [ERROR] 2022-04-02T08:20:21.032+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:20:21.032+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:21.394+0100 [ERROR] 2022-04-02T08:20:21.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000756] -2022-04-02T08:20:22.300+0100 [ERROR] 2022-04-02T08:20:22.300+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False -2022-04-02T08:20:24.306+0100 [ERROR] 2022-04-02T08:20:24.306+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False -2022-04-02T08:20:26.313+0100 [ERROR] 2022-04-02T08:20:26.313+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False -2022-04-02T08:20:28.319+0100 [ERROR] 2022-04-02T08:20:28.319+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-vs562 namespace=cert-manager type=Ready value=False -2022-04-02T08:20:30.325+0100 [ERROR] 2022-04-02T08:20:30.325+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:20:36.393+0100 [ERROR] 2022-04-02T08:20:36.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.000410] -2022-04-02T08:20:41.666+0100 [ERROR] 2022-04-02T08:20:41.666+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:20:41.666+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:20:41.673+0100 [ERROR] 2022-04-02T08:20:41.673+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:20:41.675+0100 [ERROR] 2022-04-02T08:20:41.675+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" -2022-04-02T08:20:41.736+0100 [ERROR] 2022-04-02T08:20:41.736+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:20:43.741+0100 [ERROR] 2022-04-02T08:20:43.741+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-9d879 namespace=consul status=Pending -2022-04-02T08:20:45.747+0100 [ERROR] 2022-04-02T08:20:45.747+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-9d879 namespace=consul type=Ready value=False -2022-04-02T08:20:47.752+0100 [ERROR] 2022-04-02T08:20:47.752+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:20:47.752+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:20:49.758+0100 [ERROR] 2022-04-02T08:20:49.758+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:20:49.758+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:20:51.394+0100 [ERROR] 2022-04-02T08:20:51.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000667] -2022-04-02T08:20:51.762+0100 [ERROR] 2022-04-02T08:20:51.762+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:20:51.762+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:20:53.767+0100 [ERROR] 2022-04-02T08:20:53.767+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.767+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=monitoring_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] -2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=grafana_secret_template - source= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: #{{ .Vars.monitoring_namespace }} - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=monitoring_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=zipkin -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=tempo -2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=grafana -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh -2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=fetch_consul_resources - source= - | #!/bin/sh -e - | - | echo "Port #{{ .Vars.port }}" - | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" - | - | #{{ if eq .Vars.acl_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | #{{end}} - | - | #{{ if eq .Vars.tls_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | #{{end}} -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Creating Helm chart: ref=prometheus -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Create Ingress: ref=prometheus -2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=fetch_consul_resources - destination= - | #!/bin/sh -e - | - | echo "Port 8501" - | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" - | - | - | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | - | - | - | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:31205 local_addr=tempo.monitoring.svc:9411 -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:31205 local_addr=grafana.monitoring.svc:80 -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template content: ref=prometheus_operator_template +2022-04-05T15:31:53.157+0100 [DEBUG] Validate chart: ref=consul +2022-04-05T15:31:53.157+0100 [DEBUG] Run chart: ref=consul +2022-04-05T15:31:53.294+0100 [ERROR] 2022-04-05T15:31:53.294+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-05T15:31:53.858+0100 [ERROR] 2022-04-05T15:31:53.858+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" +2022-04-05T15:31:53.860+0100 [ERROR] 2022-04-05T15:31:53.860+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" +2022-04-05T15:31:53.911+0100 [ERROR] 2022-04-05T15:31:53.910+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-05T15:31:53.915+0100 [ERROR] 2022-04-05T15:31:53.915+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" +2022-04-05T15:31:53.917+0100 [ERROR] 2022-04-05T15:31:53.917+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-05T15:31:53.980+0100 [ERROR] 2022-04-05T15:31:53.980+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-05T15:31:53.984+0100 [ERROR] 2022-04-05T15:31:53.984+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" +2022-04-05T15:31:53.986+0100 [ERROR] 2022-04-05T15:31:53.986+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" +2022-04-05T15:31:54.036+0100 [ERROR] 2022-04-05T15:31:54.035+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-05T15:31:54.040+0100 [ERROR] 2022-04-05T15:31:54.040+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-05T15:31:54.042+0100 [ERROR] 2022-04-05T15:31:54.042+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" +2022-04-05T15:31:54.091+0100 [ERROR] 2022-04-05T15:31:54.091+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-05T15:31:54.097+0100 [ERROR] 2022-04-05T15:31:54.097+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" +2022-04-05T15:31:54.102+0100 [ERROR] 2022-04-05T15:31:54.101+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" +2022-04-05T15:31:54.102+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:31:54.111+0100 [ERROR] 2022-04-05T15:31:54.111+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-05T15:31:54.111+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:31:55.298+0100 [ERROR] 2022-04-05T15:31:55.298+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-cb87l namespace=cert-manager status=Pending +2022-04-05T15:31:56.762+0100 [ERROR] 2022-04-05T15:31:56.762+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-05T15:31:56.762+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:31:56.770+0100 [ERROR] 2022-04-05T15:31:56.770+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" +2022-04-05T15:31:56.772+0100 [ERROR] 2022-04-05T15:31:56.772+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" +2022-04-05T15:31:56.780+0100 [ERROR] 2022-04-05T15:31:56.780+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" +2022-04-05T15:31:57.192+0100 [ERROR] 2022-04-05T15:31:57.191+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" +2022-04-05T15:31:57.206+0100 [ERROR] 2022-04-05T15:31:57.206+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" +2022-04-05T15:31:57.208+0100 [ERROR] 2022-04-05T15:31:57.208+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" +2022-04-05T15:31:57.208+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:31:57.214+0100 [ERROR] 2022-04-05T15:31:57.214+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-05T15:31:57.214+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:31:57.304+0100 [ERROR] 2022-04-05T15:31:57.303+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:31:59.308+0100 [ERROR] 2022-04-05T15:31:59.308+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:31:59.645+0100 [ERROR] 2022-04-05T15:31:59.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.001100] +2022-04-05T15:32:01.325+0100 [ERROR] 2022-04-05T15:32:01.325+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:32:03.330+0100 [ERROR] 2022-04-05T15:32:03.330+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:32:05.335+0100 [ERROR] 2022-04-05T15:32:05.335+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:32:07.340+0100 [ERROR] 2022-04-05T15:32:07.340+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False +2022-04-05T15:32:09.345+0100 [ERROR] 2022-04-05T15:32:09.345+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager +2022-04-05T15:32:14.645+0100 [ERROR] 2022-04-05T15:32:14.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001718] +2022-04-05T15:32:20.937+0100 [ERROR] 2022-04-05T15:32:20.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-05T15:32:20.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:20.945+0100 [ERROR] 2022-04-05T15:32:20.945+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" +2022-04-05T15:32:20.947+0100 [ERROR] 2022-04-05T15:32:20.947+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" +2022-04-05T15:32:21.005+0100 [ERROR] 2022-04-05T15:32:21.005+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-05T15:32:23.010+0100 [ERROR] 2022-04-05T15:32:23.010+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-wjrlr namespace=consul type=Ready value=False +2022-04-05T15:32:25.016+0100 [ERROR] 2022-04-05T15:32:25.016+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector +2022-04-05T15:32:25.016+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-05T15:32:27.021+0100 [ERROR] 2022-04-05T15:32:27.021+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client +2022-04-05T15:32:27.021+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-05T15:32:29.027+0100 [ERROR] 2022-04-05T15:32:29.027+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller +2022-04-05T15:32:29.027+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-05T15:32:29.644+0100 [ERROR] 2022-04-05T15:32:29.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000414] +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=prometheus_operator_template source= | apiVersion: monitoring.coreos.com/v1 | kind: ServiceMonitor @@ -655,8 +583,21 @@ | podMetricsEndpoints: | - port: "9102" -2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:31205 local_addr=tempo.default.svc:3100 -2022-04-02T08:20:53.768+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=prometheus_operator_template +2022-04-05T15:32:31.032+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=grafana +2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=prometheus +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=monitoring_namespace + source= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:31246 local_addr=prometheus-operated.monitoring.svc:9090 +2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:31246 local_addr=grafana.monitoring.svc:80 +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=prometheus_operator_template destination= | apiVersion: monitoring.coreos.com/v1 | kind: ServiceMonitor @@ -693,7 +634,68 @@ | metrics: enabled | podMetricsEndpoints: | - port: "9102" -2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Template output: ref=grafana_secret_template +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=monitoring_namespace + destination= + | kind: Namespace + | apiVersion: v1 + | metadata: + | name: monitoring + | labels: + | name: monitoring + +2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=zipkin +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=fetch_consul_resources + source= + | #!/bin/sh -e + | + | echo "Port #{{ .Vars.port }}" + | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" + | + | #{{ if eq .Vars.acl_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | #{{end}} + | + | #{{ if eq .Vars.tls_enabled true }} + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | #{{end}} +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Creating Helm chart: ref=prometheus +2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=tempo +2022-04-05T15:32:31.032+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:31246 local_addr=tempo.default.svc:3100 +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] +2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=fetch_consul_resources + destination= + | #!/bin/sh -e + | + | echo "Port 8501" + | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | + | + | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token + | + | + | + | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt + | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key + | +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" +2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml +2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:31246 local_addr=tempo.monitoring.svc:9411 +2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-05T15:32:31.033+0100 [DEBUG] Template content: ref=grafana_secret_template + source= + | apiVersion: v1 + | kind: Secret + | metadata: + | name: grafana-password + | namespace: #{{ .Vars.monitoring_namespace }} + | type: Opaque + | data: + | admin-password: YWRtaW4= + | admin-user: YWRtaW4= +2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.033+0100 [DEBUG] Template output: ref=grafana_secret_template destination= | apiVersion: v1 | kind: Secret @@ -704,163 +706,158 @@ | data: | admin-password: YWRtaW4= | admin-user: YWRtaW4= - -2022-04-02T08:20:53.768+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] -2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:31205 local_addr=prometheus-operated.monitoring.svc:9090 -2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" -2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.768+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:20:53.769+0100 [ERROR] 2022-04-02T08:20:53.769+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:20:53.786+0100 [ERROR] 2022-04-02T08:20:53.786+0100 [DEBUG] Successfully exposed service: id=5a3ec616-10c1-419d-b7f7-5a6820708927 -2022-04-02T08:20:53.788+0100 [ERROR] 2022-04-02T08:20:53.788+0100 [DEBUG] Successfully exposed service: id=20f268ab-2d34-45d2-affe-49cdf9ba3ad8 -2022-04-02T08:20:53.788+0100 [ERROR] 2022-04-02T08:20:53.788+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 -2022-04-02T08:20:53.788+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec -2022-04-02T08:20:53.793+0100 [ERROR] 2022-04-02T08:20:53.793+0100 [DEBUG] Successfully exposed service: id=f9e4c42a-4e65-43d1-b630-167806567788 -2022-04-02T08:20:53.794+0100 [ERROR] 2022-04-02T08:20:53.794+0100 [DEBUG] Successfully exposed service: id=8c0df1ad-3ad1-4e26-9975-f5b845de32d3 -2022-04-02T08:20:53.840+0100 [ERROR] 2022-04-02T08:20:53.840+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec -2022-04-02T08:20:53.844+0100 [ERROR] 2022-04-02T08:20:53.844+0100 [DEBUG] Attaching container to network: ref=418bcfd18b7907bb12aeab4af69a4f9b00cafb7f84325b00d4f554fa6119505f network=dc1 -2022-04-02T08:20:53.851+0100 [ERROR] 2022-04-02T08:20:53.851+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec -2022-04-02T08:20:54.331+0100 [ERROR] 2022-04-02T08:20:54.331+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:20:54.332+0100 [ERROR] 2022-04-02T08:20:54.332+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack -2022-04-02T08:20:54.388+0100 [ERROR] 2022-04-02T08:20:54.388+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] -2022-04-02T08:20:54.389+0100 [ERROR] 2022-04-02T08:20:54.389+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:20:54.708+0100 [ERROR] 2022-04-02T08:20:54.708+0100 [DEBUG] Port 8501 +2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.033+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml +2022-04-05T15:32:31.051+0100 [ERROR] 2022-04-05T15:32:31.051+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 +2022-04-05T15:32:31.051+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec +2022-04-05T15:32:31.052+0100 [ERROR] 2022-04-05T15:32:31.052+0100 [DEBUG] Successfully exposed service: id=2f9e3954-406d-47c8-80ed-e44962058d62 +2022-04-05T15:32:31.059+0100 [ERROR] 2022-04-05T15:32:31.059+0100 [DEBUG] Successfully exposed service: id=7c23e088-ee1c-469c-bfc2-3297e1aaa0e4 +2022-04-05T15:32:31.059+0100 [ERROR] 2022-04-05T15:32:31.059+0100 [DEBUG] Successfully exposed service: id=68ee8606-a5e9-4af9-ae3c-515ba6bc8ffa +2022-04-05T15:32:31.060+0100 [ERROR] 2022-04-05T15:32:31.060+0100 [DEBUG] Successfully exposed service: id=76ca1c24-743d-4a43-a588-ff5c0acf25fe +2022-04-05T15:32:31.104+0100 [ERROR] 2022-04-05T15:32:31.104+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec +2022-04-05T15:32:31.107+0100 [ERROR] 2022-04-05T15:32:31.107+0100 [DEBUG] Attaching container to network: ref=380ee5bda04929cade10544d9994251c3ed5a8b96c37fe65b349c1af79db229f network=dc1 +2022-04-05T15:32:31.112+0100 [ERROR] 2022-04-05T15:32:31.112+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec +2022-04-05T15:32:31.427+0100 [ERROR] 2022-04-05T15:32:31.427+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:31.428+0100 [ERROR] 2022-04-05T15:32:31.428+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack +2022-04-05T15:32:31.583+0100 [ERROR] 2022-04-05T15:32:31.583+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] +2022-04-05T15:32:31.584+0100 [ERROR] 2022-04-05T15:32:31.584+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml +2022-04-05T15:32:31.844+0100 [ERROR] 2022-04-05T15:32:31.844+0100 [DEBUG] Port 8501 Fetching resources from running cluster, acls_enabled: true, tls_enabled true -2022-04-02T08:20:55.084+0100 [ERROR] 2022-04-02T08:20:55.084+0100 [DEBUG] Forcefully remove: container=418bcfd18b7907bb12aeab4af69a4f9b00cafb7f84325b00d4f554fa6119505f -2022-04-02T08:20:55.137+0100 [ERROR] 2022-04-02T08:20:55.137+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz -2022-04-02T08:20:55.151+0100 [ERROR] 2022-04-02T08:20:55.151+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" -2022-04-02T08:20:55.151+0100 [DEBUG] Validate chart: ref=prometheus -2022-04-02T08:20:55.151+0100 [DEBUG] Run chart: ref=prometheus -2022-04-02T08:20:55.167+0100 [ERROR] 2022-04-02T08:20:55.167+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.215+0100 [ERROR] 2022-04-02T08:20:55.215+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.260+0100 [ERROR] 2022-04-02T08:20:55.259+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.275+0100 [ERROR] 2022-04-02T08:20:55.275+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.312+0100 [ERROR] 2022-04-02T08:20:55.312+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.403+0100 [ERROR] 2022-04-02T08:20:55.402+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.412+0100 [ERROR] 2022-04-02T08:20:55.412+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.445+0100 [ERROR] 2022-04-02T08:20:55.444+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:55.504+0100 [ERROR] 2022-04-02T08:20:55.504+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" -2022-04-02T08:20:55.504+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" -2022-04-02T08:20:58.889+0100 [ERROR] 2022-04-02T08:20:58.889+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:59.178+0100 [ERROR] 2022-04-02T08:20:59.178+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:20:59.181+0100 [ERROR] 2022-04-02T08:20:59.181+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:20:59.461+0100 [ERROR] 2022-04-02T08:20:59.461+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:59.467+0100 [ERROR] 2022-04-02T08:20:59.466+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:20:59.469+0100 [ERROR] 2022-04-02T08:20:59.469+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:20:59.746+0100 [ERROR] 2022-04-02T08:20:59.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:20:59.751+0100 [ERROR] 2022-04-02T08:20:59.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:20:59.753+0100 [ERROR] 2022-04-02T08:20:59.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:00.056+0100 [ERROR] 2022-04-02T08:21:00.056+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:00.061+0100 [ERROR] 2022-04-02T08:21:00.061+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:21:00.064+0100 [ERROR] 2022-04-02T08:21:00.064+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:00.330+0100 [ERROR] 2022-04-02T08:21:00.330+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:00.335+0100 [ERROR] 2022-04-02T08:21:00.335+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:21:00.338+0100 [ERROR] 2022-04-02T08:21:00.338+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:00.610+0100 [ERROR] 2022-04-02T08:21:00.610+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:00.615+0100 [ERROR] 2022-04-02T08:21:00.615+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:21:00.618+0100 [ERROR] 2022-04-02T08:21:00.617+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" -2022-04-02T08:21:00.906+0100 [ERROR] 2022-04-02T08:21:00.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:00.911+0100 [ERROR] 2022-04-02T08:21:00.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" -2022-04-02T08:21:00.913+0100 [ERROR] 2022-04-02T08:21:00.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" -2022-04-02T08:21:00.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:00.933+0100 [ERROR] 2022-04-02T08:21:00.933+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:21:00.933+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:02.716+0100 [ERROR] 2022-04-02T08:21:02.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:21:02.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:02.724+0100 [ERROR] 2022-04-02T08:21:02.724+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:21:02.725+0100 [ERROR] 2022-04-02T08:21:02.725+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:21:02.731+0100 [ERROR] 2022-04-02T08:21:02.731+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:21:02.738+0100 [ERROR] 2022-04-02T08:21:02.738+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:21:02.743+0100 [ERROR] 2022-04-02T08:21:02.743+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:21:02.748+0100 [ERROR] 2022-04-02T08:21:02.748+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:21:02.753+0100 [ERROR] 2022-04-02T08:21:02.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:21:02.757+0100 [ERROR] 2022-04-02T08:21:02.757+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" -2022-04-02T08:21:02.946+0100 [ERROR] 2022-04-02T08:21:02.946+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:21:02.948+0100 [ERROR] 2022-04-02T08:21:02.948+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:03.230+0100 [ERROR] 2022-04-02T08:21:03.230+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:03.237+0100 [ERROR] 2022-04-02T08:21:03.236+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:21:03.239+0100 [ERROR] 2022-04-02T08:21:03.239+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:03.521+0100 [ERROR] 2022-04-02T08:21:03.520+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:03.526+0100 [ERROR] 2022-04-02T08:21:03.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:21:03.528+0100 [ERROR] 2022-04-02T08:21:03.528+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:03.817+0100 [ERROR] 2022-04-02T08:21:03.817+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:03.822+0100 [ERROR] 2022-04-02T08:21:03.822+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:21:03.825+0100 [ERROR] 2022-04-02T08:21:03.825+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:04.134+0100 [ERROR] 2022-04-02T08:21:04.134+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:04.140+0100 [ERROR] 2022-04-02T08:21:04.140+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:21:04.143+0100 [ERROR] 2022-04-02T08:21:04.143+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:21:04.438+0100 [ERROR] 2022-04-02T08:21:04.438+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:04.443+0100 [ERROR] 2022-04-02T08:21:04.443+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:21:04.446+0100 [ERROR] 2022-04-02T08:21:04.446+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" -2022-04-02T08:21:04.739+0100 [ERROR] 2022-04-02T08:21:04.739+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:21:04.744+0100 [ERROR] 2022-04-02T08:21:04.743+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" -2022-04-02T08:21:04.746+0100 [ERROR] 2022-04-02T08:21:04.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" -2022-04-02T08:21:04.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:04.759+0100 [ERROR] 2022-04-02T08:21:04.759+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:21:04.759+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:06.393+0100 [ERROR] 2022-04-02T08:21:06.393+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000279] -2022-04-02T08:21:07.738+0100 [ERROR] 2022-04-02T08:21:07.737+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:21:07.737+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:21:07.746+0100 [ERROR] 2022-04-02T08:21:07.746+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:21:07.748+0100 [ERROR] 2022-04-02T08:21:07.748+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:21:07.754+0100 [ERROR] 2022-04-02T08:21:07.753+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:21:07.761+0100 [ERROR] 2022-04-02T08:21:07.761+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:21:07.770+0100 [ERROR] 2022-04-02T08:21:07.770+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:21:07.776+0100 [ERROR] 2022-04-02T08:21:07.776+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:21:07.781+0100 [ERROR] 2022-04-02T08:21:07.781+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:21:08.251+0100 [ERROR] 2022-04-02T08:21:08.251+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:21:10.256+0100 [ERROR] 2022-04-02T08:21:10.256+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-2hndz namespace=monitoring type=Ready value=False -2022-04-02T08:21:12.262+0100 [ERROR] 2022-04-02T08:21:12.262+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-2hndz namespace=monitoring type=Ready value=False -2022-04-02T08:21:14.269+0100 [ERROR] 2022-04-02T08:21:14.269+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [INFO] Creating Helm chart: ref=loki -2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:21:14.270+0100 [ERROR] 2022-04-02T08:21:14.270+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] -2022-04-02T08:21:14.271+0100 [ERROR] 2022-04-02T08:21:14.271+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:21:14.596+0100 [ERROR] 2022-04-02T08:21:14.596+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:21:14.598+0100 [ERROR] 2022-04-02T08:21:14.597+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki -2022-04-02T08:21:15.079+0100 [ERROR] 2022-04-02T08:21:15.079+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz -2022-04-02T08:21:15.080+0100 [ERROR] 2022-04-02T08:21:15.080+0100 [DEBUG] Using Values: ref=loki values=map[] -2022-04-02T08:21:15.080+0100 [DEBUG] Validate chart: ref=loki -2022-04-02T08:21:15.080+0100 [DEBUG] Run chart: ref=loki -2022-04-02T08:21:15.309+0100 [ERROR] W0402 08:21:15.309301 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:15.325+0100 [ERROR] 2022-04-02T08:21:15.325+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" -2022-04-02T08:21:15.335+0100 [ERROR] 2022-04-02T08:21:15.335+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" -2022-04-02T08:21:15.340+0100 [ERROR] W0402 08:21:15.340198 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:15.369+0100 [ERROR] 2022-04-02T08:21:15.369+0100 [INFO] Creating Helm chart: ref=promtail -2022-04-02T08:21:15.369+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:21:15.369+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:21:15.370+0100 [ERROR] 2022-04-02T08:21:15.370+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail -2022-04-02T08:21:16.052+0100 [ERROR] 2022-04-02T08:21:16.052+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz -2022-04-02T08:21:16.053+0100 [ERROR] 2022-04-02T08:21:16.053+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] -2022-04-02T08:21:16.053+0100 [DEBUG] Validate chart: ref=promtail -2022-04-02T08:21:16.053+0100 [DEBUG] Run chart: ref=promtail -2022-04-02T08:21:16.353+0100 [ERROR] 2022-04-02T08:21:16.353+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" -2022-04-02T08:21:16.363+0100 [ERROR] 2022-04-02T08:21:16.363+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" -2022-04-02T08:21:16.390+0100 [ERROR] 2022-04-02T08:21:16.390+0100 [INFO] Creating Helm chart: ref=tempo -2022-04-02T08:21:16.390+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:21:16.390+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:21:16.391+0100 [ERROR] 2022-04-02T08:21:16.391+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo -2022-04-02T08:21:17.008+0100 [ERROR] 2022-04-02T08:21:17.008+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz -2022-04-02T08:21:17.009+0100 [ERROR] 2022-04-02T08:21:17.009+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" -2022-04-02T08:21:17.009+0100 [DEBUG] Validate chart: ref=tempo -2022-04-02T08:21:17.009+0100 [DEBUG] Run chart: ref=tempo -2022-04-02T08:21:17.262+0100 [ERROR] 2022-04-02T08:21:17.262+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" -2022-04-02T08:21:17.272+0100 [ERROR] 2022-04-02T08:21:17.271+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" -2022-04-02T08:21:17.302+0100 [ERROR] 2022-04-02T08:21:17.302+0100 [INFO] Creating Helm chart: ref=grafana -2022-04-02T08:21:17.302+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:21:17.302+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:21:17.303+0100 [ERROR] 2022-04-02T08:21:17.303+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana -2022-04-02T08:21:17.883+0100 [ERROR] 2022-04-02T08:21:17.883+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz -2022-04-02T08:21:17.885+0100 [ERROR] 2022-04-02T08:21:17.885+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" -2022-04-02T08:21:17.885+0100 [DEBUG] Validate chart: ref=grafana -2022-04-02T08:21:17.885+0100 [DEBUG] Run chart: ref=grafana -2022-04-02T08:21:18.222+0100 [ERROR] W0402 08:21:18.222552 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:18.225+0100 [ERROR] W0402 08:21:18.224951 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:18.255+0100 [ERROR] 2022-04-02T08:21:18.255+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" -2022-04-02T08:21:18.273+0100 [ERROR] 2022-04-02T08:21:18.273+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" -2022-04-02T08:21:18.277+0100 [ERROR] W0402 08:21:18.277209 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:18.277+0100 [ERROR] W0402 08:21:18.277320 1257 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:21:18.348+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:21:18.348+0100 [DEBUG] Template content: ref=monitor_ingress_gateway +2022-04-05T15:32:32.160+0100 [ERROR] 2022-04-05T15:32:32.160+0100 [DEBUG] Forcefully remove: container=380ee5bda04929cade10544d9994251c3ed5a8b96c37fe65b349c1af79db229f +2022-04-05T15:32:32.831+0100 [ERROR] 2022-04-05T15:32:32.831+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz +2022-04-05T15:32:32.844+0100 [ERROR] 2022-04-05T15:32:32.844+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" +2022-04-05T15:32:32.844+0100 [DEBUG] Validate chart: ref=prometheus +2022-04-05T15:32:32.844+0100 [DEBUG] Run chart: ref=prometheus +2022-04-05T15:32:32.858+0100 [ERROR] 2022-04-05T15:32:32.858+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:32.905+0100 [ERROR] 2022-04-05T15:32:32.904+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:32.961+0100 [ERROR] 2022-04-05T15:32:32.961+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:32.972+0100 [ERROR] 2022-04-05T15:32:32.972+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:33.007+0100 [ERROR] 2022-04-05T15:32:33.006+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:33.067+0100 [ERROR] 2022-04-05T15:32:33.067+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:33.079+0100 [ERROR] 2022-04-05T15:32:33.079+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:33.125+0100 [ERROR] 2022-04-05T15:32:33.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:33.165+0100 [ERROR] 2022-04-05T15:32:33.165+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" +2022-04-05T15:32:33.165+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" +2022-04-05T15:32:36.542+0100 [ERROR] 2022-04-05T15:32:36.541+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:36.818+0100 [ERROR] 2022-04-05T15:32:36.818+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-05T15:32:36.821+0100 [ERROR] 2022-04-05T15:32:36.821+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:37.107+0100 [ERROR] 2022-04-05T15:32:37.107+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:37.113+0100 [ERROR] 2022-04-05T15:32:37.113+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-05T15:32:37.116+0100 [ERROR] 2022-04-05T15:32:37.116+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:37.389+0100 [ERROR] 2022-04-05T15:32:37.389+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:37.394+0100 [ERROR] 2022-04-05T15:32:37.394+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-05T15:32:37.397+0100 [ERROR] 2022-04-05T15:32:37.397+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:37.678+0100 [ERROR] 2022-04-05T15:32:37.678+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:37.683+0100 [ERROR] 2022-04-05T15:32:37.683+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-05T15:32:37.685+0100 [ERROR] 2022-04-05T15:32:37.685+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:37.963+0100 [ERROR] 2022-04-05T15:32:37.963+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:37.969+0100 [ERROR] 2022-04-05T15:32:37.969+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-05T15:32:37.971+0100 [ERROR] 2022-04-05T15:32:37.971+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:38.241+0100 [ERROR] 2022-04-05T15:32:38.240+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:38.245+0100 [ERROR] 2022-04-05T15:32:38.245+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-05T15:32:38.247+0100 [ERROR] 2022-04-05T15:32:38.247+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" +2022-04-05T15:32:38.520+0100 [ERROR] 2022-04-05T15:32:38.520+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:38.524+0100 [ERROR] 2022-04-05T15:32:38.524+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" +2022-04-05T15:32:38.526+0100 [ERROR] 2022-04-05T15:32:38.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" +2022-04-05T15:32:38.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:38.543+0100 [ERROR] 2022-04-05T15:32:38.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-05T15:32:38.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:40.880+0100 [ERROR] 2022-04-05T15:32:40.880+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-05T15:32:40.880+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:40.891+0100 [ERROR] 2022-04-05T15:32:40.891+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" +2022-04-05T15:32:40.893+0100 [ERROR] 2022-04-05T15:32:40.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-05T15:32:40.902+0100 [ERROR] 2022-04-05T15:32:40.902+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-05T15:32:40.913+0100 [ERROR] 2022-04-05T15:32:40.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-05T15:32:40.918+0100 [ERROR] 2022-04-05T15:32:40.918+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-05T15:32:40.922+0100 [ERROR] 2022-04-05T15:32:40.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-05T15:32:40.927+0100 [ERROR] 2022-04-05T15:32:40.927+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" +2022-04-05T15:32:40.930+0100 [ERROR] 2022-04-05T15:32:40.930+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" +2022-04-05T15:32:41.121+0100 [ERROR] 2022-04-05T15:32:41.121+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-05T15:32:41.125+0100 [ERROR] 2022-04-05T15:32:41.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:41.404+0100 [ERROR] 2022-04-05T15:32:41.404+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:41.409+0100 [ERROR] 2022-04-05T15:32:41.409+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-05T15:32:41.411+0100 [ERROR] 2022-04-05T15:32:41.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:41.686+0100 [ERROR] 2022-04-05T15:32:41.686+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:41.691+0100 [ERROR] 2022-04-05T15:32:41.691+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-05T15:32:41.694+0100 [ERROR] 2022-04-05T15:32:41.694+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:41.994+0100 [ERROR] 2022-04-05T15:32:41.994+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:41.999+0100 [ERROR] 2022-04-05T15:32:41.999+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-05T15:32:42.001+0100 [ERROR] 2022-04-05T15:32:42.001+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:42.290+0100 [ERROR] 2022-04-05T15:32:42.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:42.296+0100 [ERROR] 2022-04-05T15:32:42.296+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-05T15:32:42.299+0100 [ERROR] 2022-04-05T15:32:42.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" +2022-04-05T15:32:42.611+0100 [ERROR] 2022-04-05T15:32:42.611+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:42.616+0100 [ERROR] 2022-04-05T15:32:42.616+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-05T15:32:42.619+0100 [ERROR] 2022-04-05T15:32:42.619+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" +2022-04-05T15:32:42.906+0100 [ERROR] 2022-04-05T15:32:42.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" +2022-04-05T15:32:42.909+0100 [ERROR] 2022-04-05T15:32:42.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" +2022-04-05T15:32:42.911+0100 [ERROR] 2022-04-05T15:32:42.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" +2022-04-05T15:32:42.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:42.922+0100 [ERROR] 2022-04-05T15:32:42.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-05T15:32:42.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:44.645+0100 [ERROR] 2022-04-05T15:32:44.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000930] +2022-04-05T15:32:45.881+0100 [ERROR] 2022-04-05T15:32:45.881+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-05T15:32:45.881+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" +2022-04-05T15:32:45.889+0100 [ERROR] 2022-04-05T15:32:45.889+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" +2022-04-05T15:32:45.891+0100 [ERROR] 2022-04-05T15:32:45.891+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" +2022-04-05T15:32:45.898+0100 [ERROR] 2022-04-05T15:32:45.898+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" +2022-04-05T15:32:45.906+0100 [ERROR] 2022-04-05T15:32:45.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" +2022-04-05T15:32:45.911+0100 [ERROR] 2022-04-05T15:32:45.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" +2022-04-05T15:32:45.916+0100 [ERROR] 2022-04-05T15:32:45.916+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" +2022-04-05T15:32:45.921+0100 [ERROR] 2022-04-05T15:32:45.921+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" +2022-04-05T15:32:46.202+0100 [ERROR] 2022-04-05T15:32:46.201+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-05T15:32:48.207+0100 [ERROR] 2022-04-05T15:32:48.207+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-stjqq namespace=monitoring type=Ready value=False +2022-04-05T15:32:50.213+0100 [ERROR] 2022-04-05T15:32:50.213+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-stjqq namespace=monitoring type=Ready value=False +2022-04-05T15:32:52.218+0100 [ERROR] 2022-04-05T15:32:52.218+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus +2022-04-05T15:32:52.218+0100 [ERROR] 2022-04-05T15:32:52.218+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] +2022-04-05T15:32:52.218+0100 [INFO] Creating Helm chart: ref=loki +2022-04-05T15:32:52.218+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-05T15:32:52.219+0100 [ERROR] 2022-04-05T15:32:52.219+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml +2022-04-05T15:32:52.432+0100 [ERROR] 2022-04-05T15:32:52.432+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:52.432+0100 [ERROR] 2022-04-05T15:32:52.432+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki +2022-04-05T15:32:53.117+0100 [ERROR] 2022-04-05T15:32:53.117+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz +2022-04-05T15:32:53.118+0100 [ERROR] 2022-04-05T15:32:53.118+0100 [DEBUG] Using Values: ref=loki values=map[] +2022-04-05T15:32:53.118+0100 [DEBUG] Validate chart: ref=loki +2022-04-05T15:32:53.118+0100 [DEBUG] Run chart: ref=loki +2022-04-05T15:32:53.352+0100 [ERROR] W0405 15:32:53.352927 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:53.368+0100 [ERROR] 2022-04-05T15:32:53.368+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" +2022-04-05T15:32:53.377+0100 [ERROR] 2022-04-05T15:32:53.377+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" +2022-04-05T15:32:53.381+0100 [ERROR] W0405 15:32:53.381316 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:53.412+0100 [ERROR] 2022-04-05T15:32:53.412+0100 [INFO] Creating Helm chart: ref=promtail +2022-04-05T15:32:53.412+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-05T15:32:53.412+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:53.412+0100 [ERROR] 2022-04-05T15:32:53.412+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail +2022-04-05T15:32:53.765+0100 [ERROR] 2022-04-05T15:32:53.765+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz +2022-04-05T15:32:53.766+0100 [ERROR] 2022-04-05T15:32:53.766+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] +2022-04-05T15:32:53.766+0100 [DEBUG] Validate chart: ref=promtail +2022-04-05T15:32:53.766+0100 [DEBUG] Run chart: ref=promtail +2022-04-05T15:32:54.015+0100 [ERROR] 2022-04-05T15:32:54.015+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" +2022-04-05T15:32:54.024+0100 [ERROR] 2022-04-05T15:32:54.023+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" +2022-04-05T15:32:54.049+0100 [ERROR] 2022-04-05T15:32:54.049+0100 [INFO] Creating Helm chart: ref=tempo +2022-04-05T15:32:54.049+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-05T15:32:54.049+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:54.050+0100 [ERROR] 2022-04-05T15:32:54.050+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo +2022-04-05T15:32:54.656+0100 [ERROR] 2022-04-05T15:32:54.656+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz +2022-04-05T15:32:54.656+0100 [ERROR] 2022-04-05T15:32:54.656+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" +2022-04-05T15:32:54.656+0100 [DEBUG] Validate chart: ref=tempo +2022-04-05T15:32:54.656+0100 [DEBUG] Run chart: ref=tempo +2022-04-05T15:32:54.922+0100 [ERROR] 2022-04-05T15:32:54.922+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" +2022-04-05T15:32:54.934+0100 [ERROR] 2022-04-05T15:32:54.934+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" +2022-04-05T15:32:54.967+0100 [ERROR] 2022-04-05T15:32:54.967+0100 [INFO] Creating Helm chart: ref=grafana +2022-04-05T15:32:54.967+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts +2022-04-05T15:32:54.967+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:54.968+0100 [ERROR] 2022-04-05T15:32:54.968+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana +2022-04-05T15:32:55.304+0100 [ERROR] 2022-04-05T15:32:55.304+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz +2022-04-05T15:32:55.306+0100 [ERROR] 2022-04-05T15:32:55.306+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" +2022-04-05T15:32:55.306+0100 [DEBUG] Validate chart: ref=grafana +2022-04-05T15:32:55.306+0100 [DEBUG] Run chart: ref=grafana +2022-04-05T15:32:55.675+0100 [ERROR] W0405 15:32:55.675792 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:55.678+0100 [ERROR] W0405 15:32:55.678489 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:55.713+0100 [ERROR] 2022-04-05T15:32:55.713+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" +2022-04-05T15:32:55.734+0100 [ERROR] 2022-04-05T15:32:55.734+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" +2022-04-05T15:32:55.740+0100 [ERROR] W0405 15:32:55.740055 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:55.741+0100 [ERROR] W0405 15:32:55.740951 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-05T15:32:55.820+0100 [DEBUG] Template content: ref=monitor_ingress_gateway source= | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace | --- @@ -900,7 +897,7 @@ Fetching resources from running cluster, acls_enabled: true, tls_enabled true | protocol: TCP | port: 20200 | targetPort: 20200 -2022-04-02T08:21:18.348+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [DEBUG] Template output: ref=monitor_ingress_gateway +2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [DEBUG] Template output: ref=monitor_ingress_gateway destination= | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace | --- @@ -940,43 +937,42 @@ Fetching resources from running cluster, acls_enabled: true, tls_enabled true | protocol: TCP | port: 20200 | targetPort: 20200 -2022-04-02T08:21:18.349+0100 [ERROR] 2022-04-02T08:21:18.348+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] -2022-04-02T08:21:18.350+0100 [ERROR] 2022-04-02T08:21:18.349+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:21:18.442+0100 [ERROR] 2022-04-02T08:21:18.442+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] -2022-04-02T08:21:18.442+0100 [INFO] Creating Helm chart: ref=consul-release-controller -2022-04-02T08:21:18.442+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:21:18.442+0100 [ERROR] 2022-04-02T08:21:18.442+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] -2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml -2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:21:18.443+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:21:18.443+0100 [ERROR] 2022-04-02T08:21:18.443+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml -2022-04-02T08:21:18.444+0100 [ERROR] 2022-04-02T08:21:18.444+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" -2022-04-02T08:21:18.444+0100 [DEBUG] Validate chart: ref=consul-release-controller -2022-04-02T08:21:18.444+0100 [DEBUG] Run chart: ref=consul-release-controller -2022-04-02T08:21:18.539+0100 [ERROR] 2022-04-02T08:21:18.539+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml -2022-04-02T08:21:18.561+0100 [ERROR] 2022-04-02T08:21:18.561+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml -2022-04-02T08:21:18.649+0100 [ERROR] 2022-04-02T08:21:18.649+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml -2022-04-02T08:21:18.703+0100 [ERROR] 2022-04-02T08:21:18.703+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml -2022-04-02T08:21:18.730+0100 [ERROR] 2022-04-02T08:21:18.730+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml -2022-04-02T08:21:18.736+0100 [ERROR] 2022-04-02T08:21:18.736+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml -2022-04-02T08:21:18.829+0100 [ERROR] 2022-04-02T08:21:18.829+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" -2022-04-02T08:21:18.840+0100 [ERROR] 2022-04-02T08:21:18.840+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" -2022-04-02T08:21:18.970+0100 [ERROR] 2022-04-02T08:21:18.970+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" -2022-04-02T08:21:18.997+0100 [ERROR] 2022-04-02T08:21:18.997+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 -2022-04-02T08:21:18.997+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec -2022-04-02T08:21:19.121+0100 [ERROR] 2022-04-02T08:21:19.121+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec -2022-04-02T08:21:19.125+0100 [ERROR] 2022-04-02T08:21:19.125+0100 [DEBUG] Attaching container to network: ref=45480788617bb1528fc64aa7ec16476ffce2165c7620ca4b731ef5eae054feec network=dc1 -2022-04-02T08:21:19.133+0100 [ERROR] 2022-04-02T08:21:19.132+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec -2022-04-02T08:21:20.621+0100 [ERROR] 2022-04-02T08:21:20.621+0100 [DEBUG] Forcefully remove: container=45480788617bb1528fc64aa7ec16476ffce2165c7620ca4b731ef5eae054feec -2022-04-02T08:21:21.394+0100 [ERROR] 2022-04-02T08:21:21.394+0100 [INFO] Please wait, still creating resources [Elapsed Time: 105.001074] -2022-04-02T08:21:22.041+0100 [ERROR] 2022-04-02T08:21:22.041+0100 [DEBUG] Health check urls for browser windows: count=0 -2022-04-02T08:21:22.041+0100 [DEBUG] Browser windows open +2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] +2022-04-05T15:32:55.821+0100 [ERROR] 2022-04-05T15:32:55.821+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml +2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [INFO] Creating Helm chart: ref=consul-release-controller +2022-04-05T15:32:55.941+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] +2022-04-05T15:32:55.941+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml +2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] +2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-05T15:32:55.941+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller +2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.942+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml +2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml +2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.942+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" +2022-04-05T15:32:55.942+0100 [DEBUG] Validate chart: ref=consul-release-controller +2022-04-05T15:32:55.942+0100 [DEBUG] Run chart: ref=consul-release-controller +2022-04-05T15:32:56.086+0100 [ERROR] 2022-04-05T15:32:56.086+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml +2022-04-05T15:32:56.107+0100 [ERROR] 2022-04-05T15:32:56.106+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml +2022-04-05T15:32:56.184+0100 [ERROR] 2022-04-05T15:32:56.184+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml +2022-04-05T15:32:56.218+0100 [ERROR] 2022-04-05T15:32:56.218+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml +2022-04-05T15:32:56.265+0100 [ERROR] 2022-04-05T15:32:56.265+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml +2022-04-05T15:32:56.273+0100 [ERROR] 2022-04-05T15:32:56.273+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml +2022-04-05T15:32:56.404+0100 [ERROR] 2022-04-05T15:32:56.404+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" +2022-04-05T15:32:56.418+0100 [ERROR] 2022-04-05T15:32:56.418+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" +2022-04-05T15:32:56.582+0100 [ERROR] 2022-04-05T15:32:56.582+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" +2022-04-05T15:32:56.618+0100 [ERROR] 2022-04-05T15:32:56.617+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 +2022-04-05T15:32:56.617+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec +2022-04-05T15:32:56.791+0100 [ERROR] 2022-04-05T15:32:56.791+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec +2022-04-05T15:32:56.795+0100 [ERROR] 2022-04-05T15:32:56.795+0100 [DEBUG] Attaching container to network: ref=219f995de5201af86321523f1ef77066f082118c37b7d0a0eeecac4749d6e6a0 network=dc1 +2022-04-05T15:32:56.805+0100 [ERROR] 2022-04-05T15:32:56.805+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec +2022-04-05T15:32:58.073+0100 [ERROR] 2022-04-05T15:32:58.073+0100 [DEBUG] Forcefully remove: container=219f995de5201af86321523f1ef77066f082118c37b7d0a0eeecac4749d6e6a0 +2022-04-05T15:32:58.772+0100 [ERROR] 2022-04-05T15:32:58.772+0100 [DEBUG] Health check urls for browser windows: count=0 +2022-04-05T15:32:58.772+0100 [DEBUG] Browser windows open ######################################################## Title Development setup Author Nic Jackson -2022-04-02T08:21:22.041+0100 [ERROR] +2022-04-05T15:32:58.772+0100 [ERROR] • Consul: https://localhost:8501 • Grafana: https://localhost:8080 • Application: http://localhost:18080 @@ -990,321 +986,226 @@ eval $(shipyard env) To list output variables use the command: shipyard output -2022-04-02T08:21:22.657+0100 [INFO] Starting controller -2022-04-02T08:21:27.227+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:21:27.230+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:27.233+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:21:27.233+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:28.233+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:28.236+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:28.236+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:29.237+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:29.240+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:29.240+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:30.241+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:30.244+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:30.244+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:31.244+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:31.247+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:31.247+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:32.248+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:32.251+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:32.251+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:33.251+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:33.254+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:33.254+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:34.255+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:34.258+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:34.258+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:35.258+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:35.261+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:35.261+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:36.262+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:36.265+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:36.265+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:37.265+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:37.269+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:37.269+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:38.269+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:38.272+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:38.272+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:39.272+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:39.276+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:39.276+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:40.276+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:40.279+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:40.279+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:41.279+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:41.283+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:41.283+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:42.283+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:42.286+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:42.286+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:43.287+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:43.290+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:43.290+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:44.290+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:44.293+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:44.293+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:45.294+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:45.297+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:45.297+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:46.298+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:46.301+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:21:46.301+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:21:47.302+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:47.306+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:21:47.306+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:21:47.317+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:21:47.320+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:21:47.320+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:22:22.386+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:22.389+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start -2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start -2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Configure: state=state_configure -2022-04-02T08:22:22.392+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure -2022-04-02T08:22:22.392+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api -2022-04-02T08:22:22.392+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api -2022-04-02T08:22:23.390+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:23.393+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:24.394+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:24.397+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:25.398+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:25.400+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:25.419+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api -2022-04-02T08:22:26.401+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:26.404+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:26.432+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api -2022-04-02T08:22:27.405+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:27.408+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:27.439+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api -2022-04-02T08:22:28.409+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:28.411+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:28.445+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api -2022-04-02T08:22:29.412+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:29.415+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:30.415+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:30.417+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:31.418+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:31.421+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:32.421+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:32.424+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:33.424+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:33.427+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:22:33.452+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-02T08:22:33.457+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default -2022-04-02T08:22:33.463+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default -2022-04-02T08:22:33.467+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:33.470+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:22:33.470+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:34.428+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:34.431+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:34.431+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:34.470+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:34.473+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:34.473+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:35.431+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:35.434+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:35.434+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:35.473+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:35.476+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:35.476+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:36.435+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:36.438+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:36.438+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:36.477+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:36.480+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:36.480+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:37.438+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:37.441+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:37.441+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:37.481+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:37.484+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:37.484+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:38.441+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:38.445+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:38.445+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:38.485+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:38.488+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:38.488+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:39.445+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:39.448+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:39.448+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:39.488+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:39.491+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:39.491+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:40.448+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:40.451+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:40.451+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:40.491+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:40.494+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:40.494+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:41.452+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:41.455+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:41.455+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:41.495+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:41.498+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:41.498+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:42.456+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:42.459+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:42.459+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:42.499+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:42.502+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:42.502+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:43.459+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:43.462+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:43.462+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:43.502+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:43.505+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:43.505+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:44.463+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:44.466+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:44.466+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:44.505+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:44.508+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:44.508+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:45.467+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:45.470+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:45.470+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:45.508+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:45.511+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:45.511+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:46.470+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:46.474+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:46.474+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:46.512+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:46.515+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:46.515+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:47.474+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:47.477+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:47.477+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:47.515+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:47.518+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:47.518+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:48.477+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:48.480+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:48.480+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:48.519+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:48.522+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:48.522+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.480+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.483+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:22:49.483+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.522+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.525+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:22:49.525+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.525+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default -2022-04-02T08:22:49.525+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default -2022-04-02T08:22:49.525+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:22:49.528+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:22:54.538+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default -2022-04-02T08:22:54.547+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:22:54.547+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2177]" -2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Configure completed successfully -2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure -2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure -2022-04-02T08:22:54.551+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle -2022-04-02T08:22:55.537+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:22:55.554+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:22:55.554+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle -2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle -2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle -2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Deploy: state=state_deploy -2022-04-02T08:22:55.554+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy -2022-04-02T08:22:55.557+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:22:55.560+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:22:55.560+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:22:56.560+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:22:56.563+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:56.563+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:22:57.563+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:22:57.566+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:57.566+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:22:58.567+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:22:58.570+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:58.570+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:22:59.570+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:22:59.573+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:22:59.573+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:00.555+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-02T08:23:00.558+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default -2022-04-02T08:23:00.558+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:23:00.561+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Deploy completed, executing strategy -2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy -2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy -2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:23:00.566+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor -2022-04-02T08:23:00.566+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 -2022-04-02T08:23:00.566+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 -2022-04-02T08:23:00.573+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:00.577+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:00.577+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:01.577+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:01.579+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:01.579+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:02.580+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:02.583+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:02.583+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:03.583+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:03.586+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:03.586+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:04.586+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:04.589+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:04.589+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:05.590+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:05.593+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:05.593+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:06.594+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:06.597+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:06.597+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:07.597+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:07.600+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:07.600+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:08.600+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:08.603+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:08.603+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:09.603+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:09.606+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:23:09.606+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:10.608+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:10.617+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 -2022-04-02T08:23:10.617+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:23:11.617+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:11.620+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:23:11.620+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:23:11.633+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:23:11.636+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:23:11.636+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:23:11.645+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:23:11.648+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:23:11.648+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:23:11.650+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:16.651+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:21.652+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:26.653+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:30.567+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 -2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:23:30.567+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:23:30.567+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 -2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:23:30.572+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:23:30.572+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 -2022-04-02T08:23:31.654+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:36.655+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:41.656+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:46.657+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:51.659+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:23:56.660+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:00.574+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:24:00.574+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success +2022-04-05T15:32:59.384+0100 [INFO] Starting controller +2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start +2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start +2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Configure: state=state_configure +2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure +2022-04-05T15:33:03.960+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api +2022-04-05T15:33:03.960+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api +2022-04-05T15:33:06.989+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api +2022-04-05T15:33:08.012+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api +2022-04-05T15:33:08.971+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:33:09.024+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api +2022-04-05T15:33:10.052+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api +2022-04-05T15:33:13.973+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:33:15.067+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-05T15:33:15.071+0100 [DEBUG] runtime-plugin-kubernetes: No candidate deployment, nothing to do +2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Configure completed successfully +2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure +2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure +2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle +2022-04-05T15:33:18.974+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:33:18.995+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-05T15:33:18.995+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle +2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle +2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle +2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Deploy: state=state_deploy +2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy +2022-04-05T15:33:18.997+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:19.000+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-05T15:33:19.000+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:20.001+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:20.004+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:20.004+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:21.004+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:21.008+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:21.008+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:22.009+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:22.012+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:22.012+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:23.012+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:23.015+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:23.015+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:23.996+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-05T15:33:24.001+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default +2022-04-05T15:33:24.006+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default +2022-04-05T15:33:24.008+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:24.011+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 +2022-04-05T15:33:24.011+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:24.016+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:24.020+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:24.020+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:25.011+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:25.014+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:25.014+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:25.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:25.024+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:25.024+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:26.015+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:26.018+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:26.018+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:26.025+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:26.027+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:26.027+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:27.018+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:27.021+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:27.021+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:27.028+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:27.030+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:27.030+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:28.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:28.025+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:28.025+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:28.031+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:28.033+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:28.033+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:29.026+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:29.029+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:29.029+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:29.034+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:29.036+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:29.036+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:30.030+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:30.033+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:30.033+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:30.037+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:30.040+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:30.040+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:31.033+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:31.037+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:31.037+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:31.041+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:31.044+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:31.044+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:32.037+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:32.041+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:32.041+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:32.044+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:32.048+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:32.048+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:33.041+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:33.044+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:33.044+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:33.048+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:33.051+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:33.051+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:34.044+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:34.048+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:34.048+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:34.052+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:34.054+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:34.054+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:35.048+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:35.051+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:35.051+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:35.055+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:35.058+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:35.058+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:36.051+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:36.054+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:36.054+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:36.059+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:36.062+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:36.062+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:37.055+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:37.058+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:37.058+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:37.062+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:37.064+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:37.064+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:38.059+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:38.062+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:38.062+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:38.065+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:38.067+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:38.067+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:33:39.063+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:39.066+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:39.066+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:39.068+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:33:39.071+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:33:39.071+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-05T15:33:39.081+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:39.084+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:39.084+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:40.067+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:40.070+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:40.070+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:40.085+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:40.088+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:40.088+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:41.070+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:41.073+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:41.073+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:41.088+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:41.091+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:41.091+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:42.073+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:42.076+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:42.076+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:42.092+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:42.095+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:42.095+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:43.076+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:43.079+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:43.079+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:43.096+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:43.099+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:33:43.099+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:44.080+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:44.083+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:33:44.083+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:44.083+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default +2022-04-05T15:33:44.083+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default +2022-04-05T15:33:44.083+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-05T15:33:44.086+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-05T15:33:44.092+0100 [DEBUG] statemachine: Deploy completed, created primary, waiting for next candidate deployment +2022-04-05T15:33:44.099+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:33:44.102+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:33:44.102+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-05T15:33:49.093+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default +2022-04-05T15:33:49.102+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-05T15:33:49.102+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2296]" +2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_deploy +2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_deploy +2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle +2022-04-05T15:34:00.153+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:00.169+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default +2022-04-05T15:34:00.169+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle +2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle +2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle +2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Deploy: state=state_deploy +2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy +2022-04-05T15:34:00.172+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:00.175+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 +2022-04-05T15:34:00.175+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:01.175+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:01.179+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:01.179+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:02.179+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:02.182+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:02.182+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:03.183+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:03.185+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:03.186+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:04.186+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:04.188+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:04.188+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:05.170+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default +2022-04-05T15:34:05.172+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default +2022-04-05T15:34:05.172+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api +2022-04-05T15:34:05.175+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Deploy completed, executing strategy +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor +2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:34:05.185+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:05.189+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:05.191+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=503 +2022-04-05T15:34:05.191+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | | sum( @@ -1329,45 +1230,39 @@ shipyard output | ) | * 100 -2022-04-02T08:24:00.578+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884240.574]"] value_type=model.Vector warnings=[] -2022-04-02T08:24:00.578+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-02T08:24:00.581+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884240.579]"] value_type=model.Vector warnings=[] -2022-04-02T08:24:00.581+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=30 -2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:24:00.581+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:24:00.581+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=70 traffic_canary=30 -2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:24:00.589+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:24:00.589+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=30 -2022-04-02T08:24:01.660+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:06.661+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:11.662+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:16.664+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:21.665+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:26.665+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:30.590+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:24:30.590+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success +2022-04-05T15:34:05.192+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:05.192+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:05.195+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] +2022-04-05T15:34:06.193+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:06.196+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:06.196+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:07.196+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:07.200+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:07.200+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:08.201+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:08.204+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:08.204+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:09.204+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:09.207+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:09.207+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:10.207+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:10.210+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:10.210+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:11.211+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:11.213+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:11.213+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:12.214+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:12.217+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:12.217+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:13.217+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:13.220+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:13.220+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:14.220+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:14.223+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:14.223+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:15.196+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:15.200+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=503 +2022-04-05T15:34:15.200+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | | sum( @@ -1392,45 +1287,24 @@ shipyard output | ) | * 100 -2022-04-02T08:24:30.593+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884270.591]"] value_type=model.Vector warnings=[] -2022-04-02T08:24:30.593+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-02T08:24:30.595+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884270.593]"] value_type=model.Vector warnings=[] -2022-04-02T08:24:30.595+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=50 -2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:24:30.595+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:24:30.595+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=50 traffic_canary=50 -2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:24:30.600+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:24:30.600+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=50 -2022-04-02T08:24:31.666+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:36.667+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:41.668+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:46.669+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:51.669+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:24:56.670+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:00.601+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:25:00.601+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success +2022-04-05T15:34:15.202+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] +2022-04-05T15:34:15.224+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:15.226+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 +2022-04-05T15:34:15.226+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default +2022-04-05T15:34:16.226+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:16.229+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:34:16.229+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-05T15:34:16.239+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default +2022-04-05T15:34:16.241+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:34:16.242+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default +2022-04-05T15:34:16.249+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default +2022-04-05T15:34:16.251+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 +2022-04-05T15:34:16.251+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default +2022-04-05T15:34:16.261+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:21.262+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:25.202+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:25.227+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:34:25.227+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | | sum( @@ -1455,45 +1329,12 @@ shipyard output | ) | * 100 -2022-04-02T08:25:00.603+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884300.602]"] value_type=model.Vector warnings=[] -2022-04-02T08:25:00.604+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-02T08:25:00.606+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884300.604]"] value_type=model.Vector warnings=[] -2022-04-02T08:25:00.606+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=70 -2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:25:00.606+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:25:00.606+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=30 traffic_canary=70 -2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:25:00.615+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:25:00.615+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=70 -2022-04-02T08:25:01.671+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:06.673+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:11.673+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:16.675+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:21.675+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:26.676+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:30.615+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:25:30.615+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success +2022-04-05T15:34:25.229+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] +2022-04-05T15:34:26.263+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:31.264+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:35.229+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:35.246+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:34:35.246+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | | sum( @@ -1518,14 +1359,44 @@ shipyard output | ) | * 100 -2022-04-02T08:25:30.617+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884330.615]"] value_type=model.Vector warnings=[] -2022-04-02T08:25:30.618+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration +2022-04-05T15:34:35.259+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] +2022-04-05T15:34:36.265+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:41.266+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:45.260+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:45.283+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:34:45.283+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | - | histogram_quantile( - | 0.99, - | sum( - | rate( + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:34:45.285+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169285.284]"] value_type=model.Vector warnings=[] +2022-04-05T15:34:45.286+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( | envoy_cluster_upstream_rq_time_bucket{ | namespace="default", | envoy_cluster_name="local_app", @@ -1535,28 +1406,12 @@ shipyard output | ) by (le) | ) -2022-04-02T08:25:30.620+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884330.618]"] value_type=model.Vector warnings=[] -2022-04-02T08:25:30.620+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=90 -2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:25:30.620+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:25:30.620+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=10 traffic_canary=90 -2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:25:30.630+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:25:30.630+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=90 -2022-04-02T08:25:31.678+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:36.679+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:41.679+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:46.680+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:51.680+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:25:56.681+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:00.631+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:26:00.631+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success +2022-04-05T15:34:45.288+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169285.286]"] value_type=model.Vector warnings=[] +2022-04-05T15:34:46.268+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:51.268+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:34:55.288+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:34:55.304+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:34:55.304+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success query= | | sum( @@ -1581,8 +1436,8 @@ shipyard output | ) | * 100 -2022-04-02T08:26:00.633+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1648884360.631]"] value_type=model.Vector warnings=[] -2022-04-02T08:26:00.633+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration +2022-04-05T15:34:55.307+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169295.305]"] value_type=model.Vector warnings=[] +2022-04-05T15:34:55.307+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration query= | | histogram_quantile( @@ -1598,3800 +1453,1012 @@ shipyard output | ) by (le) | ) -2022-04-02T08:26:00.636+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1648884360.634]"] value_type=model.Vector warnings=[] -2022-04-02T08:26:00.636+0100 [DEBUG] strategy-plugin-canary: Strategy complete: type=canary traffic=110 -2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Monitor checks completed, strategy complete -2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_monitor -2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_monitor -2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Promote: state=state_promote -2022-04-02T08:26:00.636+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_promote -2022-04-02T08:26:00.636+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 -2022-04-02T08:26:01.682+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:05.641+0100 [INFO] runtime-plugin-kubernetes: Promote deployment: name=api-deployment namespace=default -2022-04-02T08:26:05.641+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:05.646+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:26:05.646+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:26:05.646+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing primary deployment: name=api-deployment-primary namespace=default -2022-04-02T08:26:05.650+0100 [DEBUG] runtime-plugin-kubernetes: Creating primary deployment from: name=api-deployment namespace=default -2022-04-02T08:26:05.659+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default -2022-04-02T08:26:05.665+0100 [DEBUG] runtime-plugin-kubernetes: Successfully created new Primary deployment: name=api-deployment-primary namespace=default -2022-04-02T08:26:05.665+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:05.673+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:26:05.673+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:06.673+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:06.676+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:06.676+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:06.683+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:07.677+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:07.680+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:07.680+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:08.680+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:08.683+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:08.684+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:09.684+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:09.687+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:09.687+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:10.687+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:10.690+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:10.690+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:11.684+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:11.691+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:11.694+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:11.694+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:12.694+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:12.697+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:12.697+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:13.698+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:13.701+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:13.701+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:14.702+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:14.705+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:14.705+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:15.705+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:15.708+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:15.708+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:16.685+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:16.709+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:16.712+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:16.712+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:17.713+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:17.716+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:17.716+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:18.716+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:18.719+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:18.719+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:19.720+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:19.723+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:19.723+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:20.724+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:20.727+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:20.727+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:21.686+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:21.728+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:21.732+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:21.732+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:22.733+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:22.736+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:22.736+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:23.737+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:23.740+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:23.740+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:24.740+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:24.743+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:24.743+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:25.744+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:25.747+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:25.747+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:26.687+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:26.748+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:26:26.751+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:26:26.751+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:26:26.751+0100 [INFO] runtime-plugin-kubernetes: Promote complete: name=api-deployment namespace=default -2022-04-02T08:26:26.751+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:26:26.754+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:26:31.689+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:31.760+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default -2022-04-02T08:26:31.771+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:26:31.771+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2631]" -2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Handle event: event=event_promoted state=state_promote -2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Log state: event=event_promoted state=state_promote -2022-04-02T08:26:31.774+0100 [DEBUG] statemachine: Log state: event=event_promoted release=api state=state_idle -2022-04-02T08:26:36.690+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Handle event: event=event_destroy state=state_idle -2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Log state: event=event_destroy state=state_idle -2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Destroy: state=state_destroy -2022-04-02T08:26:36.727+0100 [DEBUG] statemachine: Log state: event=event_destroy release=api state=state_destroy -2022-04-02T08:26:36.727+0100 [INFO] runtime-plugin-kubernetes: Restore original deployment: name=api-deployment namespace=default -2022-04-02T08:26:36.730+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing candidate deployment: name=api-deployment namespace=default -2022-04-02T08:26:36.736+0100 [DEBUG] runtime-plugin-kubernetes: Clone primary to create original deployment: name=api-deployment namespace=default -2022-04-02T08:26:36.742+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:26:36.748+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:36.752+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:26:36.752+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:37.752+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:37.756+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:37.756+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:38.756+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:38.759+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:38.759+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:39.759+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:39.762+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:39.762+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:40.763+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:40.766+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:40.766+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:41.767+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:41.769+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:41.769+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:42.770+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:42.773+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:42.773+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:43.773+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:43.777+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:43.777+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:44.777+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:44.781+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:44.781+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:45.781+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:45.784+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:45.784+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:46.785+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:46.788+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:46.788+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:47.789+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:47.792+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:47.792+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:48.793+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:48.796+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:48.796+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:49.797+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:49.800+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:49.800+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:50.801+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:50.804+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:50.804+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:51.805+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:51.808+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:26:51.808+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:26:52.809+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:26:52.812+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:26:52.812+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:26:52.812+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:26:52.815+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 -2022-04-02T08:26:57.825+0100 [INFO] runtime-plugin-kubernetes: Remove primary deployment: name=api-deployment namespace=default -2022-04-02T08:26:57.829+0100 [INFO] releaser-plugin-consul: Remove Consul config: name=api -2022-04-02T08:26:57.829+0100 [DEBUG] releaser-plugin-consul: Delete splitter: name=api -2022-04-02T08:26:58.834+0100 [DEBUG] releaser-plugin-consul: Cleanup router: name=api -2022-04-02T08:26:59.845+0100 [DEBUG] releaser-plugin-consul: Cleanup upstream router: name=api -2022-04-02T08:27:00.852+0100 [DEBUG] releaser-plugin-consul: Cleanup resolver: name=api -2022-04-02T08:27:01.858+0100 [DEBUG] releaser-plugin-consul: Cleanup service intentions: name=api -2022-04-02T08:27:02.869+0100 [DEBUG] releaser-plugin-consul: Cleanup defaults: name=api -2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_destroy -2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_destroy -2022-04-02T08:27:02.871+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle -2022-04-02T08:27:08.770+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:27:08.773+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:27:08.773+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:27:08.789+0100 [INFO] Shutting down server gracefully -2022-04-02T08:27:08.790+0100 [INFO] Shutting down listener -2022-04-02T08:27:08.790+0100 [INFO] Shutting down metrics -2022-04-02T08:27:08.791+0100 [INFO] Shutting down kubernetes controller -2022-04-02T08:27:08.791+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller -2022-04-02T08:27:53.825+0100 [ERROR] 2022-04-02T08:27:53.825+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs -2022-04-02T08:27:55.385+0100 [ERROR] 2022-04-02T08:27:55.385+0100 [DEBUG] Starting Ingress -2022-04-02T08:27:55.386+0100 [ERROR] Running configuration from: ./shipyard/kubernetes - -2022-04-02T08:27:55.386+0100 [DEBUG] Statefile does not exist -2022-04-02T08:27:58.282+0100 [ERROR] 2022-04-02T08:27:58.282+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes -2022-04-02T08:27:58.282+0100 [DEBUG] Statefile does not exist -2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=UPSTREAMS -2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR -2022-04-02T08:28:03.034+0100 [DEBUG] Template content: ref=controller_values - source= - | controller: - | enabled: "#{{ .Vars.controller_enabled }}" - | container_config: - | image: - | repository: "#{{ .Vars.controller_repo }}" - | tag: "#{{ .Vars.controller_version }}" - | autoencrypt: - | enabled: #{{ .Vars.tls_enabled }} - | acls: - | enabled: #{{ .Vars.acls_enabled }} - | #{{- if eq .Vars.controller_enabled false }} - | webhook: - | service: controller-webhook - | namespace: shipyard - | #{{ end }} - -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_CAKEY -2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR -2022-04-02T08:28:03.034+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [DEBUG] Template content: ref=consul_values - source= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul +2022-04-05T15:34:55.309+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169295.307]"] value_type=model.Vector warnings=[] +2022-04-05T15:34:56.269+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:01.270+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:05.309+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:35:05.329+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:35:05.329+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | datacenter: #{{ .Vars.datacenter }} + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:35:05.331+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169305.33]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:05.331+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | acls: - | manageSystemACLs: #{{ .Vars.acl_enabled }} - | tls: - | enabled: #{{ .Vars.tls_enabled }} - | enableAutoEncrypt: #{{ .Vars.tls_enabled }} - | httpsOnly: false + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:35:05.333+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169305.332]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:05.333+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 +2022-04-05T15:35:05.333+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 +2022-04-05T15:35:06.271+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:11.273+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:16.274+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:21.275+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:26.276+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:31.277+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:35.334+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 +2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-05T15:35:35.334+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:35:35.346+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:35:35.363+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:35:35.363+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | federation: - | enabled: #{{ .Vars.federation_enabled }} - | createFederationSecret: #{{ .Vars.create_federation_secret }} + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:35:35.365+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => NaN @[1649169335.364]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:35.365+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=-9223372036854775808 +2022-04-05T15:35:36.278+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:41.278+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:45.365+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:35:45.383+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:35:45.383+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | image: #{{ .Vars.consul_image }} - | - | imageK8S: #{{ .Vars.consul_k8s_image }} - | - | imageEnvoy: #{{ .Vars.consul_envoy_image }} + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:35:45.386+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169345.384]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:45.386+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | metrics: - | enabled: #{{ .Vars.metrics_enabled }} - | enableAgentMetrics: #{{ .Vars.metrics_enabled }} - | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} - | - | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:35:45.388+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169345.386]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:46.280+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:51.280+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:35:55.389+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:35:55.404+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:35:55.405+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | server: - | replicas: 1 - | bootstrapExpect: 1 + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:35:55.407+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169355.405]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:55.407+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | storage: 128Mi + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:35:55.409+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.849999999999998 @[1649169355.407]"] value_type=model.Vector warnings=[] +2022-04-05T15:35:56.282+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:01.283+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:05.409+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:36:05.426+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:36:05.426+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" - | } - | } - | } + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:36:05.428+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169365.426]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:05.428+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:36:05.430+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169365.428]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:05.430+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 +2022-04-05T15:36:06.284+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:11.285+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:16.285+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:21.287+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:26.288+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:31.289+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:35.431+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-05T15:36:35.431+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | transparentProxy: - | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:36:35.434+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169395.431]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:35.434+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:36:35.436+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169395.434]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:35.436+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=30 +2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-05T15:36:35.436+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=70 traffic_canary=30 +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:36:35.442+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:36:35.458+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:36:35.458+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | ingressGateways: - | enabled: #{{ .Vars.ingress_gateway_enabled }} - | defaults: - | replicas: 1 - | service: - | ports: - | #{{ range .Vars.ingress_gateway_ports }} - | - port: #{{ . }} - | nodePort: null - | #{{ end }} + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:36:35.460+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169395.458]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:35.460+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:36:35.462+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169395.461]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:36.290+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:41.291+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:45.463+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:36:45.480+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:36:45.480+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | meshGateway: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | replicas: 1 + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:36:45.482+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169405.481]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:45.482+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | wanAddress: - | source: Static - | static: #{{ .Vars.mesh_gateway_address }} - | port: 30443 + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:36:45.484+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169405.483]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:46.292+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:51.294+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:36:55.484+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:36:55.502+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:36:55.502+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | service: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | type: NodePort - | nodePort: 30443 -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=KUBECONFIG -2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=consul_proxy_defaults - source= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=controller_values - destination= - | controller: - | enabled: "false" - | container_config: - | image: - | repository: "nicholasjackson/consul-release-controller" - | tag: "" - | autoencrypt: - | enabled: true - | acls: - | enabled: true - | webhook: - | service: controller-webhook - | namespace: shipyard - | -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TLS_KEY -2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_proxy_defaults - destination= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.monitoring.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=consul_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=consul_values - destination= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: dc1 - | - | acls: - | manageSystemACLs: true - | tls: - | enabled: true - | enableAutoEncrypt: true - | httpsOnly: false - | - | federation: - | enabled: false - | createFederationSecret: false + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:36:55.504+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169415.503]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:55.504+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | image: hashicorp/consul:1.11.3 - | - | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 - | - | imageEnvoy: envoyproxy/envoy:v1.20.1 + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:36:55.506+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169415.505]"] value_type=model.Vector warnings=[] +2022-04-05T15:36:55.506+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=30 +2022-04-05T15:36:56.295+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:01.296+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:06.296+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:11.298+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:16.298+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:21.299+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:25.508+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-05T15:37:25.508+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | metrics: - | enabled: true - | enableAgentMetrics: true - | enableGatewayMetrics: true - | - | logLevel: "info" + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:37:25.510+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169445.508]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:25.510+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | server: - | replicas: 1 - | bootstrapExpect: 1 + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:37:25.512+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169445.511]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:25.512+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=50 +2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-05T15:37:25.512+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=50 traffic_canary=50 +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:37:25.522+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:37:25.539+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:37:25.539+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | storage: 128Mi + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:37:25.541+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169445.54]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:25.541+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:37:25.544+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169445.542]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:26.299+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:31.300+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:35.544+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:37:35.560+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:37:35.561+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: null + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:37:35.563+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169455.561]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:35.563+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | transparentProxy: - | defaultEnabled: false + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:37:35.564+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169455.563]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:36.301+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:41.302+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:45.565+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:37:45.581+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:37:45.581+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:37:45.583+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169465.582]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:45.583+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | ingressGateways: - | enabled: true - | defaults: - | replicas: 1 - | service: - | ports: - | - | - port: 18080 - | nodePort: null - | - | - port: 18443 - | nodePort: null - | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:37:45.585+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169465.584]"] value_type=model.Vector warnings=[] +2022-04-05T15:37:45.585+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=50 +2022-04-05T15:37:46.303+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:51.303+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:37:56.304+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:01.306+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:06.306+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:11.307+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:15.586+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-05T15:38:15.586+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:38:15.588+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169495.587]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:15.588+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | meshGateway: - | enabled: false - | replicas: 1 + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:38:15.590+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169495.589]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:15.590+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=70 +2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-05T15:38:15.590+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=30 traffic_canary=70 +2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-05T15:38:15.595+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:38:15.595+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:38:15.611+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:38:15.611+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | wanAddress: - | source: Static - | static: dc1.k8s-cluster.shipyard.run - | port: 30443 + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:38:15.613+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169495.611]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:15.613+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | service: - | enabled: false - | type: NodePort - | nodePort: 30443 + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) -2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=TLS_CERT -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=GRAFANA_USER -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template content: ref=certs_script - source= - | #! /bin/sh -e +2022-04-05T15:38:15.615+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169495.614]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:16.307+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:21.308+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:25.615+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:38:25.632+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:38:25.632+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:38:25.634+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169505.633]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:25.634+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.035+0100 [DEBUG] Template output: ref=certs_script - destination= - | #! /bin/sh -e + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:38:25.636+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169505.635]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:26.309+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:31.310+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:35.637+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:38:35.653+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:38:35.653+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:38:35.655+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169515.654]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:35.655+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) -2022-04-02T08:28:03.034+0100 [INFO] Creating Network: ref=dc1 -2022-04-02T08:28:03.035+0100 [ERROR] 2022-04-02T08:28:03.034+0100 [INFO] Creating Output: ref=CONSUL_CACERT -2022-04-02T08:28:03.036+0100 [ERROR] 2022-04-02T08:28:03.036+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 -2022-04-02T08:28:03.061+0100 [ERROR] 2022-04-02T08:28:03.061+0100 [INFO] Creating ImageCache: ref=docker-cache -2022-04-02T08:28:03.063+0100 [ERROR] 2022-04-02T08:28:03.063+0100 [DEBUG] Connecting cache to network: name=network.dc1 -2022-04-02T08:28:03.064+0100 [ERROR] 2022-04-02T08:28:03.064+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:28:03.083+0100 [ERROR] 2022-04-02T08:28:03.083+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:28:03.083+0100 [DEBUG] Creating Docker Container: ref=83478282-import -2022-04-02T08:28:05.721+0100 [ERROR] 2022-04-02T08:28:05.721+0100 [DEBUG] Forcefully remove: container=b700875f0affc3fa711eb1054b972288f7cd4bedef834ca229890d5693a55df2 -2022-04-02T08:28:06.156+0100 [ERROR] 2022-04-02T08:28:06.155+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 -2022-04-02T08:28:06.156+0100 [ERROR] 2022-04-02T08:28:06.156+0100 [DEBUG] Creating Docker Container: ref=docker-cache -2022-04-02T08:28:06.206+0100 [ERROR] 2022-04-02T08:28:06.206+0100 [DEBUG] Remove container from default networks: ref=docker-cache -2022-04-02T08:28:06.210+0100 [ERROR] 2022-04-02T08:28:06.210+0100 [DEBUG] Attaching container to network: ref=48e6b97be378c16cf340c5775d18f3fe8af9939424320b8f90b6d7a42e3cd1d2 network=dc1 -2022-04-02T08:28:06.216+0100 [ERROR] 2022-04-02T08:28:06.216+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache -2022-04-02T08:28:06.796+0100 [ERROR] 2022-04-02T08:28:06.796+0100 [INFO] dc1: Creating Cluster: ref=dc1 -2022-04-02T08:28:06.817+0100 [ERROR] 2022-04-02T08:28:06.817+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 -2022-04-02T08:28:06.818+0100 [ERROR] 2022-04-02T08:28:06.818+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:28:06.818+0100 [ERROR] 2022-04-02T08:28:06.818+0100 [DEBUG] Creating Docker Container: ref=server.dc1 -2022-04-02T08:28:06.875+0100 [ERROR] 2022-04-02T08:28:06.875+0100 [DEBUG] Remove container from default networks: ref=server.dc1 -2022-04-02T08:28:06.878+0100 [ERROR] 2022-04-02T08:28:06.878+0100 [DEBUG] Attaching container to network: ref=98822f1c9a6a4150191cd142f0e9f7ed365b3d10a43c67dc56e75343c0414158 network=dc1 -2022-04-02T08:28:06.883+0100 [ERROR] 2022-04-02T08:28:06.883+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 -2022-04-02T08:28:09.544+0100 [ERROR] 2022-04-02T08:28:09.544+0100 [DEBUG] Copying file from: id=98822f1c9a6a4150191cd142f0e9f7ed365b3d10a43c67dc56e75343c0414158 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:28:09.589+0100 [ERROR] 2022-04-02T08:28:09.589+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:11.599+0100 [ERROR] 2022-04-02T08:28:11.599+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:13.283+0100 [ERROR] 2022-04-02T08:28:13.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000693] -2022-04-02T08:28:13.602+0100 [ERROR] 2022-04-02T08:28:13.602+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:15.606+0100 [ERROR] 2022-04-02T08:28:15.606+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:17.610+0100 [ERROR] 2022-04-02T08:28:17.610+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:19.613+0100 [ERROR] 2022-04-02T08:28:19.613+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:21.617+0100 [ERROR] 2022-04-02T08:28:21.617+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:23.620+0100 [ERROR] 2022-04-02T08:28:23.620+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:25.629+0100 [ERROR] 2022-04-02T08:28:25.629+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-z7wnn namespace=kube-system status=Pending -2022-04-02T08:28:27.635+0100 [ERROR] 2022-04-02T08:28:27.635+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-z7wnn namespace=kube-system status=Pending -2022-04-02T08:28:28.283+0100 [ERROR] 2022-04-02T08:28:28.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.001036] -2022-04-02T08:28:29.639+0100 [ERROR] 2022-04-02T08:28:29.639+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:28:29.639+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:28:31.643+0100 [ERROR] 2022-04-02T08:28:31.643+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:28:31.643+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run -2022-04-02T08:28:31.663+0100 [ERROR] 2022-04-02T08:28:31.663+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:28:31.663+0100 [DEBUG] Creating Docker Container: ref=63845971-import -2022-04-02T08:28:34.238+0100 [ERROR] 2022-04-02T08:28:34.238+0100 [DEBUG] Forcefully remove: container=aeb8011e95eef1d38d1518933cfa4192f78fd1a76507a4ff0512fcae13732054 -2022-04-02T08:28:34.615+0100 [ERROR] 2022-04-02T08:28:34.615+0100 [DEBUG] dc1: Deploying connector -2022-04-02T08:28:36.234+0100 [ERROR] 2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/4089621970/namespace.yaml -2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing secret config: file=/tmp/4089621970/secret.yaml -2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.234+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/4089621970/rbac.yaml -2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.235+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/4089621970/deployment.yaml -2022-04-02T08:28:36.235+0100 [ERROR] 2022-04-02T08:28:36.235+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/namespace.yaml -2022-04-02T08:28:36.774+0100 [ERROR] 2022-04-02T08:28:36.774+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/secret.yaml -2022-04-02T08:28:36.779+0100 [ERROR] 2022-04-02T08:28:36.779+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/rbac.yaml -2022-04-02T08:28:36.787+0100 [ERROR] 2022-04-02T08:28:36.787+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/4089621970/deployment.yaml -2022-04-02T08:28:36.804+0100 [ERROR] 2022-04-02T08:28:36.804+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.807+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 -2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul -2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-rpc -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:32577 local_addr=consul-ingress-gateway.consul.svc:18443 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-lan-serf -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=web -2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:32577 local_addr=consul-ingress-gateway.consul.svc:18080 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=controller-webhook -2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:32577 local_addr=localhost:19443 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8501 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8301 -2022-04-02T08:28:38.808+0100 [INFO] Create Ingress: ref=upstreams-proxy -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:32577 local_addr=consul-release-controller.default.svc:8080 -2022-04-02T08:28:38.808+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] -2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:32577 local_addr=web.default.svc:9090 -2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.808+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:32577 local_addr=consul-server.consul.svc:8300 -2022-04-02T08:28:38.809+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml -2022-04-02T08:28:38.809+0100 [ERROR] 2022-04-02T08:28:38.809+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:28:38.829+0100 [ERROR] 2022-04-02T08:28:38.828+0100 [DEBUG] Successfully exposed service: id=7849ba34-548c-453c-9b2f-042635cc1304 -2022-04-02T08:28:38.828+0100 [DEBUG] Successfully exposed service: id=d60e01b7-d23f-4532-8c80-688a904a7daf -2022-04-02T08:28:38.829+0100 [DEBUG] Successfully exposed service: id=4176dc31-e7b4-47f4-8e71-0ae0484bac51 -2022-04-02T08:28:38.829+0100 [ERROR] 2022-04-02T08:28:38.829+0100 [DEBUG] Successfully exposed service: id=0badc0dd-07e1-4cd1-bbeb-c3a99f441308 -2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.835+0100 [DEBUG] Successfully exposed service: id=fb781663-b542-4218-9074-d462fb177920 -2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=9d0c4aaf-c9b2-44ce-9317-a58ff83cc827 -2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=2f5d92af-06dc-4674-9a02-dd93a64117c9 -2022-04-02T08:28:38.836+0100 [ERROR] 2022-04-02T08:28:38.836+0100 [DEBUG] Successfully exposed service: id=a6562142-652d-4cd0-8b93-0eb7d7cda760 -2022-04-02T08:28:38.873+0100 [ERROR] 2022-04-02T08:28:38.873+0100 [INFO] Creating Helm chart: ref=consul -2022-04-02T08:28:38.873+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com -2022-04-02T08:28:39.027+0100 [ERROR] 2022-04-02T08:28:39.027+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:28:39.027+0100 [ERROR] 2022-04-02T08:28:39.027+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul -2022-04-02T08:28:39.153+0100 [ERROR] 2022-04-02T08:28:39.153+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz -2022-04-02T08:28:39.158+0100 [ERROR] 2022-04-02T08:28:39.158+0100 [DEBUG] Using Values: ref=consul - values= - | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | replicas:1 storage:128Mi] ui:map[enabled:true]] +2022-04-05T15:38:35.658+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169515.656]"] value_type=model.Vector warnings=[] +2022-04-05T15:38:35.658+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=70 +2022-04-05T15:38:36.311+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:41.312+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:46.313+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:51.314+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:38:56.315+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:39:01.316+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:39:05.658+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary +2022-04-05T15:39:05.658+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= + | + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 -2022-04-02T08:28:39.158+0100 [DEBUG] Validate chart: ref=consul -2022-04-02T08:28:39.158+0100 [DEBUG] Run chart: ref=consul -2022-04-02T08:28:39.204+0100 [ERROR] 2022-04-02T08:28:39.204+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:28:39.758+0100 [ERROR] 2022-04-02T08:28:39.758+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" -2022-04-02T08:28:39.761+0100 [ERROR] 2022-04-02T08:28:39.761+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" -2022-04-02T08:28:39.813+0100 [ERROR] 2022-04-02T08:28:39.813+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:28:39.818+0100 [ERROR] 2022-04-02T08:28:39.818+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" -2022-04-02T08:28:39.820+0100 [ERROR] 2022-04-02T08:28:39.820+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:28:39.870+0100 [ERROR] 2022-04-02T08:28:39.870+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:28:39.875+0100 [ERROR] 2022-04-02T08:28:39.875+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" -2022-04-02T08:28:39.877+0100 [ERROR] 2022-04-02T08:28:39.877+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:28:39.937+0100 [ERROR] 2022-04-02T08:28:39.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:28:39.941+0100 [ERROR] 2022-04-02T08:28:39.941+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:28:39.943+0100 [ERROR] 2022-04-02T08:28:39.943+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" -2022-04-02T08:28:39.995+0100 [ERROR] 2022-04-02T08:28:39.995+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:28:40.003+0100 [ERROR] 2022-04-02T08:28:40.003+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" -2022-04-02T08:28:40.008+0100 [ERROR] 2022-04-02T08:28:40.008+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" -2022-04-02T08:28:40.008+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:28:40.019+0100 [ERROR] 2022-04-02T08:28:40.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:28:40.018+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:28:41.209+0100 [ERROR] 2022-04-02T08:28:41.209+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager status=Pending -2022-04-02T08:28:42.167+0100 [ERROR] 2022-04-02T08:28:42.167+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:28:42.167+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:28:42.180+0100 [ERROR] 2022-04-02T08:28:42.180+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:28:42.183+0100 [ERROR] 2022-04-02T08:28:42.183+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:28:42.189+0100 [ERROR] 2022-04-02T08:28:42.189+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" -2022-04-02T08:28:42.578+0100 [ERROR] 2022-04-02T08:28:42.578+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:28:42.584+0100 [ERROR] 2022-04-02T08:28:42.584+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" -2022-04-02T08:28:42.586+0100 [ERROR] 2022-04-02T08:28:42.586+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" -2022-04-02T08:28:42.586+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:28:42.590+0100 [ERROR] 2022-04-02T08:28:42.590+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:28:42.590+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:28:43.214+0100 [ERROR] 2022-04-02T08:28:43.214+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False -2022-04-02T08:28:43.283+0100 [ERROR] 2022-04-02T08:28:43.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000563] -2022-04-02T08:28:45.221+0100 [ERROR] 2022-04-02T08:28:45.221+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False -2022-04-02T08:28:47.227+0100 [ERROR] 2022-04-02T08:28:47.227+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False -2022-04-02T08:28:49.231+0100 [ERROR] 2022-04-02T08:28:49.231+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False -2022-04-02T08:28:51.236+0100 [ERROR] 2022-04-02T08:28:51.236+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-zcf8s namespace=cert-manager type=Ready value=False -2022-04-02T08:28:53.242+0100 [ERROR] 2022-04-02T08:28:53.242+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:28:58.283+0100 [ERROR] 2022-04-02T08:28:58.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001061] -2022-04-02T08:29:01.396+0100 [ERROR] 2022-04-02T08:29:01.396+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:29:01.396+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:01.404+0100 [ERROR] 2022-04-02T08:29:01.404+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:29:01.406+0100 [ERROR] 2022-04-02T08:29:01.406+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" -2022-04-02T08:29:01.461+0100 [ERROR] 2022-04-02T08:29:01.461+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:29:03.467+0100 [ERROR] 2022-04-02T08:29:03.466+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-5w9d9 namespace=consul type=Ready value=False -2022-04-02T08:29:05.472+0100 [ERROR] 2022-04-02T08:29:05.472+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:29:05.472+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:29:07.477+0100 [ERROR] 2022-04-02T08:29:07.477+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:29:07.477+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:29:09.481+0100 [ERROR] 2022-04-02T08:29:09.481+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:29:09.481+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:29:11.485+0100 [ERROR] 2022-04-02T08:29:11.485+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=grafana_secret_template - source= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: #{{ .Vars.monitoring_namespace }} - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= +2022-04-05T15:39:05.660+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169545.659]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:05.660+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= + | + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) -2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=tempo -2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=prometheus_operator_template - source= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default +2022-04-05T15:39:05.662+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169545.661]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:05.662+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=90 +2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy +2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor +2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor +2022-04-05T15:39:05.663+0100 [DEBUG] statemachine: Scale: state=state_scale +2022-04-05T15:39:05.663+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale +2022-04-05T15:39:05.663+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=10 traffic_canary=90 +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Scale completed successfully +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Monitor: state=state_monitor +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor +2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Executing post deployment tests +2022-04-05T15:39:05.668+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:39:05.683+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:39:05.684+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=monitoring_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring - -2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:32577 local_addr=tempo.default.svc:3100 -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Creating Helm chart: ref=prometheus -2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=grafana_secret_template - destination= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: monitoring - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 -2022-04-02T08:29:11.486+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] -2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=prometheus -2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=monitoring_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts -2022-04-02T08:29:11.486+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:32577 local_addr=prometheus-operated.monitoring.svc:9090 -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=grafana -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:32577 local_addr=grafana.monitoring.svc:80 -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [DEBUG] Template output: ref=prometheus_operator_template - destination= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:29:11.486+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh -2022-04-02T08:29:11.486+0100 [DEBUG] Template content: ref=fetch_consul_resources - source= - | #!/bin/sh -e - | - | echo "Port #{{ .Vars.port }}" - | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" +2022-04-05T15:39:05.685+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169545.684]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:05.685+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | #{{ if eq .Vars.acl_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | #{{end}} - | - | #{{ if eq .Vars.tls_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | #{{end}} -2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.486+0100 [INFO] Create Ingress: ref=zipkin -2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:32577 local_addr=tempo.monitoring.svc:9411 -2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Template output: ref=fetch_consul_resources - destination= - | #!/bin/sh -e + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) + +2022-04-05T15:39:05.687+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169545.686]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:06.317+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:39:11.318+0100 [INFO] release_handler: Release GET handler called +2022-04-05T15:39:15.688+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default +2022-04-05T15:39:15.705+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 +2022-04-05T15:39:15.705+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success + query= | - | echo "Port 8501" - | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", + | envoy_cluster_name="local_app", + | envoy_response_code!~"5.*" + | }[30s] + | ) + | ) + | / + | sum( + | rate( + | envoy_cluster_upstream_rq{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) + | * 100 + +2022-04-05T15:39:15.707+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169555.705]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:15.707+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration + query= | - | - | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | - | - | - | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | -2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" -2022-04-02T08:29:11.487+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:29:11.488+0100 [ERROR] 2022-04-02T08:29:11.487+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:29:11.506+0100 [ERROR] 2022-04-02T08:29:11.506+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 -2022-04-02T08:29:11.506+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec -2022-04-02T08:29:11.509+0100 [ERROR] 2022-04-02T08:29:11.509+0100 [DEBUG] Successfully exposed service: id=8b652934-a4a2-415c-a36f-2b174ed2c944 -2022-04-02T08:29:11.517+0100 [ERROR] 2022-04-02T08:29:11.517+0100 [DEBUG] Successfully exposed service: id=8716f023-e206-4731-ae8b-6afde65709bc -2022-04-02T08:29:11.517+0100 [ERROR] 2022-04-02T08:29:11.517+0100 [DEBUG] Successfully exposed service: id=37e8b5ce-cc2f-40c7-b07e-8da29488a100 -2022-04-02T08:29:11.518+0100 [ERROR] 2022-04-02T08:29:11.518+0100 [DEBUG] Successfully exposed service: id=9ca4de8e-a6a9-4722-add2-cd56e3550f65 -2022-04-02T08:29:11.563+0100 [ERROR] 2022-04-02T08:29:11.563+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec -2022-04-02T08:29:11.566+0100 [ERROR] 2022-04-02T08:29:11.566+0100 [DEBUG] Attaching container to network: ref=5883402fa0ca508e895b64ed2555bcd9fb9dab62665f096f10cb657f1163f863 network=dc1 -2022-04-02T08:29:11.572+0100 [ERROR] 2022-04-02T08:29:11.572+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec -2022-04-02T08:29:11.981+0100 [ERROR] 2022-04-02T08:29:11.981+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:11.981+0100 [ERROR] 2022-04-02T08:29:11.981+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack -2022-04-02T08:29:12.090+0100 [ERROR] 2022-04-02T08:29:12.090+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] -2022-04-02T08:29:12.091+0100 [ERROR] 2022-04-02T08:29:12.090+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:29:12.571+0100 [ERROR] 2022-04-02T08:29:12.571+0100 [DEBUG] Port 8501 -Fetching resources from running cluster, acls_enabled: true, tls_enabled true -2022-04-02T08:29:12.778+0100 [ERROR] 2022-04-02T08:29:12.778+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz -2022-04-02T08:29:12.794+0100 [ERROR] 2022-04-02T08:29:12.794+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" -2022-04-02T08:29:12.794+0100 [DEBUG] Validate chart: ref=prometheus -2022-04-02T08:29:12.794+0100 [DEBUG] Run chart: ref=prometheus -2022-04-02T08:29:12.811+0100 [ERROR] 2022-04-02T08:29:12.811+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:12.860+0100 [ERROR] 2022-04-02T08:29:12.860+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:12.910+0100 [ERROR] 2022-04-02T08:29:12.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:12.929+0100 [ERROR] 2022-04-02T08:29:12.929+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:12.972+0100 [ERROR] 2022-04-02T08:29:12.972+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:13.058+0100 [ERROR] 2022-04-02T08:29:13.058+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:13.062+0100 [ERROR] 2022-04-02T08:29:13.062+0100 [DEBUG] Forcefully remove: container=5883402fa0ca508e895b64ed2555bcd9fb9dab62665f096f10cb657f1163f863 -2022-04-02T08:29:13.068+0100 [ERROR] 2022-04-02T08:29:13.068+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:13.099+0100 [ERROR] 2022-04-02T08:29:13.099+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:13.162+0100 [ERROR] 2022-04-02T08:29:13.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" -2022-04-02T08:29:13.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" -2022-04-02T08:29:13.283+0100 [ERROR] 2022-04-02T08:29:13.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000695] -2022-04-02T08:29:16.570+0100 [ERROR] 2022-04-02T08:29:16.569+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:16.843+0100 [ERROR] 2022-04-02T08:29:16.843+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:29:16.846+0100 [ERROR] 2022-04-02T08:29:16.846+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:17.125+0100 [ERROR] 2022-04-02T08:29:17.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:17.131+0100 [ERROR] 2022-04-02T08:29:17.130+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:29:17.133+0100 [ERROR] 2022-04-02T08:29:17.133+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:17.424+0100 [ERROR] 2022-04-02T08:29:17.424+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:17.430+0100 [ERROR] 2022-04-02T08:29:17.430+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:29:17.432+0100 [ERROR] 2022-04-02T08:29:17.432+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:17.709+0100 [ERROR] 2022-04-02T08:29:17.709+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:17.715+0100 [ERROR] 2022-04-02T08:29:17.715+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:29:17.717+0100 [ERROR] 2022-04-02T08:29:17.717+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:17.999+0100 [ERROR] 2022-04-02T08:29:17.999+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:18.005+0100 [ERROR] 2022-04-02T08:29:18.004+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:29:18.007+0100 [ERROR] 2022-04-02T08:29:18.007+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:18.294+0100 [ERROR] 2022-04-02T08:29:18.294+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:18.300+0100 [ERROR] 2022-04-02T08:29:18.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:29:18.302+0100 [ERROR] 2022-04-02T08:29:18.302+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" -2022-04-02T08:29:18.578+0100 [ERROR] 2022-04-02T08:29:18.578+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:18.582+0100 [ERROR] 2022-04-02T08:29:18.582+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" -2022-04-02T08:29:18.584+0100 [ERROR] 2022-04-02T08:29:18.584+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" -2022-04-02T08:29:18.584+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:18.602+0100 [ERROR] 2022-04-02T08:29:18.602+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:29:18.602+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:20.271+0100 [ERROR] 2022-04-02T08:29:20.271+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:29:20.271+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:20.279+0100 [ERROR] 2022-04-02T08:29:20.279+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:29:20.281+0100 [ERROR] 2022-04-02T08:29:20.281+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:29:20.287+0100 [ERROR] 2022-04-02T08:29:20.287+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:29:20.296+0100 [ERROR] 2022-04-02T08:29:20.295+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:29:20.301+0100 [ERROR] 2022-04-02T08:29:20.300+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:29:20.306+0100 [ERROR] 2022-04-02T08:29:20.306+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:29:20.310+0100 [ERROR] 2022-04-02T08:29:20.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:29:20.314+0100 [ERROR] 2022-04-02T08:29:20.314+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" -2022-04-02T08:29:20.508+0100 [ERROR] 2022-04-02T08:29:20.508+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:29:20.511+0100 [ERROR] 2022-04-02T08:29:20.511+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:20.791+0100 [ERROR] 2022-04-02T08:29:20.791+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:20.797+0100 [ERROR] 2022-04-02T08:29:20.797+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:29:20.800+0100 [ERROR] 2022-04-02T08:29:20.800+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:21.080+0100 [ERROR] 2022-04-02T08:29:21.080+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:21.085+0100 [ERROR] 2022-04-02T08:29:21.085+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:29:21.087+0100 [ERROR] 2022-04-02T08:29:21.087+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:21.375+0100 [ERROR] 2022-04-02T08:29:21.375+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:21.380+0100 [ERROR] 2022-04-02T08:29:21.380+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:29:21.384+0100 [ERROR] 2022-04-02T08:29:21.383+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:21.692+0100 [ERROR] 2022-04-02T08:29:21.691+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:21.697+0100 [ERROR] 2022-04-02T08:29:21.697+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:29:21.699+0100 [ERROR] 2022-04-02T08:29:21.699+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:29:21.987+0100 [ERROR] 2022-04-02T08:29:21.987+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:21.993+0100 [ERROR] 2022-04-02T08:29:21.993+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:29:21.997+0100 [ERROR] 2022-04-02T08:29:21.997+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" -2022-04-02T08:29:22.289+0100 [ERROR] 2022-04-02T08:29:22.289+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:29:22.297+0100 [ERROR] 2022-04-02T08:29:22.297+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" -2022-04-02T08:29:22.299+0100 [ERROR] 2022-04-02T08:29:22.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" -2022-04-02T08:29:22.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:22.310+0100 [ERROR] 2022-04-02T08:29:22.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:29:22.310+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:25.290+0100 [ERROR] 2022-04-02T08:29:25.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:29:25.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:29:25.300+0100 [ERROR] 2022-04-02T08:29:25.300+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:29:25.302+0100 [ERROR] 2022-04-02T08:29:25.302+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:29:25.308+0100 [ERROR] 2022-04-02T08:29:25.308+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:29:25.318+0100 [ERROR] 2022-04-02T08:29:25.318+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:29:25.323+0100 [ERROR] 2022-04-02T08:29:25.323+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:29:25.328+0100 [ERROR] 2022-04-02T08:29:25.328+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:29:25.334+0100 [ERROR] 2022-04-02T08:29:25.334+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:29:25.685+0100 [ERROR] 2022-04-02T08:29:25.685+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:29:27.690+0100 [ERROR] 2022-04-02T08:29:27.690+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-nkkrw namespace=monitoring type=Ready value=False -2022-04-02T08:29:28.283+0100 [ERROR] 2022-04-02T08:29:28.283+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000978] -2022-04-02T08:29:29.696+0100 [ERROR] 2022-04-02T08:29:29.696+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-nkkrw namespace=monitoring type=Ready value=False -2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] -2022-04-02T08:29:31.701+0100 [ERROR] 2022-04-02T08:29:31.701+0100 [INFO] Creating Helm chart: ref=loki -2022-04-02T08:29:31.701+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:29:31.702+0100 [ERROR] 2022-04-02T08:29:31.702+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:29:32.025+0100 [ERROR] 2022-04-02T08:29:32.025+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:32.025+0100 [ERROR] 2022-04-02T08:29:32.025+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki -2022-04-02T08:29:32.914+0100 [ERROR] 2022-04-02T08:29:32.913+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz -2022-04-02T08:29:32.914+0100 [ERROR] 2022-04-02T08:29:32.914+0100 [DEBUG] Using Values: ref=loki values=map[] -2022-04-02T08:29:32.914+0100 [DEBUG] Validate chart: ref=loki -2022-04-02T08:29:32.914+0100 [DEBUG] Run chart: ref=loki -2022-04-02T08:29:33.148+0100 [ERROR] W0402 08:29:33.148759 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:33.162+0100 [ERROR] 2022-04-02T08:29:33.162+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" -2022-04-02T08:29:33.170+0100 [ERROR] 2022-04-02T08:29:33.170+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" -2022-04-02T08:29:33.174+0100 [ERROR] W0402 08:29:33.174431 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:33.203+0100 [ERROR] 2022-04-02T08:29:33.203+0100 [INFO] Creating Helm chart: ref=promtail -2022-04-02T08:29:33.203+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:29:33.203+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:33.204+0100 [ERROR] 2022-04-02T08:29:33.204+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail -2022-04-02T08:29:33.856+0100 [ERROR] 2022-04-02T08:29:33.856+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz -2022-04-02T08:29:33.857+0100 [ERROR] 2022-04-02T08:29:33.857+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] -2022-04-02T08:29:33.857+0100 [DEBUG] Validate chart: ref=promtail -2022-04-02T08:29:33.857+0100 [DEBUG] Run chart: ref=promtail -2022-04-02T08:29:34.276+0100 [ERROR] 2022-04-02T08:29:34.276+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" -2022-04-02T08:29:34.286+0100 [ERROR] 2022-04-02T08:29:34.285+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" -2022-04-02T08:29:34.310+0100 [ERROR] 2022-04-02T08:29:34.310+0100 [INFO] Creating Helm chart: ref=tempo -2022-04-02T08:29:34.310+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:29:34.310+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:34.311+0100 [ERROR] 2022-04-02T08:29:34.311+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo -2022-04-02T08:29:34.902+0100 [ERROR] 2022-04-02T08:29:34.902+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz -2022-04-02T08:29:34.903+0100 [ERROR] 2022-04-02T08:29:34.903+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" -2022-04-02T08:29:34.903+0100 [DEBUG] Validate chart: ref=tempo -2022-04-02T08:29:34.903+0100 [DEBUG] Run chart: ref=tempo -2022-04-02T08:29:35.144+0100 [ERROR] 2022-04-02T08:29:35.144+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" -2022-04-02T08:29:35.153+0100 [ERROR] 2022-04-02T08:29:35.153+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" -2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.184+0100 [INFO] Creating Helm chart: ref=grafana -2022-04-02T08:29:35.185+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.185+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:35.185+0100 [ERROR] 2022-04-02T08:29:35.185+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana -2022-04-02T08:29:35.528+0100 [ERROR] 2022-04-02T08:29:35.528+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz -2022-04-02T08:29:35.530+0100 [ERROR] 2022-04-02T08:29:35.529+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" -2022-04-02T08:29:35.530+0100 [DEBUG] Validate chart: ref=grafana -2022-04-02T08:29:35.530+0100 [DEBUG] Run chart: ref=grafana -2022-04-02T08:29:35.852+0100 [ERROR] W0402 08:29:35.852165 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:35.854+0100 [ERROR] W0402 08:29:35.854231 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:35.884+0100 [ERROR] 2022-04-02T08:29:35.884+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" -2022-04-02T08:29:35.903+0100 [ERROR] 2022-04-02T08:29:35.902+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" -2022-04-02T08:29:35.906+0100 [ERROR] W0402 08:29:35.906253 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:35.906+0100 [ERROR] W0402 08:29:35.906415 7537 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:29:35.964+0100 [DEBUG] Template content: ref=monitor_ingress_gateway - source= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: #{{ .Vars.monitoring_namespace }} - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: #{{ .Vars.consul_namespace }} - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [DEBUG] Template output: ref=monitor_ingress_gateway - destination= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: monitoring - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: consul - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:29:35.964+0100 [ERROR] 2022-04-02T08:29:35.964+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] -2022-04-02T08:29:35.965+0100 [ERROR] 2022-04-02T08:29:35.965+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] -2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [INFO] Creating Helm chart: ref=consul-release-controller -2022-04-02T08:29:36.045+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] -2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:29:36.045+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml -2022-04-02T08:29:36.045+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml -2022-04-02T08:29:36.046+0100 [ERROR] 2022-04-02T08:29:36.045+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:29:36.045+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:29:36.047+0100 [ERROR] 2022-04-02T08:29:36.046+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" -2022-04-02T08:29:36.047+0100 [DEBUG] Validate chart: ref=consul-release-controller -2022-04-02T08:29:36.047+0100 [DEBUG] Run chart: ref=consul-release-controller -2022-04-02T08:29:36.168+0100 [ERROR] 2022-04-02T08:29:36.168+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml -2022-04-02T08:29:36.194+0100 [ERROR] 2022-04-02T08:29:36.194+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml -2022-04-02T08:29:36.266+0100 [ERROR] 2022-04-02T08:29:36.265+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml -2022-04-02T08:29:36.293+0100 [ERROR] 2022-04-02T08:29:36.293+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml -2022-04-02T08:29:36.351+0100 [ERROR] 2022-04-02T08:29:36.350+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml -2022-04-02T08:29:36.357+0100 [ERROR] 2022-04-02T08:29:36.357+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml -2022-04-02T08:29:36.448+0100 [ERROR] 2022-04-02T08:29:36.448+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" -2022-04-02T08:29:36.461+0100 [ERROR] 2022-04-02T08:29:36.461+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" -2022-04-02T08:29:36.600+0100 [ERROR] 2022-04-02T08:29:36.600+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" -2022-04-02T08:29:36.623+0100 [ERROR] 2022-04-02T08:29:36.623+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 -2022-04-02T08:29:36.623+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec -2022-04-02T08:29:37.048+0100 [ERROR] 2022-04-02T08:29:37.048+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec -2022-04-02T08:29:37.052+0100 [ERROR] 2022-04-02T08:29:37.052+0100 [DEBUG] Attaching container to network: ref=7f054585b5c6de149a4fd558847b805022365300fb29756bbd0f59a3c1560f2e network=dc1 -2022-04-02T08:29:37.066+0100 [ERROR] 2022-04-02T08:29:37.066+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec -2022-04-02T08:29:40.323+0100 [ERROR] 2022-04-02T08:29:40.323+0100 [DEBUG] Forcefully remove: container=7f054585b5c6de149a4fd558847b805022365300fb29756bbd0f59a3c1560f2e -2022-04-02T08:29:40.857+0100 [ERROR] 2022-04-02T08:29:40.857+0100 [DEBUG] Health check urls for browser windows: count=0 -2022-04-02T08:29:40.857+0100 [DEBUG] Browser windows open - -######################################################## - -Title Development setup -Author Nic Jackson -2022-04-02T08:29:40.857+0100 [ERROR] -• Consul: https://localhost:8501 -• Grafana: https://localhost:8080 -• Application: http://localhost:18080 - -This blueprint defines 13 output variables. - -You can set output variables as environment variables for your current terminal session using the following command: - -eval $(shipyard env) - -To list output variables use the command: - -shipyard output -2022-04-02T08:29:41.478+0100 [INFO] Starting controller -2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start -2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start -2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Configure: state=state_configure -2022-04-02T08:29:46.062+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure -2022-04-02T08:29:46.062+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api -2022-04-02T08:29:46.062+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api -2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_configure -2022-04-02T08:29:46.090+0100 [DEBUG] kubernetes-webhook: Reject deployment, there is currently an active release for this deployment: name=api-deployment namespace=default state=state_configure -2022-04-02T08:29:46.092+0100 [INFO] Shutting down server gracefully -2022-04-02T08:29:46.093+0100 [INFO] Shutting down listener -2022-04-02T08:29:46.093+0100 [INFO] Shutting down metrics -2022-04-02T08:29:46.095+0100 [INFO] Shutting down kubernetes controller -2022-04-02T08:29:46.095+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller -2022-04-02T08:29:47.071+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceDefaults: name=consul-release-controller error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" -2022-04-02T08:29:47.071+0100 [ERROR] statemachine: Configure completed with error: error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" -2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_configure -2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_configure -2022-04-02T08:29:47.071+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail -2022-04-02T08:30:31.299+0100 [ERROR] 2022-04-02T08:30:31.299+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs -2022-04-02T08:30:33.676+0100 [ERROR] 2022-04-02T08:30:33.676+0100 [DEBUG] Starting Ingress -2022-04-02T08:30:33.676+0100 [ERROR] Running configuration from: ./shipyard/kubernetes - -2022-04-02T08:30:33.676+0100 [DEBUG] Statefile does not exist -2022-04-02T08:30:36.894+0100 [ERROR] 2022-04-02T08:30:36.894+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes -2022-04-02T08:30:36.894+0100 [DEBUG] Statefile does not exist -2022-04-02T08:30:39.982+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR -2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_CACERT -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TLS_KEY -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_USER -2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:30:39.982+0100 [DEBUG] Template content: ref=consul_proxy_defaults - source= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } -2022-04-02T08:30:39.982+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Network: ref=dc1 -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [DEBUG] Template content: ref=consul_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh -2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=certs_script - source= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=consul_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul - -2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=certs_script - destination= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=controller_values - source= - | controller: - | enabled: "#{{ .Vars.controller_enabled }}" - | container_config: - | image: - | repository: "#{{ .Vars.controller_repo }}" - | tag: "#{{ .Vars.controller_version }}" - | autoencrypt: - | enabled: #{{ .Vars.tls_enabled }} - | acls: - | enabled: #{{ .Vars.acls_enabled }} - | #{{- if eq .Vars.controller_enabled false }} - | webhook: - | service: controller-webhook - | namespace: shipyard - | #{{ end }} -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=TLS_CERT -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_CAKEY -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=UPSTREAMS -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=KUBECONFIG -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template content: ref=consul_values - source= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: #{{ .Vars.datacenter }} - | - | acls: - | manageSystemACLs: #{{ .Vars.acl_enabled }} - | tls: - | enabled: #{{ .Vars.tls_enabled }} - | enableAutoEncrypt: #{{ .Vars.tls_enabled }} - | httpsOnly: false - | - | federation: - | enabled: #{{ .Vars.federation_enabled }} - | createFederationSecret: #{{ .Vars.create_federation_secret }} - | - | image: #{{ .Vars.consul_image }} - | - | imageK8S: #{{ .Vars.consul_k8s_image }} - | - | imageEnvoy: #{{ .Vars.consul_envoy_image }} - | - | metrics: - | enabled: #{{ .Vars.metrics_enabled }} - | enableAgentMetrics: #{{ .Vars.metrics_enabled }} - | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} - | - | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} - | - | transparentProxy: - | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: #{{ .Vars.ingress_gateway_enabled }} - | defaults: - | replicas: 1 - | service: - | ports: - | #{{ range .Vars.ingress_gateway_ports }} - | - port: #{{ . }} - | nodePort: null - | #{{ end }} - | - | - | meshGateway: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | replicas: 1 - | - | wanAddress: - | source: Static - | static: #{{ .Vars.mesh_gateway_address }} - | port: 30443 - | - | service: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | type: NodePort - | nodePort: 30443 -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=controller_values - destination= - | controller: - | enabled: "false" - | container_config: - | image: - | repository: "nicholasjackson/consul-release-controller" - | tag: "" - | autoencrypt: - | enabled: true - | acls: - | enabled: true - | webhook: - | service: controller-webhook - | namespace: shipyard - | -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.982+0100 [DEBUG] Template output: ref=consul_proxy_defaults - destination= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.monitoring.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } - -2022-04-02T08:30:39.982+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR -2022-04-02T08:30:39.983+0100 [ERROR] 2022-04-02T08:30:39.983+0100 [DEBUG] Template output: ref=consul_values - destination= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: dc1 - | - | acls: - | manageSystemACLs: true - | tls: - | enabled: true - | enableAutoEncrypt: true - | httpsOnly: false - | - | federation: - | enabled: false - | createFederationSecret: false - | - | image: hashicorp/consul:1.11.3 - | - | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 - | - | imageEnvoy: envoyproxy/envoy:v1.20.1 - | - | metrics: - | enabled: true - | enableAgentMetrics: true - | enableGatewayMetrics: true - | - | logLevel: "info" - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: null - | - | transparentProxy: - | defaultEnabled: false - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: true - | defaults: - | replicas: 1 - | service: - | ports: - | - | - port: 18080 - | nodePort: null - | - | - port: 18443 - | nodePort: null - | - | - | - | meshGateway: - | enabled: false - | replicas: 1 - | - | wanAddress: - | source: Static - | static: dc1.k8s-cluster.shipyard.run - | port: 30443 - | - | service: - | enabled: false - | type: NodePort - | nodePort: 30443 -2022-04-02T08:30:39.984+0100 [ERROR] 2022-04-02T08:30:39.984+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 -2022-04-02T08:30:40.007+0100 [ERROR] 2022-04-02T08:30:40.007+0100 [INFO] Creating ImageCache: ref=docker-cache -2022-04-02T08:30:40.010+0100 [ERROR] 2022-04-02T08:30:40.010+0100 [DEBUG] Connecting cache to network: name=network.dc1 -2022-04-02T08:30:40.011+0100 [ERROR] 2022-04-02T08:30:40.011+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:30:40.029+0100 [ERROR] 2022-04-02T08:30:40.029+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:30:40.029+0100 [DEBUG] Creating Docker Container: ref=29925218-import -2022-04-02T08:30:42.697+0100 [ERROR] 2022-04-02T08:30:42.697+0100 [DEBUG] Forcefully remove: container=1a96b777bdae3b860cce347673c73d3f3d70fe9e009e4257bcc5817acf7f775b -2022-04-02T08:30:43.107+0100 [ERROR] 2022-04-02T08:30:43.107+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 -2022-04-02T08:30:43.107+0100 [ERROR] 2022-04-02T08:30:43.107+0100 [DEBUG] Creating Docker Container: ref=docker-cache -2022-04-02T08:30:43.159+0100 [ERROR] 2022-04-02T08:30:43.159+0100 [DEBUG] Remove container from default networks: ref=docker-cache -2022-04-02T08:30:43.162+0100 [ERROR] 2022-04-02T08:30:43.162+0100 [DEBUG] Attaching container to network: ref=d6e52b47c162800478704bcb36db2e9991f1b72fc4ac8388540bb8ae49b2acb5 network=dc1 -2022-04-02T08:30:43.169+0100 [ERROR] 2022-04-02T08:30:43.169+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache -2022-04-02T08:30:43.837+0100 [ERROR] 2022-04-02T08:30:43.837+0100 [INFO] dc1: Creating Cluster: ref=dc1 -2022-04-02T08:30:43.859+0100 [ERROR] 2022-04-02T08:30:43.859+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 -2022-04-02T08:30:43.860+0100 [ERROR] 2022-04-02T08:30:43.860+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:30:43.860+0100 [ERROR] 2022-04-02T08:30:43.860+0100 [DEBUG] Creating Docker Container: ref=server.dc1 -2022-04-02T08:30:43.916+0100 [ERROR] 2022-04-02T08:30:43.916+0100 [DEBUG] Remove container from default networks: ref=server.dc1 -2022-04-02T08:30:43.919+0100 [ERROR] 2022-04-02T08:30:43.919+0100 [DEBUG] Attaching container to network: ref=02863c59bf438c3069014412f24e105baf08258f0205b50ab210c46162bdd358 network=dc1 -2022-04-02T08:30:43.929+0100 [ERROR] 2022-04-02T08:30:43.929+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 -2022-04-02T08:30:46.534+0100 [ERROR] 2022-04-02T08:30:46.534+0100 [DEBUG] Copying file from: id=02863c59bf438c3069014412f24e105baf08258f0205b50ab210c46162bdd358 src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:30:46.574+0100 [ERROR] 2022-04-02T08:30:46.573+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:48.584+0100 [ERROR] 2022-04-02T08:30:48.584+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:50.587+0100 [ERROR] 2022-04-02T08:30:50.587+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:51.895+0100 [ERROR] 2022-04-02T08:30:51.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000301] -2022-04-02T08:30:52.590+0100 [ERROR] 2022-04-02T08:30:52.590+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:54.594+0100 [ERROR] 2022-04-02T08:30:54.594+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:56.597+0100 [ERROR] 2022-04-02T08:30:56.597+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:30:58.602+0100 [ERROR] 2022-04-02T08:30:58.602+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:31:00.606+0100 [ERROR] 2022-04-02T08:31:00.606+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:31:02.611+0100 [ERROR] 2022-04-02T08:31:02.610+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-9j4kj namespace=kube-system status=Pending -2022-04-02T08:31:04.616+0100 [ERROR] 2022-04-02T08:31:04.616+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-9j4kj namespace=kube-system status=Pending -2022-04-02T08:31:06.620+0100 [ERROR] 2022-04-02T08:31:06.620+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:31:06.620+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:31:06.895+0100 [ERROR] 2022-04-02T08:31:06.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000659] -2022-04-02T08:31:08.624+0100 [ERROR] 2022-04-02T08:31:08.624+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:31:08.624+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run -2022-04-02T08:31:08.641+0100 [ERROR] 2022-04-02T08:31:08.641+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:31:08.641+0100 [DEBUG] Creating Docker Container: ref=41887903-import -2022-04-02T08:31:11.174+0100 [ERROR] 2022-04-02T08:31:11.174+0100 [DEBUG] Forcefully remove: container=16f5ef710361f211aa41a4e0ca31daf0647a0da07d4fdc99d72d17bc37e8e3c2 -2022-04-02T08:31:11.516+0100 [ERROR] 2022-04-02T08:31:11.516+0100 [DEBUG] dc1: Deploying connector -2022-04-02T08:31:12.791+0100 [ERROR] 2022-04-02T08:31:12.791+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/1072507525/namespace.yaml -2022-04-02T08:31:12.791+0100 [DEBUG] dc1: Writing secret config: file=/tmp/1072507525/secret.yaml -2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/1072507525/rbac.yaml -2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/1072507525/deployment.yaml -2022-04-02T08:31:12.792+0100 [ERROR] 2022-04-02T08:31:12.792+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/namespace.yaml -2022-04-02T08:31:13.335+0100 [ERROR] 2022-04-02T08:31:13.335+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/secret.yaml -2022-04-02T08:31:13.340+0100 [ERROR] 2022-04-02T08:31:13.340+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/rbac.yaml -2022-04-02T08:31:13.349+0100 [ERROR] 2022-04-02T08:31:13.349+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/1072507525/deployment.yaml -2022-04-02T08:31:13.366+0100 [ERROR] 2022-04-02T08:31:13.366+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=web -2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=consul-lan-serf -2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=controller-webhook -2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:32633 local_addr=web.default.svc:9090 -2022-04-02T08:31:15.370+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8301 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=upstreams-proxy -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul-rpc -2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8300 -2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:32633 local_addr=consul-server.consul.svc:8501 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:32633 local_addr=consul-release-controller.default.svc:8080 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:32633 local_addr=consul-ingress-gateway.consul.svc:18080 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:32633 local_addr=localhost:19443 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.370+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] -2022-04-02T08:31:15.370+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 -2022-04-02T08:31:15.371+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:32633 local_addr=consul-ingress-gateway.consul.svc:18443 -2022-04-02T08:31:15.372+0100 [ERROR] 2022-04-02T08:31:15.371+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:31:15.372+0100 [ERROR] 2022-04-02T08:31:15.372+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml -2022-04-02T08:31:15.392+0100 [ERROR] 2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=c4bff055-8fd0-46bf-8cb5-7787f96a3772 -2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=44c19ea1-1b6a-4b0a-be29-9283b735100e -2022-04-02T08:31:15.392+0100 [DEBUG] Successfully exposed service: id=50ef2855-746f-46aa-8f89-71c56c2c7c3f -2022-04-02T08:31:15.393+0100 [ERROR] 2022-04-02T08:31:15.393+0100 [DEBUG] Successfully exposed service: id=d9c5944a-fed4-45a9-947c-8ba09c344433 -2022-04-02T08:31:15.393+0100 [DEBUG] Successfully exposed service: id=2c265d3f-1dd7-44da-8382-3fba078e4643 -2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=865e314c-8a34-4980-b6d3-97dfe035f7b9 -2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=1444b229-e58a-4259-b750-bd184bcb6678 -2022-04-02T08:31:15.394+0100 [ERROR] 2022-04-02T08:31:15.394+0100 [DEBUG] Successfully exposed service: id=faa09547-d6be-4c53-9b5b-6466a248686b -2022-04-02T08:31:15.424+0100 [ERROR] 2022-04-02T08:31:15.424+0100 [INFO] Creating Helm chart: ref=consul -2022-04-02T08:31:15.424+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com -2022-04-02T08:31:15.538+0100 [ERROR] 2022-04-02T08:31:15.538+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:31:15.539+0100 [ERROR] 2022-04-02T08:31:15.538+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul -2022-04-02T08:31:15.650+0100 [ERROR] 2022-04-02T08:31:15.650+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz -2022-04-02T08:31:15.655+0100 [ERROR] 2022-04-02T08:31:15.655+0100 [DEBUG] Using Values: ref=consul - values= - | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | replicas:1 storage:128Mi] ui:map[enabled:true]] - -2022-04-02T08:31:15.655+0100 [DEBUG] Validate chart: ref=consul -2022-04-02T08:31:15.655+0100 [DEBUG] Run chart: ref=consul -2022-04-02T08:31:15.767+0100 [ERROR] 2022-04-02T08:31:15.767+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:31:16.311+0100 [ERROR] 2022-04-02T08:31:16.311+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" -2022-04-02T08:31:16.314+0100 [ERROR] 2022-04-02T08:31:16.314+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" -2022-04-02T08:31:16.373+0100 [ERROR] 2022-04-02T08:31:16.373+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:31:16.378+0100 [ERROR] 2022-04-02T08:31:16.377+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" -2022-04-02T08:31:16.380+0100 [ERROR] 2022-04-02T08:31:16.380+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:31:16.431+0100 [ERROR] 2022-04-02T08:31:16.431+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:31:16.436+0100 [ERROR] 2022-04-02T08:31:16.436+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" -2022-04-02T08:31:16.438+0100 [ERROR] 2022-04-02T08:31:16.438+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:31:16.491+0100 [ERROR] 2022-04-02T08:31:16.490+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:31:16.495+0100 [ERROR] 2022-04-02T08:31:16.495+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:31:16.497+0100 [ERROR] 2022-04-02T08:31:16.497+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" -2022-04-02T08:31:16.548+0100 [ERROR] 2022-04-02T08:31:16.548+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:31:16.555+0100 [ERROR] 2022-04-02T08:31:16.555+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" -2022-04-02T08:31:16.559+0100 [ERROR] 2022-04-02T08:31:16.559+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" -2022-04-02T08:31:16.559+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:16.569+0100 [ERROR] 2022-04-02T08:31:16.569+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:31:16.569+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:17.772+0100 [ERROR] 2022-04-02T08:31:17.772+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-zw4v2 namespace=cert-manager status=Pending -2022-04-02T08:31:19.044+0100 [ERROR] 2022-04-02T08:31:19.044+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:31:19.044+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:19.053+0100 [ERROR] 2022-04-02T08:31:19.053+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:31:19.055+0100 [ERROR] 2022-04-02T08:31:19.055+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:31:19.059+0100 [ERROR] 2022-04-02T08:31:19.059+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" -2022-04-02T08:31:19.517+0100 [ERROR] 2022-04-02T08:31:19.517+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:31:19.537+0100 [ERROR] 2022-04-02T08:31:19.537+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" -2022-04-02T08:31:19.541+0100 [ERROR] 2022-04-02T08:31:19.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" -2022-04-02T08:31:19.541+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:19.571+0100 [ERROR] 2022-04-02T08:31:19.571+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:31:19.571+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:19.776+0100 [ERROR] 2022-04-02T08:31:19.776+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False -2022-04-02T08:31:21.781+0100 [ERROR] 2022-04-02T08:31:21.781+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False -2022-04-02T08:31:21.894+0100 [ERROR] 2022-04-02T08:31:21.894+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000098] -2022-04-02T08:31:23.786+0100 [ERROR] 2022-04-02T08:31:23.786+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False -2022-04-02T08:31:25.791+0100 [ERROR] 2022-04-02T08:31:25.791+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False -2022-04-02T08:31:27.796+0100 [ERROR] 2022-04-02T08:31:27.796+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-4mdh5 namespace=cert-manager type=Ready value=False -2022-04-02T08:31:29.802+0100 [ERROR] 2022-04-02T08:31:29.802+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:31:36.895+0100 [ERROR] 2022-04-02T08:31:36.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.000289] -2022-04-02T08:31:38.440+0100 [ERROR] 2022-04-02T08:31:38.440+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:31:38.440+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:38.447+0100 [ERROR] 2022-04-02T08:31:38.447+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:31:38.449+0100 [ERROR] 2022-04-02T08:31:38.449+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" -2022-04-02T08:31:38.504+0100 [ERROR] 2022-04-02T08:31:38.504+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:31:40.509+0100 [ERROR] 2022-04-02T08:31:40.509+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-bhkhs namespace=consul status=Pending -2022-04-02T08:31:42.514+0100 [ERROR] 2022-04-02T08:31:42.514+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-bhkhs namespace=consul type=Ready value=False -2022-04-02T08:31:44.519+0100 [ERROR] 2022-04-02T08:31:44.519+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:31:44.519+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:31:46.523+0100 [ERROR] 2022-04-02T08:31:46.523+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:31:46.523+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:31:48.529+0100 [ERROR] 2022-04-02T08:31:48.529+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:31:48.529+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Creating Helm chart: ref=prometheus -2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=zipkin -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts -2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh -2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=monitoring_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=fetch_consul_resources - source= - | #!/bin/sh -e - | - | echo "Port #{{ .Vars.port }}" - | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" - | - | #{{ if eq .Vars.acl_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | #{{end}} - | - | #{{ if eq .Vars.tls_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | #{{end}} - -2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=prometheus -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:31:50.533+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] -2022-04-02T08:31:50.533+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:32633 local_addr=prometheus-operated.monitoring.svc:9090 -2022-04-02T08:31:50.533+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:32633 local_addr=tempo.monitoring.svc:9411 -2022-04-02T08:31:50.533+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=grafana -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:31:50.534+0100 [DEBUG] Template content: ref=prometheus_operator_template - source= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template output: ref=monitoring_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=fetch_consul_resources - destination= - | #!/bin/sh -e - | - | echo "Port 8501" - | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" - | - | - | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | - | - | - | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] -2022-04-02T08:31:50.534+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [INFO] Create Ingress: ref=tempo -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:32633 local_addr=tempo.default.svc:3100 -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.533+0100 [DEBUG] Template content: ref=grafana_secret_template - source= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: #{{ .Vars.monitoring_namespace }} - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:32633 local_addr=grafana.monitoring.svc:80 -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=grafana_secret_template - destination= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: monitoring - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= - -2022-04-02T08:31:50.534+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:31:50.534+0100 [DEBUG] Template output: ref=prometheus_operator_template - destination= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:31:50.534+0100 [ERROR] 2022-04-02T08:31:50.534+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:31:50.551+0100 [ERROR] 2022-04-02T08:31:50.551+0100 [DEBUG] Successfully exposed service: id=5b3be5cd-d3e8-477c-a5e0-7ae51aabcc06 -2022-04-02T08:31:50.551+0100 [ERROR] 2022-04-02T08:31:50.551+0100 [DEBUG] Successfully exposed service: id=81268bfc-ed90-4b13-9694-d8a69a89c8e3 -2022-04-02T08:31:50.556+0100 [ERROR] 2022-04-02T08:31:50.556+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 -2022-04-02T08:31:50.556+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec -2022-04-02T08:31:50.559+0100 [ERROR] 2022-04-02T08:31:50.558+0100 [DEBUG] Successfully exposed service: id=e3a0bcf3-5aaf-40d9-b5eb-c079afdbfbd0 -2022-04-02T08:31:50.561+0100 [ERROR] 2022-04-02T08:31:50.561+0100 [DEBUG] Successfully exposed service: id=15a3045e-533a-40e6-a6b4-2b5303849bb3 -2022-04-02T08:31:50.609+0100 [ERROR] 2022-04-02T08:31:50.609+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec -2022-04-02T08:31:50.612+0100 [ERROR] 2022-04-02T08:31:50.612+0100 [DEBUG] Attaching container to network: ref=5a408b458acc1a3a690a8b2b43107fcfa9feb1ab8be03017917c36bdf04403a2 network=dc1 -2022-04-02T08:31:50.620+0100 [ERROR] 2022-04-02T08:31:50.620+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec -2022-04-02T08:31:50.943+0100 [ERROR] 2022-04-02T08:31:50.943+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:31:50.943+0100 [ERROR] 2022-04-02T08:31:50.943+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack -2022-04-02T08:31:51.112+0100 [ERROR] 2022-04-02T08:31:51.111+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] -2022-04-02T08:31:51.112+0100 [ERROR] 2022-04-02T08:31:51.112+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:31:51.370+0100 [ERROR] 2022-04-02T08:31:51.370+0100 [DEBUG] Port 8501 -Fetching resources from running cluster, acls_enabled: true, tls_enabled true -2022-04-02T08:31:51.755+0100 [ERROR] 2022-04-02T08:31:51.754+0100 [DEBUG] Forcefully remove: container=5a408b458acc1a3a690a8b2b43107fcfa9feb1ab8be03017917c36bdf04403a2 -2022-04-02T08:31:51.781+0100 [ERROR] 2022-04-02T08:31:51.781+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz -2022-04-02T08:31:51.796+0100 [ERROR] 2022-04-02T08:31:51.796+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" -2022-04-02T08:31:51.796+0100 [DEBUG] Validate chart: ref=prometheus -2022-04-02T08:31:51.796+0100 [DEBUG] Run chart: ref=prometheus -2022-04-02T08:31:51.813+0100 [ERROR] 2022-04-02T08:31:51.813+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:51.863+0100 [ERROR] 2022-04-02T08:31:51.863+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:51.895+0100 [ERROR] 2022-04-02T08:31:51.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000272] -2022-04-02T08:31:51.909+0100 [ERROR] 2022-04-02T08:31:51.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:51.922+0100 [ERROR] 2022-04-02T08:31:51.921+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:51.957+0100 [ERROR] 2022-04-02T08:31:51.957+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:52.044+0100 [ERROR] 2022-04-02T08:31:52.044+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:52.055+0100 [ERROR] 2022-04-02T08:31:52.055+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:52.089+0100 [ERROR] 2022-04-02T08:31:52.089+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:52.162+0100 [ERROR] 2022-04-02T08:31:52.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" -2022-04-02T08:31:52.162+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" -2022-04-02T08:31:53.367+0100 [ERROR] 2022-04-02T08:31:53.367+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:53.661+0100 [ERROR] 2022-04-02T08:31:53.661+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:31:53.680+0100 [ERROR] 2022-04-02T08:31:53.680+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:53.964+0100 [ERROR] 2022-04-02T08:31:53.964+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:53.968+0100 [ERROR] 2022-04-02T08:31:53.968+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:31:53.971+0100 [ERROR] 2022-04-02T08:31:53.971+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:54.251+0100 [ERROR] 2022-04-02T08:31:54.251+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:54.256+0100 [ERROR] 2022-04-02T08:31:54.256+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:31:54.259+0100 [ERROR] 2022-04-02T08:31:54.258+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:54.543+0100 [ERROR] 2022-04-02T08:31:54.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:54.549+0100 [ERROR] 2022-04-02T08:31:54.549+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:31:54.551+0100 [ERROR] 2022-04-02T08:31:54.551+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:54.831+0100 [ERROR] 2022-04-02T08:31:54.831+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:54.836+0100 [ERROR] 2022-04-02T08:31:54.836+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:31:54.839+0100 [ERROR] 2022-04-02T08:31:54.839+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:55.122+0100 [ERROR] 2022-04-02T08:31:55.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:55.127+0100 [ERROR] 2022-04-02T08:31:55.127+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:31:55.130+0100 [ERROR] 2022-04-02T08:31:55.130+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" -2022-04-02T08:31:55.420+0100 [ERROR] 2022-04-02T08:31:55.420+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:55.425+0100 [ERROR] 2022-04-02T08:31:55.425+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" -2022-04-02T08:31:55.428+0100 [ERROR] 2022-04-02T08:31:55.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" -2022-04-02T08:31:55.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:55.445+0100 [ERROR] 2022-04-02T08:31:55.445+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:31:55.445+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:57.170+0100 [ERROR] 2022-04-02T08:31:57.170+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:31:57.170+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:57.178+0100 [ERROR] 2022-04-02T08:31:57.177+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:31:57.179+0100 [ERROR] 2022-04-02T08:31:57.179+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:31:57.184+0100 [ERROR] 2022-04-02T08:31:57.184+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:31:57.193+0100 [ERROR] 2022-04-02T08:31:57.193+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:31:57.198+0100 [ERROR] 2022-04-02T08:31:57.198+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:31:57.203+0100 [ERROR] 2022-04-02T08:31:57.203+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:31:57.209+0100 [ERROR] 2022-04-02T08:31:57.209+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:31:57.213+0100 [ERROR] 2022-04-02T08:31:57.213+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" -2022-04-02T08:31:57.402+0100 [ERROR] 2022-04-02T08:31:57.402+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:31:57.404+0100 [ERROR] 2022-04-02T08:31:57.404+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:57.680+0100 [ERROR] 2022-04-02T08:31:57.680+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:57.685+0100 [ERROR] 2022-04-02T08:31:57.685+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:31:57.688+0100 [ERROR] 2022-04-02T08:31:57.688+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:57.969+0100 [ERROR] 2022-04-02T08:31:57.969+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:57.974+0100 [ERROR] 2022-04-02T08:31:57.974+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:31:57.977+0100 [ERROR] 2022-04-02T08:31:57.977+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:58.281+0100 [ERROR] 2022-04-02T08:31:58.281+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:58.288+0100 [ERROR] 2022-04-02T08:31:58.288+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:31:58.290+0100 [ERROR] 2022-04-02T08:31:58.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:58.573+0100 [ERROR] 2022-04-02T08:31:58.573+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:58.578+0100 [ERROR] 2022-04-02T08:31:58.578+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:31:58.581+0100 [ERROR] 2022-04-02T08:31:58.581+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:31:58.867+0100 [ERROR] 2022-04-02T08:31:58.867+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:58.873+0100 [ERROR] 2022-04-02T08:31:58.873+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:31:58.876+0100 [ERROR] 2022-04-02T08:31:58.876+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" -2022-04-02T08:31:59.173+0100 [ERROR] 2022-04-02T08:31:59.173+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:31:59.177+0100 [ERROR] 2022-04-02T08:31:59.177+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" -2022-04-02T08:31:59.180+0100 [ERROR] 2022-04-02T08:31:59.180+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" -2022-04-02T08:31:59.180+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:31:59.199+0100 [ERROR] 2022-04-02T08:31:59.199+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:31:59.199+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:32:02.368+0100 [ERROR] 2022-04-02T08:32:02.368+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:32:02.368+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:32:02.375+0100 [ERROR] 2022-04-02T08:32:02.375+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:32:02.377+0100 [ERROR] 2022-04-02T08:32:02.377+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:32:02.383+0100 [ERROR] 2022-04-02T08:32:02.383+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:32:02.394+0100 [ERROR] 2022-04-02T08:32:02.394+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:32:02.400+0100 [ERROR] 2022-04-02T08:32:02.400+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:32:02.405+0100 [ERROR] 2022-04-02T08:32:02.405+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:32:02.410+0100 [ERROR] 2022-04-02T08:32:02.410+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:32:02.696+0100 [ERROR] 2022-04-02T08:32:02.696+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:32:04.703+0100 [ERROR] 2022-04-02T08:32:04.702+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-s58cf namespace=monitoring type=Ready value=False -2022-04-02T08:32:06.709+0100 [ERROR] 2022-04-02T08:32:06.708+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-s58cf namespace=monitoring type=Ready value=False -2022-04-02T08:32:06.895+0100 [ERROR] 2022-04-02T08:32:06.895+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.001048] -2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [INFO] Creating Helm chart: ref=loki -2022-04-02T08:32:08.714+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] -2022-04-02T08:32:08.715+0100 [ERROR] 2022-04-02T08:32:08.714+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:32:08.715+0100 [ERROR] 2022-04-02T08:32:08.715+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:32:08.937+0100 [ERROR] 2022-04-02T08:32:08.937+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:32:08.937+0100 [ERROR] 2022-04-02T08:32:08.937+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki -2022-04-02T08:32:09.608+0100 [ERROR] 2022-04-02T08:32:09.608+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz -2022-04-02T08:32:09.609+0100 [ERROR] 2022-04-02T08:32:09.609+0100 [DEBUG] Using Values: ref=loki values=map[] -2022-04-02T08:32:09.609+0100 [DEBUG] Validate chart: ref=loki -2022-04-02T08:32:09.609+0100 [DEBUG] Run chart: ref=loki -2022-04-02T08:32:09.827+0100 [ERROR] W0402 08:32:09.827488 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:32:09.841+0100 [ERROR] 2022-04-02T08:32:09.841+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" -2022-04-02T08:32:09.850+0100 [ERROR] 2022-04-02T08:32:09.850+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" -2022-04-02T08:32:09.854+0100 [ERROR] W0402 08:32:09.854588 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:32:09.884+0100 [ERROR] 2022-04-02T08:32:09.884+0100 [INFO] Creating Helm chart: ref=promtail -2022-04-02T08:32:09.884+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:32:09.884+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:32:09.884+0100 [ERROR] 2022-04-02T08:32:09.884+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail -2022-04-02T08:32:10.539+0100 [ERROR] 2022-04-02T08:32:10.539+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz -2022-04-02T08:32:10.540+0100 [ERROR] 2022-04-02T08:32:10.540+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] -2022-04-02T08:32:10.540+0100 [DEBUG] Validate chart: ref=promtail -2022-04-02T08:32:10.540+0100 [DEBUG] Run chart: ref=promtail -2022-04-02T08:32:10.826+0100 [ERROR] 2022-04-02T08:32:10.825+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" -2022-04-02T08:32:10.835+0100 [ERROR] 2022-04-02T08:32:10.835+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" -2022-04-02T08:32:10.859+0100 [ERROR] 2022-04-02T08:32:10.859+0100 [INFO] Creating Helm chart: ref=tempo -2022-04-02T08:32:10.859+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:32:10.859+0100 [ERROR] 2022-04-02T08:32:10.859+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:32:10.860+0100 [ERROR] 2022-04-02T08:32:10.860+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo -2022-04-02T08:32:11.665+0100 [ERROR] 2022-04-02T08:32:11.664+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz -2022-04-02T08:32:11.665+0100 [ERROR] 2022-04-02T08:32:11.665+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" -2022-04-02T08:32:11.665+0100 [DEBUG] Validate chart: ref=tempo -2022-04-02T08:32:11.665+0100 [DEBUG] Run chart: ref=tempo -2022-04-02T08:32:11.940+0100 [ERROR] 2022-04-02T08:32:11.940+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" -2022-04-02T08:32:11.951+0100 [ERROR] 2022-04-02T08:32:11.951+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" -2022-04-02T08:32:11.991+0100 [ERROR] 2022-04-02T08:32:11.991+0100 [INFO] Creating Helm chart: ref=grafana -2022-04-02T08:32:11.991+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:32:11.991+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:32:11.992+0100 [ERROR] 2022-04-02T08:32:11.991+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana -2022-04-02T08:32:12.327+0100 [ERROR] 2022-04-02T08:32:12.327+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz -2022-04-02T08:32:12.329+0100 [ERROR] 2022-04-02T08:32:12.329+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" -2022-04-02T08:32:12.329+0100 [DEBUG] Validate chart: ref=grafana -2022-04-02T08:32:12.329+0100 [DEBUG] Run chart: ref=grafana -2022-04-02T08:32:12.644+0100 [ERROR] W0402 08:32:12.644421 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:32:12.647+0100 [ERROR] W0402 08:32:12.646942 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:32:12.675+0100 [ERROR] 2022-04-02T08:32:12.675+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" -2022-04-02T08:32:12.694+0100 [ERROR] 2022-04-02T08:32:12.693+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" -2022-04-02T08:32:12.698+0100 [ERROR] W0402 08:32:12.698355 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -W0402 08:32:12.698384 9887 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:32:12.770+0100 [ERROR] 2022-04-02T08:32:12.770+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:32:12.770+0100 [DEBUG] Template content: ref=monitor_ingress_gateway - source= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: #{{ .Vars.monitoring_namespace }} - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: #{{ .Vars.consul_namespace }} - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [DEBUG] Template output: ref=monitor_ingress_gateway - destination= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: monitoring - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: consul - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] -2022-04-02T08:32:12.771+0100 [ERROR] 2022-04-02T08:32:12.771+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:32:12.853+0100 [ERROR] 2022-04-02T08:32:12.853+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] -2022-04-02T08:32:12.853+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] -2022-04-02T08:32:12.853+0100 [INFO] Creating Helm chart: ref=consul-release-controller -2022-04-02T08:32:12.853+0100 [ERROR] 2022-04-02T08:32:12.853+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:32:12.854+0100 [ERROR] 2022-04-02T08:32:12.854+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml -2022-04-02T08:32:12.854+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:32:12.854+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:32:12.854+0100 [ERROR] 2022-04-02T08:32:12.854+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml -2022-04-02T08:32:12.855+0100 [ERROR] 2022-04-02T08:32:12.855+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" -2022-04-02T08:32:12.855+0100 [DEBUG] Validate chart: ref=consul-release-controller -2022-04-02T08:32:12.855+0100 [DEBUG] Run chart: ref=consul-release-controller -2022-04-02T08:32:12.978+0100 [ERROR] 2022-04-02T08:32:12.977+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml -2022-04-02T08:32:12.993+0100 [ERROR] 2022-04-02T08:32:12.993+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml -2022-04-02T08:32:13.049+0100 [ERROR] 2022-04-02T08:32:13.049+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml -2022-04-02T08:32:13.064+0100 [ERROR] 2022-04-02T08:32:13.064+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml -2022-04-02T08:32:13.148+0100 [ERROR] 2022-04-02T08:32:13.148+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml -2022-04-02T08:32:13.156+0100 [ERROR] 2022-04-02T08:32:13.156+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml -2022-04-02T08:32:13.236+0100 [ERROR] 2022-04-02T08:32:13.236+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" -2022-04-02T08:32:13.247+0100 [ERROR] 2022-04-02T08:32:13.247+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" -2022-04-02T08:32:13.376+0100 [ERROR] 2022-04-02T08:32:13.375+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" -2022-04-02T08:32:13.404+0100 [ERROR] 2022-04-02T08:32:13.404+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 -2022-04-02T08:32:13.404+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec -2022-04-02T08:32:13.674+0100 [ERROR] 2022-04-02T08:32:13.674+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec -2022-04-02T08:32:13.678+0100 [ERROR] 2022-04-02T08:32:13.678+0100 [DEBUG] Attaching container to network: ref=6a3e025fc3c613189828d689766e3dcce0db016edd7ba4ad7490a81ab03920af network=dc1 -2022-04-02T08:32:13.686+0100 [ERROR] 2022-04-02T08:32:13.686+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec -2022-04-02T08:32:14.813+0100 [ERROR] 2022-04-02T08:32:14.812+0100 [DEBUG] Forcefully remove: container=6a3e025fc3c613189828d689766e3dcce0db016edd7ba4ad7490a81ab03920af -2022-04-02T08:32:15.499+0100 [ERROR] 2022-04-02T08:32:15.499+0100 [DEBUG] Health check urls for browser windows: count=0 -2022-04-02T08:32:15.499+0100 [DEBUG] Browser windows open - -######################################################## - -Title Development setup -Author Nic Jackson -2022-04-02T08:32:15.499+0100 [ERROR] -• Consul: https://localhost:8501 -• Grafana: https://localhost:8080 -• Application: http://localhost:18080 -2022-04-02T08:32:15.499+0100 [ERROR] -2022-04-02T08:32:15.499+0100 [ERROR] This blueprint defines 13 output variables. -2022-04-02T08:32:15.499+0100 [ERROR] -You can set output variables as environment variables for your current terminal session using the following command: -2022-04-02T08:32:15.499+0100 [ERROR] eval $(shipyard env) - -To list output variables use the command: - -shipyard output -2022-04-02T08:32:16.122+0100 [INFO] Starting controller -2022-04-02T08:32:20.658+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:32:20.658+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_fail -2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_fail -2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_fail -2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Deploy: state=state_deploy -2022-04-02T08:32:20.658+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy -2022-04-02T08:32:20.667+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:20.671+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:32:20.671+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:21.672+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:21.675+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:21.675+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:22.676+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:22.679+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:22.679+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:23.679+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:23.682+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:23.682+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:24.683+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:24.685+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:24.685+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:25.658+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-02T08:32:25.659+0100 [DEBUG] runtime-plugin-kubernetes: No candidate deployment, nothing to do -2022-04-02T08:32:25.659+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:32:25.662+0100 [DEBUG] releaser-plugin-consul: Service not healthy, retrying: name=api -2022-04-02T08:32:25.662+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:32:25.665+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceSplitter: name=api error="Put \"https://127.0.0.1:8501/v1/config\": x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"Consul Agent CA\")" -2022-04-02T08:32:25.665+0100 [ERROR] statemachine: Deploy completed with error: error="Put \"https://127.0.0.1:8501/v1/config\": x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"Consul Agent CA\")" -2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_deploy -2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_deploy -2022-04-02T08:32:25.665+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail -2022-04-02T08:32:25.685+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:25.689+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:25.689+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:26.689+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:26.692+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:26.692+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:27.692+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:27.695+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:27.695+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:28.695+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:28.698+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:28.698+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:29.699+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:29.702+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:29.702+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:30.703+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:30.707+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:30.707+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:31.707+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:31.711+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:31.711+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:32.712+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:32.715+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:32.715+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:33.715+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:33.718+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:33.718+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:34.718+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:34.722+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:34.722+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:35.722+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:35.727+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:35.727+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:36.728+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:36.731+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:36.731+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:37.731+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:37.734+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:37.734+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:38.735+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:38.739+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:38.739+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:39.740+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:39.743+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:39.743+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:40.743+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:40.747+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:40.747+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:41.747+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:41.750+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:41.750+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:42.750+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:42.753+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:42.753+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:43.754+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:43.757+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:43.757+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:44.757+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:44.760+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:32:44.760+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:32:45.760+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:45.763+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:32:45.763+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:32:45.774+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:32:45.777+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:32:45.777+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:33:15.836+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:15.839+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start -2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start -2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Configure: state=state_configure -2022-04-02T08:33:15.842+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure -2022-04-02T08:33:15.842+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api -2022-04-02T08:33:15.842+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api -2022-04-02T08:33:16.839+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:16.842+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:17.843+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:17.845+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:18.845+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:18.848+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:18.865+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api -2022-04-02T08:33:19.849+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:19.851+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:19.873+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api -2022-04-02T08:33:20.852+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:20.855+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:20.880+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api -2022-04-02T08:33:21.856+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:21.858+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:21.887+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api -2022-04-02T08:33:22.859+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:22.862+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:23.862+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:23.865+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:24.866+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:24.868+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:25.869+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:25.871+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:26.872+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:26.874+0100 [DEBUG] kubernetes-client: Deployment not found: name=api-deployment-primary namespace=default error=deployment_not_found -2022-04-02T08:33:26.895+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-02T08:33:26.899+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default -2022-04-02T08:33:26.905+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default -2022-04-02T08:33:26.910+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:26.912+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:33:26.912+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:27.874+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:27.878+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:27.878+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:27.913+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:27.916+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:27.916+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:28.878+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:28.881+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:28.881+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:28.917+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:28.921+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:28.921+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:29.882+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:29.886+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:29.886+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:29.921+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:29.925+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:29.925+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:30.886+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:30.889+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:30.889+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:30.926+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:30.929+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:30.929+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:31.890+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:31.892+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:31.892+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:31.929+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:31.932+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:31.932+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:32.893+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:32.896+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:32.896+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:32.933+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:32.937+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:32.937+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:33.896+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:33.899+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:33.899+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:33.937+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:33.940+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:33.940+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:34.899+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:34.902+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:34.902+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:34.940+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:34.943+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:34.943+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:35.903+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:35.907+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:35.907+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:35.944+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:35.946+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:35.946+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:36.908+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:36.911+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:36.911+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:36.947+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:36.949+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:36.949+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:37.911+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:37.914+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:37.914+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:37.950+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:37.953+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:37.953+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:38.915+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:38.918+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:38.918+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:38.954+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:38.957+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:38.957+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:39.919+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:39.922+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:39.922+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:39.958+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:39.960+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:39.960+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:40.923+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:40.925+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:40.925+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:40.961+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:40.964+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:40.964+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:41.926+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:41.929+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:41.929+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:41.965+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:41.968+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=1 desired_replicas=3 -2022-04-02T08:33:41.968+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.929+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.932+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:33:42.932+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.968+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.971+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:33:42.971+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.971+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default -2022-04-02T08:33:42.971+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default -2022-04-02T08:33:42.971+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:33:42.974+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:33:47.984+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default -2022-04-02T08:33:47.993+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:33:47.993+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2156]" -2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Configure completed successfully -2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure -2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure -2022-04-02T08:33:47.996+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle -2022-04-02T08:33:48.978+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:33:48.996+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:33:48.996+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle -2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle -2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle -2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Deploy: state=state_deploy -2022-04-02T08:33:48.996+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy -2022-04-02T08:33:48.999+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:49.003+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:33:49.003+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:50.003+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:50.006+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:50.006+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:51.006+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:51.009+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:51.009+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:52.009+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:52.012+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:52.012+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:53.013+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:53.016+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:53.016+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:53.997+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-02T08:33:54.000+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default -2022-04-02T08:33:54.000+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:33:54.002+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Deploy completed, executing strategy -2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy -2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy -2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:33:54.006+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor -2022-04-02T08:33:54.006+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 -2022-04-02T08:33:54.006+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 -2022-04-02T08:33:54.017+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:54.020+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:54.020+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:55.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:55.024+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:55.024+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:56.025+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:56.028+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:56.028+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:57.028+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:57.031+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:57.031+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:58.032+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:58.035+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:58.035+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:33:59.036+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:33:59.039+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:33:59.039+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:00.039+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:00.042+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:34:00.042+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:01.043+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:01.046+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:34:01.046+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:02.046+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:02.050+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:34:02.050+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:03.050+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:03.053+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:34:03.053+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:04.053+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:04.056+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 -2022-04-02T08:34:04.056+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:34:05.058+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:05.061+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:34:05.061+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:34:05.069+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-02T08:34:05.072+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:34:05.072+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-02T08:34:05.081+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:34:05.084+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:34:05.084+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:34:05.088+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:10.089+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:15.089+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:20.090+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:24.007+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 -2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-02T08:34:24.007+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-02T08:34:24.007+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 -2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-02T08:34:24.011+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-02T08:34:24.011+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 -2022-04-02T08:34:25.091+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:30.092+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:35.093+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:40.094+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:45.095+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:50.096+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:34:54.012+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:34:54.012+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-02T08:34:54.017+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 56.3049965043655 @[1648884894.012]"] value_type=model.Vector warnings=[] -2022-04-02T08:34:54.017+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=56 -2022-04-02T08:34:54.017+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 56" -2022-04-02T08:34:55.097+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:00.099+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:05.100+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:10.101+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:15.102+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:20.102+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:24.017+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:35:24.017+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-02T08:35:24.019+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50 @[1648884924.018]"] value_type=model.Vector warnings=[] -2022-04-02T08:35:24.019+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 -2022-04-02T08:35:24.019+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" -2022-04-02T08:35:25.103+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:30.105+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:35.105+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:40.107+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:45.108+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:50.109+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:35:54.020+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:35:54.020+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-02T08:35:54.023+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 49.86816018822463 @[1648884954.021]"] value_type=model.Vector warnings=[] -2022-04-02T08:35:54.023+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=49 -2022-04-02T08:35:54.023+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 49" -2022-04-02T08:35:55.109+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:00.111+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:05.111+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:10.112+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:15.113+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:20.114+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:24.024+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:36:24.024+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-02T08:36:24.026+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50 @[1648884984.024]"] value_type=model.Vector warnings=[] -2022-04-02T08:36:24.026+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 -2022-04-02T08:36:24.026+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" -2022-04-02T08:36:25.115+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:30.116+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:35.117+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:40.119+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:45.120+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:50.120+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:54.026+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-02T08:36:54.027+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-02T08:36:54.029+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 50.4132678214597 @[1648885014.027]"] value_type=model.Vector warnings=[] -2022-04-02T08:36:54.029+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=50 -2022-04-02T08:36:54.029+0100 [DEBUG] strategy-plugin-canary: Check failed: type=canary error="check failed for query request-success using preset envoy-request-success, got value 50" -2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Monitor checks completed, candidate unhealthy -2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Handle event: event=event_unhealthy state=state_monitor -2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Log state: event=event_unhealthy state=state_monitor -2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Rollback: state=state_rollback -2022-04-02T08:36:54.029+0100 [DEBUG] statemachine: Log state: event=event_unhealthy release=api state=state_rollback -2022-04-02T08:36:54.029+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-02T08:36:55.121+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:36:59.037+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default -2022-04-02T08:36:59.051+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:36:59.051+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2620]" -2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_rollback -2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_rollback -2022-04-02T08:36:59.055+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle -2022-04-02T08:37:00.122+0100 [INFO] release_handler: Release GET handler called -2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Handle event: event=event_destroy state=state_idle -2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Log state: event=event_destroy state=state_idle -2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Destroy: state=state_destroy -2022-04-02T08:37:00.158+0100 [DEBUG] statemachine: Log state: event=event_destroy release=api state=state_destroy -2022-04-02T08:37:00.158+0100 [INFO] runtime-plugin-kubernetes: Restore original deployment: name=api-deployment namespace=default -2022-04-02T08:37:00.161+0100 [DEBUG] runtime-plugin-kubernetes: Delete existing candidate deployment: name=api-deployment namespace=default -2022-04-02T08:37:00.168+0100 [DEBUG] runtime-plugin-kubernetes: Clone primary to create original deployment: name=api-deployment namespace=default -2022-04-02T08:37:00.179+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:37:00.186+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:00.189+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-02T08:37:00.189+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:01.190+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:01.193+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:01.193+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:02.193+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:02.196+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:02.196+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:03.197+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:03.200+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:03.200+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:04.201+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:04.204+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:04.204+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:05.205+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:05.208+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:05.208+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:06.209+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:06.212+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:06.212+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:07.212+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:07.216+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:07.216+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:08.216+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:08.219+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:08.219+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:09.220+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:09.223+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:09.223+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:10.224+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:10.227+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:10.227+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:11.227+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:11.230+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:11.230+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:12.231+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:12.235+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:12.235+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:13.236+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:13.239+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:13.239+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:14.240+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:14.244+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-02T08:37:14.244+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:15.245+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:15.250+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=1 desired_replicas=3 -2022-04-02T08:37:15.250+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:16.250+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:16.253+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 -2022-04-02T08:37:16.253+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:17.253+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:17.257+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 -2022-04-02T08:37:17.257+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:18.257+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:18.260+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 -2022-04-02T08:37:18.260+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:19.260+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:19.263+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=2 desired_replicas=3 -2022-04-02T08:37:19.263+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-02T08:37:20.264+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:20.267+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:37:20.267+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:37:20.267+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-02T08:37:20.270+0100 [DEBUG] releaser-plugin-consul: Service not healthy, retrying: name=api -2022-04-02T08:37:20.270+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=0 traffic_canary=100 -2022-04-02T08:37:25.274+0100 [INFO] runtime-plugin-kubernetes: Remove primary deployment: name=api-deployment namespace=default -2022-04-02T08:37:25.279+0100 [INFO] releaser-plugin-consul: Remove Consul config: name=api -2022-04-02T08:37:25.279+0100 [DEBUG] releaser-plugin-consul: Delete splitter: name=api -2022-04-02T08:37:26.283+0100 [DEBUG] releaser-plugin-consul: Cleanup router: name=api -2022-04-02T08:37:27.290+0100 [DEBUG] releaser-plugin-consul: Cleanup upstream router: name=api -2022-04-02T08:37:28.301+0100 [DEBUG] releaser-plugin-consul: Cleanup resolver: name=api -2022-04-02T08:37:29.313+0100 [DEBUG] releaser-plugin-consul: Cleanup service intentions: name=api -2022-04-02T08:37:30.324+0100 [DEBUG] releaser-plugin-consul: Cleanup defaults: name=api -2022-04-02T08:37:30.326+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_destroy -2022-04-02T08:37:30.326+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_destroy -2022-04-02T08:37:30.327+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle -2022-04-02T08:37:32.206+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-02T08:37:32.209+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-02T08:37:32.209+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-02T08:37:32.225+0100 [INFO] Shutting down server gracefully -2022-04-02T08:37:32.226+0100 [INFO] Shutting down listener -2022-04-02T08:37:32.226+0100 [INFO] Shutting down metrics -2022-04-02T08:37:32.227+0100 [INFO] Shutting down kubernetes controller -2022-04-02T08:37:32.227+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller -2022-04-02T08:38:16.782+0100 [ERROR] 2022-04-02T08:38:16.782+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs -2022-04-02T08:38:18.828+0100 [ERROR] 2022-04-02T08:38:18.828+0100 [DEBUG] Starting Ingress -2022-04-02T08:38:18.828+0100 [ERROR] Running configuration from: ./shipyard/kubernetes - -2022-04-02T08:38:18.828+0100 [DEBUG] Statefile does not exist -2022-04-02T08:38:21.828+0100 [ERROR] 2022-04-02T08:38:21.828+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes -2022-04-02T08:38:21.828+0100 [DEBUG] Statefile does not exist -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=UPSTREAMS -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR -2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR -2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_values - source= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: #{{ .Vars.datacenter }} - | - | acls: - | manageSystemACLs: #{{ .Vars.acl_enabled }} - | tls: - | enabled: #{{ .Vars.tls_enabled }} - | enableAutoEncrypt: #{{ .Vars.tls_enabled }} - | httpsOnly: false - | - | federation: - | enabled: #{{ .Vars.federation_enabled }} - | createFederationSecret: #{{ .Vars.create_federation_secret }} - | - | image: #{{ .Vars.consul_image }} - | - | imageK8S: #{{ .Vars.consul_k8s_image }} - | - | imageEnvoy: #{{ .Vars.consul_envoy_image }} - | - | metrics: - | enabled: #{{ .Vars.metrics_enabled }} - | enableAgentMetrics: #{{ .Vars.metrics_enabled }} - | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} - | - | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} - | - | transparentProxy: - | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: #{{ .Vars.ingress_gateway_enabled }} - | defaults: - | replicas: 1 - | service: - | ports: - | #{{ range .Vars.ingress_gateway_ports }} - | - port: #{{ . }} - | nodePort: null - | #{{ end }} - | - | - | meshGateway: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | replicas: 1 - | - | wanAddress: - | source: Static - | static: #{{ .Vars.mesh_gateway_address }} - | port: 30443 - | - | service: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | type: NodePort - | nodePort: 30443 -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TLS_KEY -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD -2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh -2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=certs_script - source= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=certs_script - destination= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key - -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TLS_CERT -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=consul_proxy_defaults - source= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } - -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_CAKEY -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml -2022-04-02T08:38:26.503+0100 [DEBUG] Template content: ref=controller_values - source= - | controller: - | enabled: "#{{ .Vars.controller_enabled }}" - | container_config: - | image: - | repository: "#{{ .Vars.controller_repo }}" - | tag: "#{{ .Vars.controller_version }}" - | autoencrypt: - | enabled: #{{ .Vars.tls_enabled }} - | acls: - | enabled: #{{ .Vars.acls_enabled }} - | #{{- if eq .Vars.controller_enabled false }} - | webhook: - | service: controller-webhook - | namespace: shipyard - | #{{ end }} -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_proxy_defaults - destination= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.monitoring.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } - -2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR -2022-04-02T08:38:26.503+0100 [INFO] Creating Network: ref=dc1 -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=KUBECONFIG -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=GRAFANA_USER -2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [INFO] Creating Output: ref=CONSUL_CACERT -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=controller_values - destination= - | controller: - | enabled: "false" - | container_config: - | image: - | repository: "nicholasjackson/consul-release-controller" - | tag: "" - | autoencrypt: - | enabled: true - | acls: - | enabled: true - | webhook: - | service: controller-webhook - | namespace: shipyard - | -2022-04-02T08:38:26.503+0100 [ERROR] 2022-04-02T08:38:26.503+0100 [DEBUG] Template output: ref=consul_values - destination= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: dc1 - | - | acls: - | manageSystemACLs: true - | tls: - | enabled: true - | enableAutoEncrypt: true - | httpsOnly: false - | - | federation: - | enabled: false - | createFederationSecret: false - | - | image: hashicorp/consul:1.11.3 - | - | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 - | - | imageEnvoy: envoyproxy/envoy:v1.20.1 - | - | metrics: - | enabled: true - | enableAgentMetrics: true - | enableGatewayMetrics: true - | - | logLevel: "info" - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: null - | - | transparentProxy: - | defaultEnabled: false - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: true - | defaults: - | replicas: 1 - | service: - | ports: - | - | - port: 18080 - | nodePort: null - | - | - port: 18443 - | nodePort: null - | - | - | - | meshGateway: - | enabled: false - | replicas: 1 - | - | wanAddress: - | source: Static - | static: dc1.k8s-cluster.shipyard.run - | port: 30443 - | - | service: - | enabled: false - | type: NodePort - | nodePort: 30443 -2022-04-02T08:38:26.504+0100 [ERROR] 2022-04-02T08:38:26.504+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 -2022-04-02T08:38:26.532+0100 [ERROR] 2022-04-02T08:38:26.532+0100 [INFO] Creating ImageCache: ref=docker-cache -2022-04-02T08:38:26.534+0100 [ERROR] 2022-04-02T08:38:26.534+0100 [DEBUG] Connecting cache to network: name=network.dc1 -2022-04-02T08:38:26.535+0100 [ERROR] 2022-04-02T08:38:26.535+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:38:26.554+0100 [ERROR] 2022-04-02T08:38:26.554+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:38:26.554+0100 [DEBUG] Creating Docker Container: ref=54515060-import -2022-04-02T08:38:29.265+0100 [ERROR] 2022-04-02T08:38:29.265+0100 [DEBUG] Forcefully remove: container=a8e614bd79d9e7cec397b299236664a208ab2b4c7d342773b196e8c50be2269a -2022-04-02T08:38:29.683+0100 [ERROR] 2022-04-02T08:38:29.683+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 -2022-04-02T08:38:29.683+0100 [DEBUG] Creating Docker Container: ref=docker-cache -2022-04-02T08:38:29.739+0100 [ERROR] 2022-04-02T08:38:29.739+0100 [DEBUG] Remove container from default networks: ref=docker-cache -2022-04-02T08:38:29.743+0100 [ERROR] 2022-04-02T08:38:29.743+0100 [DEBUG] Attaching container to network: ref=f6996541b1a7da01c14e377112a71fcbee017f1b9e8d5f1ff779c90497690485 network=dc1 -2022-04-02T08:38:29.753+0100 [ERROR] 2022-04-02T08:38:29.753+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache -2022-04-02T08:38:30.257+0100 [ERROR] 2022-04-02T08:38:30.256+0100 [INFO] dc1: Creating Cluster: ref=dc1 -2022-04-02T08:38:30.279+0100 [ERROR] 2022-04-02T08:38:30.278+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 -2022-04-02T08:38:30.280+0100 [ERROR] 2022-04-02T08:38:30.280+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-02T08:38:30.280+0100 [ERROR] 2022-04-02T08:38:30.280+0100 [DEBUG] Creating Docker Container: ref=server.dc1 -2022-04-02T08:38:30.334+0100 [ERROR] 2022-04-02T08:38:30.334+0100 [DEBUG] Remove container from default networks: ref=server.dc1 -2022-04-02T08:38:30.337+0100 [ERROR] 2022-04-02T08:38:30.337+0100 [DEBUG] Attaching container to network: ref=37b6bbefd7b2edf86e8d376a3e650e8a42b7093c1aac72919acdc693714a10cf network=dc1 -2022-04-02T08:38:30.342+0100 [ERROR] 2022-04-02T08:38:30.342+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 -2022-04-02T08:38:32.995+0100 [ERROR] 2022-04-02T08:38:32.995+0100 [DEBUG] Copying file from: id=37b6bbefd7b2edf86e8d376a3e650e8a42b7093c1aac72919acdc693714a10cf src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:38:33.034+0100 [ERROR] 2022-04-02T08:38:33.034+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:35.044+0100 [ERROR] 2022-04-02T08:38:35.044+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:36.829+0100 [ERROR] 2022-04-02T08:38:36.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000826] -2022-04-02T08:38:37.047+0100 [ERROR] 2022-04-02T08:38:37.047+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:39.050+0100 [ERROR] 2022-04-02T08:38:39.050+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:41.054+0100 [ERROR] 2022-04-02T08:38:41.054+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:43.058+0100 [ERROR] 2022-04-02T08:38:43.058+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:45.062+0100 [ERROR] 2022-04-02T08:38:45.062+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:47.065+0100 [ERROR] 2022-04-02T08:38:47.065+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:49.069+0100 [ERROR] 2022-04-02T08:38:49.069+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-gwrmw namespace=kube-system status=Pending -2022-04-02T08:38:51.073+0100 [ERROR] 2022-04-02T08:38:51.073+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-02T08:38:51.073+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:38:51.829+0100 [ERROR] 2022-04-02T08:38:51.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000979] -2022-04-02T08:38:53.077+0100 [ERROR] 2022-04-02T08:38:53.077+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-02T08:38:53.077+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run -2022-04-02T08:38:53.094+0100 [ERROR] 2022-04-02T08:38:53.094+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-02T08:38:53.094+0100 [DEBUG] Creating Docker Container: ref=94770021-import -2022-04-02T08:38:55.706+0100 [ERROR] 2022-04-02T08:38:55.706+0100 [DEBUG] Forcefully remove: container=f6d6e6617de51861365ed1334669722bcbfd67a57c6871225938d289d69907e9 -2022-04-02T08:38:56.094+0100 [ERROR] 2022-04-02T08:38:56.094+0100 [DEBUG] dc1: Deploying connector -2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/391914446/namespace.yaml -2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing secret config: file=/tmp/391914446/secret.yaml -2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/391914446/rbac.yaml -2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/391914446/deployment.yaml -2022-04-02T08:38:57.618+0100 [ERROR] 2022-04-02T08:38:57.618+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/namespace.yaml -2022-04-02T08:38:58.169+0100 [ERROR] 2022-04-02T08:38:58.169+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/secret.yaml -2022-04-02T08:38:58.176+0100 [ERROR] 2022-04-02T08:38:58.176+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/rbac.yaml -2022-04-02T08:38:58.183+0100 [ERROR] 2022-04-02T08:38:58.183+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/391914446/deployment.yaml -2022-04-02T08:38:58.198+0100 [ERROR] 2022-04-02T08:38:58.198+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] -2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=upstreams-proxy -2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=web -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:30577 local_addr=consul-release-controller.default.svc:8080 -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-rpc -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=controller-webhook -2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-lan-serf -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] -2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:30577 local_addr=localhost:19443 -2022-04-02T08:39:00.202+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:30577 local_addr=web.default.svc:9090 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8300 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8301 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 -2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:30577 local_addr=consul-ingress-gateway.consul.svc:18080 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:30577 local_addr=consul-ingress-gateway.consul.svc:18443 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.202+0100 [INFO] Create Ingress: ref=consul -2022-04-02T08:39:00.203+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:30577 local_addr=consul-server.consul.svc:8501 -2022-04-02T08:39:00.203+0100 [ERROR] 2022-04-02T08:39:00.203+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-02T08:39:00.222+0100 [ERROR] 2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=5165c57e-37ed-4a04-9294-e8bd4997fb68 -2022-04-02T08:39:00.223+0100 [ERROR] 2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=c383235b-8767-4d83-81d9-d976fe1a3886 -2022-04-02T08:39:00.222+0100 [DEBUG] Successfully exposed service: id=04a2c7c6-e60f-46d8-9003-df82f7622726 -2022-04-02T08:39:00.225+0100 [ERROR] 2022-04-02T08:39:00.225+0100 [DEBUG] Successfully exposed service: id=de30d4c2-08e5-4064-acea-bdfc76c9d697 -2022-04-02T08:39:00.225+0100 [DEBUG] Successfully exposed service: id=832a43de-db62-4200-a441-f0e5a712b49b -2022-04-02T08:39:00.226+0100 [ERROR] 2022-04-02T08:39:00.226+0100 [DEBUG] Successfully exposed service: id=4dc3ab26-f73b-4022-9bee-9413290abbb9 -2022-04-02T08:39:00.226+0100 [DEBUG] Successfully exposed service: id=7f15ab98-a1de-403e-b519-39dd623fbadb -2022-04-02T08:39:00.227+0100 [ERROR] 2022-04-02T08:39:00.227+0100 [DEBUG] Successfully exposed service: id=341f839f-1806-409f-8463-36365d7490ec -2022-04-02T08:39:00.262+0100 [ERROR] 2022-04-02T08:39:00.262+0100 [INFO] Creating Helm chart: ref=consul -2022-04-02T08:39:00.262+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com -2022-04-02T08:39:00.392+0100 [ERROR] 2022-04-02T08:39:00.392+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:00.393+0100 [ERROR] 2022-04-02T08:39:00.393+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul -2022-04-02T08:39:00.489+0100 [ERROR] 2022-04-02T08:39:00.489+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz -2022-04-02T08:39:00.494+0100 [ERROR] 2022-04-02T08:39:00.494+0100 [DEBUG] Using Values: ref=consul - values= - | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | replicas:1 storage:128Mi] ui:map[enabled:true]] - -2022-04-02T08:39:00.494+0100 [DEBUG] Validate chart: ref=consul -2022-04-02T08:39:00.494+0100 [DEBUG] Run chart: ref=consul -2022-04-02T08:39:00.595+0100 [ERROR] 2022-04-02T08:39:00.595+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:39:01.158+0100 [ERROR] 2022-04-02T08:39:01.158+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" -2022-04-02T08:39:01.160+0100 [ERROR] 2022-04-02T08:39:01.160+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" -2022-04-02T08:39:01.212+0100 [ERROR] 2022-04-02T08:39:01.212+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:39:01.216+0100 [ERROR] 2022-04-02T08:39:01.216+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" -2022-04-02T08:39:01.217+0100 [ERROR] 2022-04-02T08:39:01.217+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:39:01.267+0100 [ERROR] 2022-04-02T08:39:01.267+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:39:01.271+0100 [ERROR] 2022-04-02T08:39:01.271+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" -2022-04-02T08:39:01.274+0100 [ERROR] 2022-04-02T08:39:01.274+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-02T08:39:01.324+0100 [ERROR] 2022-04-02T08:39:01.324+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:39:01.329+0100 [ERROR] 2022-04-02T08:39:01.329+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:39:01.331+0100 [ERROR] 2022-04-02T08:39:01.331+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" -2022-04-02T08:39:01.383+0100 [ERROR] 2022-04-02T08:39:01.383+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:39:01.390+0100 [ERROR] 2022-04-02T08:39:01.389+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" -2022-04-02T08:39:01.395+0100 [ERROR] 2022-04-02T08:39:01.394+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" -2022-04-02T08:39:01.394+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:01.408+0100 [ERROR] 2022-04-02T08:39:01.407+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:39:01.408+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:02.600+0100 [ERROR] 2022-04-02T08:39:02.600+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-bwdbb namespace=cert-manager status=Pending -2022-04-02T08:39:03.700+0100 [ERROR] 2022-04-02T08:39:03.700+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:39:03.700+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:03.709+0100 [ERROR] 2022-04-02T08:39:03.709+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-02T08:39:03.711+0100 [ERROR] 2022-04-02T08:39:03.711+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-02T08:39:03.715+0100 [ERROR] 2022-04-02T08:39:03.715+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" -2022-04-02T08:39:04.132+0100 [ERROR] 2022-04-02T08:39:04.131+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-02T08:39:04.135+0100 [ERROR] 2022-04-02T08:39:04.135+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" -2022-04-02T08:39:04.138+0100 [ERROR] 2022-04-02T08:39:04.138+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" -2022-04-02T08:39:04.138+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:04.153+0100 [ERROR] 2022-04-02T08:39:04.153+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:39:04.153+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:04.605+0100 [ERROR] 2022-04-02T08:39:04.605+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False -2022-04-02T08:39:06.610+0100 [ERROR] 2022-04-02T08:39:06.610+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False -2022-04-02T08:39:06.829+0100 [ERROR] 2022-04-02T08:39:06.828+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.000112] -2022-04-02T08:39:08.616+0100 [ERROR] 2022-04-02T08:39:08.616+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False -2022-04-02T08:39:10.621+0100 [ERROR] 2022-04-02T08:39:10.621+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False -2022-04-02T08:39:12.626+0100 [ERROR] 2022-04-02T08:39:12.626+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-tv5tw namespace=cert-manager type=Ready value=False -2022-04-02T08:39:14.631+0100 [ERROR] 2022-04-02T08:39:14.631+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-02T08:39:21.829+0100 [ERROR] 2022-04-02T08:39:21.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001048] -2022-04-02T08:39:22.792+0100 [ERROR] 2022-04-02T08:39:22.792+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:39:22.792+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:22.802+0100 [ERROR] 2022-04-02T08:39:22.802+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-02T08:39:22.804+0100 [ERROR] 2022-04-02T08:39:22.804+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" -2022-04-02T08:39:22.871+0100 [ERROR] 2022-04-02T08:39:22.871+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:39:24.876+0100 [ERROR] 2022-04-02T08:39:24.876+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-km4s4 namespace=consul status=Pending -2022-04-02T08:39:26.881+0100 [ERROR] 2022-04-02T08:39:26.881+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-02T08:39:26.881+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:39:28.886+0100 [ERROR] 2022-04-02T08:39:28.886+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-02T08:39:28.886+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:39:30.891+0100 [ERROR] 2022-04-02T08:39:30.891+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-02T08:39:30.891+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=grafana -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh -2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=fetch_consul_resources - source= - | #!/bin/sh -e - | - | echo "Port #{{ .Vars.port }}" - | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" - | - | #{{ if eq .Vars.acl_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | #{{end}} - | - | #{{ if eq .Vars.tls_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | #{{end}} -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:30577 local_addr=grafana.monitoring.svc:80 -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=grafana_secret_template - source= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: #{{ .Vars.monitoring_namespace }} - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= + | histogram_quantile( + | 0.99, + | sum( + | rate( + | envoy_cluster_upstream_rq_time_bucket{ + | namespace="default", + | envoy_cluster_name="local_app", + | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" + | }[30s] + | ) + | ) by (le) + | ) -2022-04-02T08:39:32.897+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=tempo -2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=zipkin -2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:39:32.897+0100 [DEBUG] Template content: ref=prometheus_operator_template - source= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=grafana_secret_template - destination= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: monitoring - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:30577 local_addr=tempo.default.svc:3100 -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:30577 local_addr=tempo.monitoring.svc:9411 -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=fetch_consul_resources - destination= - | #!/bin/sh -e - | - | echo "Port 8501" - | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" - | - | - | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | - | - | - | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Template output: ref=prometheus_operator_template - destination= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" -2022-04-02T08:39:32.897+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Create Ingress: ref=prometheus -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:30577 local_addr=prometheus-operated.monitoring.svc:9090 -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Creating Helm chart: ref=prometheus -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.897+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:39:32.898+0100 [DEBUG] Template content: ref=monitoring_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts -2022-04-02T08:39:32.898+0100 [DEBUG] Template output: ref=monitoring_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-02T08:39:32.898+0100 [ERROR] 2022-04-02T08:39:32.898+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-02T08:39:32.921+0100 [ERROR] 2022-04-02T08:39:32.921+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 -2022-04-02T08:39:32.921+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec -2022-04-02T08:39:32.922+0100 [ERROR] 2022-04-02T08:39:32.921+0100 [DEBUG] Successfully exposed service: id=a66636be-a025-4d41-906a-b68fc9386da3 -2022-04-02T08:39:32.922+0100 [ERROR] 2022-04-02T08:39:32.922+0100 [DEBUG] Successfully exposed service: id=4712ed66-bd4d-4aee-a4fe-a7a5a5032cda -2022-04-02T08:39:32.924+0100 [ERROR] 2022-04-02T08:39:32.924+0100 [DEBUG] Successfully exposed service: id=265a4e71-6c4f-49e5-8b58-340fbe41daaa -2022-04-02T08:39:32.924+0100 [ERROR] 2022-04-02T08:39:32.924+0100 [DEBUG] Successfully exposed service: id=c0bf3fb5-ca65-42ad-adf7-40e32b574b0a -2022-04-02T08:39:32.978+0100 [ERROR] 2022-04-02T08:39:32.978+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec -2022-04-02T08:39:32.982+0100 [ERROR] 2022-04-02T08:39:32.982+0100 [DEBUG] Attaching container to network: ref=f01b322cf48d4b4862d9adfbb3e33a0363798a93e6a88cc82b753c7612f1ddc7 network=dc1 -2022-04-02T08:39:32.989+0100 [ERROR] 2022-04-02T08:39:32.989+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec -2022-04-02T08:39:33.292+0100 [ERROR] 2022-04-02T08:39:33.292+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:33.292+0100 [ERROR] 2022-04-02T08:39:33.292+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack -2022-04-02T08:39:33.465+0100 [ERROR] 2022-04-02T08:39:33.465+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] -2022-04-02T08:39:33.465+0100 [ERROR] 2022-04-02T08:39:33.465+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-02T08:39:33.768+0100 [ERROR] 2022-04-02T08:39:33.768+0100 [DEBUG] Port 8501 -Fetching resources from running cluster, acls_enabled: true, tls_enabled true -2022-04-02T08:39:34.070+0100 [ERROR] 2022-04-02T08:39:34.070+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz -2022-04-02T08:39:34.083+0100 [ERROR] 2022-04-02T08:39:34.083+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" -2022-04-02T08:39:34.083+0100 [DEBUG] Validate chart: ref=prometheus -2022-04-02T08:39:34.083+0100 [DEBUG] Run chart: ref=prometheus -2022-04-02T08:39:34.098+0100 [ERROR] 2022-04-02T08:39:34.098+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.148+0100 [ERROR] 2022-04-02T08:39:34.148+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.204+0100 [ERROR] 2022-04-02T08:39:34.203+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.222+0100 [ERROR] 2022-04-02T08:39:34.222+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.223+0100 [ERROR] 2022-04-02T08:39:34.223+0100 [DEBUG] Forcefully remove: container=f01b322cf48d4b4862d9adfbb3e33a0363798a93e6a88cc82b753c7612f1ddc7 -2022-04-02T08:39:34.257+0100 [ERROR] 2022-04-02T08:39:34.257+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.318+0100 [ERROR] 2022-04-02T08:39:34.318+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.329+0100 [ERROR] 2022-04-02T08:39:34.329+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.367+0100 [ERROR] 2022-04-02T08:39:34.367+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:34.411+0100 [ERROR] 2022-04-02T08:39:34.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" -2022-04-02T08:39:34.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" -2022-04-02T08:39:36.829+0100 [ERROR] 2022-04-02T08:39:36.829+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000159] -2022-04-02T08:39:37.830+0100 [ERROR] 2022-04-02T08:39:37.829+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:38.119+0100 [ERROR] 2022-04-02T08:39:38.119+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:39:38.122+0100 [ERROR] 2022-04-02T08:39:38.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:38.401+0100 [ERROR] 2022-04-02T08:39:38.401+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:38.406+0100 [ERROR] 2022-04-02T08:39:38.406+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:39:38.408+0100 [ERROR] 2022-04-02T08:39:38.408+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:38.692+0100 [ERROR] 2022-04-02T08:39:38.692+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:38.698+0100 [ERROR] 2022-04-02T08:39:38.697+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:39:38.700+0100 [ERROR] 2022-04-02T08:39:38.700+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:39.002+0100 [ERROR] 2022-04-02T08:39:39.002+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:39.011+0100 [ERROR] 2022-04-02T08:39:39.011+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:39:39.014+0100 [ERROR] 2022-04-02T08:39:39.014+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:39.306+0100 [ERROR] 2022-04-02T08:39:39.306+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:39.312+0100 [ERROR] 2022-04-02T08:39:39.312+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:39:39.315+0100 [ERROR] 2022-04-02T08:39:39.315+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:39.597+0100 [ERROR] 2022-04-02T08:39:39.597+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:39.603+0100 [ERROR] 2022-04-02T08:39:39.603+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:39:39.605+0100 [ERROR] 2022-04-02T08:39:39.605+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" -2022-04-02T08:39:39.885+0100 [ERROR] 2022-04-02T08:39:39.885+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:39.891+0100 [ERROR] 2022-04-02T08:39:39.890+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" -2022-04-02T08:39:39.893+0100 [ERROR] 2022-04-02T08:39:39.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" -2022-04-02T08:39:39.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:39.910+0100 [ERROR] 2022-04-02T08:39:39.910+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:39:39.910+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:41.706+0100 [ERROR] 2022-04-02T08:39:41.706+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:39:41.706+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:41.714+0100 [ERROR] 2022-04-02T08:39:41.714+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-02T08:39:41.716+0100 [ERROR] 2022-04-02T08:39:41.716+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:39:41.721+0100 [ERROR] 2022-04-02T08:39:41.721+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:39:41.728+0100 [ERROR] 2022-04-02T08:39:41.728+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:39:41.733+0100 [ERROR] 2022-04-02T08:39:41.733+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:39:41.738+0100 [ERROR] 2022-04-02T08:39:41.738+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:39:41.744+0100 [ERROR] 2022-04-02T08:39:41.744+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-02T08:39:41.747+0100 [ERROR] 2022-04-02T08:39:41.747+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" -2022-04-02T08:39:41.938+0100 [ERROR] 2022-04-02T08:39:41.938+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:39:41.940+0100 [ERROR] 2022-04-02T08:39:41.940+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:42.215+0100 [ERROR] 2022-04-02T08:39:42.215+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:42.219+0100 [ERROR] 2022-04-02T08:39:42.219+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:39:42.221+0100 [ERROR] 2022-04-02T08:39:42.221+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:42.530+0100 [ERROR] 2022-04-02T08:39:42.530+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:42.535+0100 [ERROR] 2022-04-02T08:39:42.534+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:39:42.537+0100 [ERROR] 2022-04-02T08:39:42.537+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:42.818+0100 [ERROR] 2022-04-02T08:39:42.818+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:42.824+0100 [ERROR] 2022-04-02T08:39:42.823+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:39:42.826+0100 [ERROR] 2022-04-02T08:39:42.826+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:43.114+0100 [ERROR] 2022-04-02T08:39:43.114+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:43.120+0100 [ERROR] 2022-04-02T08:39:43.120+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:39:43.122+0100 [ERROR] 2022-04-02T08:39:43.122+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-02T08:39:43.422+0100 [ERROR] 2022-04-02T08:39:43.422+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:43.427+0100 [ERROR] 2022-04-02T08:39:43.427+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:39:43.430+0100 [ERROR] 2022-04-02T08:39:43.430+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" -2022-04-02T08:39:43.729+0100 [ERROR] 2022-04-02T08:39:43.728+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-02T08:39:43.749+0100 [ERROR] 2022-04-02T08:39:43.749+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" -2022-04-02T08:39:43.751+0100 [ERROR] 2022-04-02T08:39:43.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" -2022-04-02T08:39:43.751+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:43.771+0100 [ERROR] 2022-04-02T08:39:43.771+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:39:43.771+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:46.726+0100 [ERROR] 2022-04-02T08:39:46.726+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:39:46.726+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-02T08:39:46.734+0100 [ERROR] 2022-04-02T08:39:46.734+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-02T08:39:46.736+0100 [ERROR] 2022-04-02T08:39:46.736+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-02T08:39:46.742+0100 [ERROR] 2022-04-02T08:39:46.742+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-02T08:39:46.752+0100 [ERROR] 2022-04-02T08:39:46.752+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-02T08:39:46.758+0100 [ERROR] 2022-04-02T08:39:46.758+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-02T08:39:46.764+0100 [ERROR] 2022-04-02T08:39:46.764+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-02T08:39:46.769+0100 [ERROR] 2022-04-02T08:39:46.769+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-02T08:39:47.058+0100 [ERROR] 2022-04-02T08:39:47.058+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:39:49.063+0100 [ERROR] 2022-04-02T08:39:49.063+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-w6vcc namespace=monitoring type=Ready value=False -2022-04-02T08:39:51.069+0100 [ERROR] 2022-04-02T08:39:51.069+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-w6vcc namespace=monitoring type=Ready value=False -2022-04-02T08:39:51.829+0100 [ERROR] 2022-04-02T08:39:51.828+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000092] -2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] -2022-04-02T08:39:53.074+0100 [INFO] Creating Helm chart: ref=loki -2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:39:53.074+0100 [ERROR] 2022-04-02T08:39:53.074+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-02T08:39:53.384+0100 [ERROR] 2022-04-02T08:39:53.383+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:53.384+0100 [ERROR] 2022-04-02T08:39:53.384+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki -2022-04-02T08:39:53.811+0100 [ERROR] 2022-04-02T08:39:53.811+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz -2022-04-02T08:39:53.812+0100 [ERROR] 2022-04-02T08:39:53.812+0100 [DEBUG] Using Values: ref=loki values=map[] -2022-04-02T08:39:53.812+0100 [DEBUG] Validate chart: ref=loki -2022-04-02T08:39:53.812+0100 [DEBUG] Run chart: ref=loki -2022-04-02T08:39:54.046+0100 [ERROR] W0402 08:39:54.046433 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:54.060+0100 [ERROR] 2022-04-02T08:39:54.060+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" -2022-04-02T08:39:54.068+0100 [ERROR] 2022-04-02T08:39:54.068+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" -2022-04-02T08:39:54.072+0100 [ERROR] W0402 08:39:54.072601 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:54.103+0100 [ERROR] 2022-04-02T08:39:54.103+0100 [INFO] Creating Helm chart: ref=promtail -2022-04-02T08:39:54.103+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:39:54.103+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:54.103+0100 [ERROR] 2022-04-02T08:39:54.103+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail -2022-04-02T08:39:54.778+0100 [ERROR] 2022-04-02T08:39:54.778+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz -2022-04-02T08:39:54.780+0100 [ERROR] 2022-04-02T08:39:54.779+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] -2022-04-02T08:39:54.780+0100 [DEBUG] Validate chart: ref=promtail -2022-04-02T08:39:54.780+0100 [DEBUG] Run chart: ref=promtail -2022-04-02T08:39:55.068+0100 [ERROR] 2022-04-02T08:39:55.068+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" -2022-04-02T08:39:55.077+0100 [ERROR] 2022-04-02T08:39:55.077+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" -2022-04-02T08:39:55.102+0100 [ERROR] 2022-04-02T08:39:55.102+0100 [INFO] Creating Helm chart: ref=tempo -2022-04-02T08:39:55.102+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:39:55.102+0100 [ERROR] 2022-04-02T08:39:55.102+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:55.103+0100 [ERROR] 2022-04-02T08:39:55.103+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo -2022-04-02T08:39:55.707+0100 [ERROR] 2022-04-02T08:39:55.707+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz -2022-04-02T08:39:55.708+0100 [ERROR] 2022-04-02T08:39:55.708+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" -2022-04-02T08:39:55.708+0100 [DEBUG] Validate chart: ref=tempo -2022-04-02T08:39:55.708+0100 [DEBUG] Run chart: ref=tempo -2022-04-02T08:39:55.953+0100 [ERROR] 2022-04-02T08:39:55.953+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" -2022-04-02T08:39:55.962+0100 [ERROR] 2022-04-02T08:39:55.962+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" -2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [INFO] Creating Helm chart: ref=grafana -2022-04-02T08:39:55.993+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:55.993+0100 [ERROR] 2022-04-02T08:39:55.993+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana -2022-04-02T08:39:56.591+0100 [ERROR] 2022-04-02T08:39:56.591+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz -2022-04-02T08:39:56.593+0100 [ERROR] 2022-04-02T08:39:56.593+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" -2022-04-02T08:39:56.593+0100 [DEBUG] Validate chart: ref=grafana -2022-04-02T08:39:56.593+0100 [DEBUG] Run chart: ref=grafana -2022-04-02T08:39:56.918+0100 [ERROR] W0402 08:39:56.918085 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:56.920+0100 [ERROR] W0402 08:39:56.920379 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:56.949+0100 [ERROR] 2022-04-02T08:39:56.949+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" -2022-04-02T08:39:56.968+0100 [ERROR] 2022-04-02T08:39:56.967+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" -2022-04-02T08:39:56.972+0100 [ERROR] W0402 08:39:56.971941 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:56.972+0100 [ERROR] W0402 08:39:56.972048 15802 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:39:57.059+0100 [DEBUG] Template content: ref=monitor_ingress_gateway - source= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: #{{ .Vars.monitoring_namespace }} - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: #{{ .Vars.consul_namespace }} - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [DEBUG] Template output: ref=monitor_ingress_gateway - destination= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: monitoring - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: consul - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-02T08:39:57.059+0100 [ERROR] 2022-04-02T08:39:57.059+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] -2022-04-02T08:39:57.060+0100 [ERROR] 2022-04-02T08:39:57.060+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [INFO] Creating Helm chart: ref=consul-release-controller -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml -2022-04-02T08:39:57.150+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml -2022-04-02T08:39:57.150+0100 [ERROR] 2022-04-02T08:39:57.150+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:39:57.150+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-02T08:39:57.151+0100 [ERROR] 2022-04-02T08:39:57.151+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" -2022-04-02T08:39:57.151+0100 [DEBUG] Validate chart: ref=consul-release-controller -2022-04-02T08:39:57.151+0100 [DEBUG] Run chart: ref=consul-release-controller -2022-04-02T08:39:57.255+0100 [ERROR] 2022-04-02T08:39:57.255+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml -2022-04-02T08:39:57.272+0100 [ERROR] 2022-04-02T08:39:57.272+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml -2022-04-02T08:39:57.358+0100 [ERROR] 2022-04-02T08:39:57.358+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml -2022-04-02T08:39:57.378+0100 [ERROR] 2022-04-02T08:39:57.378+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml -2022-04-02T08:39:57.424+0100 [ERROR] 2022-04-02T08:39:57.424+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml -2022-04-02T08:39:57.451+0100 [ERROR] 2022-04-02T08:39:57.450+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml -2022-04-02T08:39:57.527+0100 [ERROR] 2022-04-02T08:39:57.527+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" -2022-04-02T08:39:57.539+0100 [ERROR] 2022-04-02T08:39:57.539+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" -2022-04-02T08:39:57.680+0100 [ERROR] 2022-04-02T08:39:57.680+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" -2022-04-02T08:39:57.699+0100 [ERROR] 2022-04-02T08:39:57.698+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 -2022-04-02T08:39:57.699+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec -2022-04-02T08:39:57.770+0100 [ERROR] 2022-04-02T08:39:57.770+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec -2022-04-02T08:39:57.774+0100 [ERROR] 2022-04-02T08:39:57.774+0100 [DEBUG] Attaching container to network: ref=b348885b4e875314e67b40934ba881759666f2cfd09ed8c2913726cee9b97278 network=dc1 -2022-04-02T08:39:57.783+0100 [ERROR] 2022-04-02T08:39:57.783+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec -2022-04-02T08:39:58.929+0100 [ERROR] 2022-04-02T08:39:58.929+0100 [DEBUG] Forcefully remove: container=b348885b4e875314e67b40934ba881759666f2cfd09ed8c2913726cee9b97278 -2022-04-02T08:39:59.637+0100 [ERROR] 2022-04-02T08:39:59.637+0100 [DEBUG] Health check urls for browser windows: count=0 -2022-04-02T08:39:59.637+0100 [DEBUG] Browser windows open - -######################################################## - -Title Development setup -Author Nic Jackson -2022-04-02T08:39:59.637+0100 [ERROR] -• Consul: https://localhost:8501 -• Grafana: https://localhost:8080 -• Application: http://localhost:18080 - -This blueprint defines 13 output variables. - -You can set output variables as environment variables for your current terminal session using the following command: - -eval $(shipyard env) - -To list output variables use the command: - -shipyard output -2022-04-02T08:40:00.249+0100 [INFO] Starting controller -2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start -2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start -2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Configure: state=state_configure -2022-04-02T08:40:04.825+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure -2022-04-02T08:40:04.825+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api -2022-04-02T08:40:04.825+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api -2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_configure -2022-04-02T08:40:04.854+0100 [DEBUG] kubernetes-webhook: Reject deployment, there is currently an active release for this deployment: name=api-deployment namespace=default state=state_configure -2022-04-02T08:40:04.856+0100 [INFO] Shutting down server gracefully -2022-04-02T08:40:04.857+0100 [INFO] Shutting down listener -2022-04-02T08:40:04.857+0100 [INFO] Shutting down metrics -2022-04-02T08:40:04.858+0100 [INFO] Shutting down kubernetes controller -2022-04-02T08:40:04.858+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller -2022-04-02T08:40:05.834+0100 [ERROR] releaser-plugin-consul: Unable to create Consul ServiceDefaults: name=consul-release-controller error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" -2022-04-02T08:40:05.834+0100 [ERROR] statemachine: Configure completed with error: error="Get \"https://127.0.0.1:8501/v1/config/service-defaults/consul-release-controller\": dial tcp 127.0.0.1:8501: connect: connection refused" -2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Handle event: event=event_fail state=state_configure -2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Log state: event=event_fail state=state_configure -2022-04-02T08:40:05.834+0100 [DEBUG] statemachine: Log state: event=event_fail release=api state=state_fail +2022-04-05T15:39:15.709+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.849999999999998 @[1649169555.707]"] value_type=model.Vector warnings=[] +2022-04-05T15:39:16.318+0100 [INFO] Shutting down server gracefully +2022-04-05T15:39:16.319+0100 [INFO] Shutting down listener +2022-04-05T15:39:16.319+0100 [INFO] Shutting down metrics +2022-04-05T15:39:16.320+0100 [INFO] Shutting down kubernetes controller +2022-04-05T15:39:16.320+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller diff --git a/plugins/canary/plugin_test.go b/plugins/canary/plugin_test.go index 07dcb47..ec7d0c3 100644 --- a/plugins/canary/plugin_test.go +++ b/plugins/canary/plugin_test.go @@ -120,7 +120,7 @@ func TestReturnsErrorWhenChecksFail(t *testing.T) { p, mm := setupPlugin(t, canaryStrategy) testutils.ClearMockCall(&mm.Mock, "Check") - mm.On("Check", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("boom")) + mm.On("Check", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(interfaces.CheckFailed, fmt.Errorf("boom")) state, traffic, err := p.Execute(context.Background()) require.NoError(t, err) diff --git a/plugins/consul/plugin.go b/plugins/consul/plugin.go index a125e1c..369ece7 100644 --- a/plugins/consul/plugin.go +++ b/plugins/consul/plugin.go @@ -44,7 +44,7 @@ func (s *Plugin) Configure(data json.RawMessage) error { errorMessage := "" for _, err := range err.(validator.ValidationErrors) { switch err.Namespace() { - case "PluginConfig.ConsulService": + case "PluginConfig.ReleaserBaseConfig.ConsulService": errorMessage += ErrConsulService.Error() + "\n" } } diff --git a/plugins/consul/plugin_test.go b/plugins/consul/plugin_test.go index 6913682..c9296ca 100644 --- a/plugins/consul/plugin_test.go +++ b/plugins/consul/plugin_test.go @@ -25,12 +25,16 @@ func setupPlugin(t *testing.T) (*Plugin, *clients.ConsulMock) { mc.On("CreateServiceDefaults", mock.Anything).Return(nil) mc.On("CreateServiceResolver", mock.Anything).Return(nil) mc.On("CreateServiceRouter", mock.Anything, mock.Anything).Return(nil) + mc.On("CreateUpstreamRouter", mock.Anything, mock.Anything).Return(nil) mc.On("CreateServiceSplitter", mock.Anything, mock.Anything, mock.Anything).Return(nil) + mc.On("CreateServiceIntention", mock.Anything, mock.Anything).Return(nil) + mc.On("DeleteServiceSplitter", mock.Anything).Return(nil) mc.On("DeleteServiceDefaults", mock.Anything).Return(nil) mc.On("DeleteServiceResolver", mock.Anything).Return(nil) mc.On("DeleteServiceRouter", mock.Anything).Return(nil) - mc.On("DeleteServiceSplitter", mock.Anything).Return(nil) + mc.On("DeleteUpstreamRouter", mock.Anything).Return(nil) + mc.On("DeleteServiceIntention", mock.Anything).Return(nil) data := testutils.GetTestData(t, "valid_kubernetes_release.json") dep := map[string]interface{}{} @@ -71,9 +75,11 @@ func TestSetupCreatesConsulServiceDefaults(t *testing.T) { require.NoError(t, err) mc.AssertCalled(t, "CreateServiceDefaults", "api") + mc.AssertCalled(t, "CreateServiceDefaults", clients.ControllerServiceName) + mc.AssertCalled(t, "CreateServiceDefaults", clients.UpstreamRouterName) } -func TestSetupFailsOnCreateServiceDefaultsError(t *testing.T) { +func TestSetupFailsOnCreateServiceDefaultsForServiceError(t *testing.T) { p, mc := setupPlugin(t) testutils.ClearMockCall(&mc.Mock, "CreateServiceDefaults") @@ -82,6 +88,41 @@ func TestSetupFailsOnCreateServiceDefaultsError(t *testing.T) { err := p.Setup(context.Background()) mc.AssertCalled(t, "CreateServiceDefaults", "api") + mc.AssertNotCalled(t, "CreateServiceDefaults", clients.ControllerServiceName) + mc.AssertNotCalled(t, "CreateServiceDefaults", clients.UpstreamRouterName) + + require.Error(t, err) +} + +func TestSetupFailsOnCreateServiceDefaultsForControllerError(t *testing.T) { + p, mc := setupPlugin(t) + + testutils.ClearMockCall(&mc.Mock, "CreateServiceDefaults") + mc.On("CreateServiceDefaults", mock.Anything).Once().Return(nil) + mc.On("CreateServiceDefaults", mock.Anything).Once().Return(fmt.Errorf("boom")) + + err := p.Setup(context.Background()) + + mc.AssertCalled(t, "CreateServiceDefaults", "api") + mc.AssertCalled(t, "CreateServiceDefaults", clients.ControllerServiceName) + mc.AssertNotCalled(t, "CreateServiceDefaults", clients.UpstreamRouterName) + + require.Error(t, err) +} + +func TestSetupFailsOnCreateServiceDefaultsForUpstreamError(t *testing.T) { + p, mc := setupPlugin(t) + + testutils.ClearMockCall(&mc.Mock, "CreateServiceDefaults") + mc.On("CreateServiceDefaults", mock.Anything).Once().Return(nil) + mc.On("CreateServiceDefaults", mock.Anything).Once().Return(nil) + mc.On("CreateServiceDefaults", mock.Anything).Once().Return(fmt.Errorf("boom")) + + err := p.Setup(context.Background()) + + mc.AssertCalled(t, "CreateServiceDefaults", "api") + mc.AssertCalled(t, "CreateServiceDefaults", clients.ControllerServiceName) + mc.AssertCalled(t, "CreateServiceDefaults", clients.UpstreamRouterName) require.Error(t, err) } @@ -111,14 +152,52 @@ func TestSetupCreatesConsulServiceRouter(t *testing.T) { err := p.Setup(context.Background()) require.NoError(t, err) - mc.AssertCalled(t, "CreateServiceRouter", "api", false) + mc.AssertCalled(t, "CreateServiceRouter", "api") } func TestSetupFailsOnCreateServiceRouterError(t *testing.T) { p, mc := setupPlugin(t) testutils.ClearMockCall(&mc.Mock, "CreateServiceRouter") - mc.On("CreateServiceRouter", mock.Anything, mock.Anything).Return(fmt.Errorf("boom")) + mc.On("CreateServiceRouter", mock.Anything).Return(fmt.Errorf("boom")) + + err := p.Setup(context.Background()) + require.Error(t, err) +} + +func TestSetupCreatesUpstreamServiceRouter(t *testing.T) { + p, mc := setupPlugin(t) + + err := p.Setup(context.Background()) + require.NoError(t, err) + + mc.AssertCalled(t, "CreateUpstreamRouter", "api") +} + +func TestSetupFailsOnCreateUpstreamServiceRouterError(t *testing.T) { + p, mc := setupPlugin(t) + + testutils.ClearMockCall(&mc.Mock, "CreateUpstreamRouter") + mc.On("CreateUpstreamRouter", mock.Anything).Return(fmt.Errorf("boom")) + + err := p.Setup(context.Background()) + require.Error(t, err) +} + +func TestSetupCreatesServiceIntention(t *testing.T) { + p, mc := setupPlugin(t) + + err := p.Setup(context.Background()) + require.NoError(t, err) + + mc.AssertCalled(t, "CreateServiceIntention", "api") +} + +func TestSetupFailsOnCreateServiceIntentionError(t *testing.T) { + p, mc := setupPlugin(t) + + testutils.ClearMockCall(&mc.Mock, "CreateServiceIntention") + mc.On("CreateServiceIntention", mock.Anything).Return(fmt.Errorf("boom")) err := p.Setup(context.Background()) require.Error(t, err) @@ -143,13 +222,31 @@ func TestScaleReturnsErrorOnUpdateError(t *testing.T) { require.Error(t, err) } +func TestDestroyDeletesServiceSplitter(t *testing.T) { + p, mc := setupPlugin(t) + + err := p.Destroy(context.Background()) + require.NoError(t, err) + + mc.AssertCalled(t, "DeleteServiceSplitter", "api") +} + +func TestDestroyFailsOnDeletesServiceSplitterError(t *testing.T) { + p, mc := setupPlugin(t) + + testutils.ClearMockCall(&mc.Mock, "DeleteServiceSplitter") + mc.On("DeleteServiceSplitter", mock.Anything).Return(fmt.Errorf("boom")) + + err := p.Destroy(context.Background()) + require.Error(t, err) +} + func TestDestroyDeletesServiceRouter(t *testing.T) { p, mc := setupPlugin(t) err := p.Destroy(context.Background()) require.NoError(t, err) - mc.AssertCalled(t, "CreateServiceRouter", "api", true) mc.AssertCalled(t, "DeleteServiceRouter", "api") } @@ -163,26 +260,26 @@ func TestDestroyFailsOnDeleteServiceRouterError(t *testing.T) { require.Error(t, err) } -func TestDestroyDeletesConsulServiceSplitter(t *testing.T) { +func TestDestroyDeletesUpstreamServiceRouter(t *testing.T) { p, mc := setupPlugin(t) err := p.Destroy(context.Background()) require.NoError(t, err) - mc.AssertCalled(t, "DeleteServiceSplitter", "api") + mc.AssertCalled(t, "DeleteUpstreamRouter", "api") } -func TestDestroyFailsOnDeletesConsulServiceSplitterError(t *testing.T) { +func TestDestroyFailsOnDeleteUpstreamServiceRouterError(t *testing.T) { p, mc := setupPlugin(t) - testutils.ClearMockCall(&mc.Mock, "DeleteServiceSplitter") - mc.On("DeleteServiceSplitter", mock.Anything).Return(fmt.Errorf("boom")) + testutils.ClearMockCall(&mc.Mock, "DeleteUpstreamRouter") + mc.On("DeleteUpstreamRouter", mock.Anything).Return(fmt.Errorf("boom")) err := p.Destroy(context.Background()) require.Error(t, err) } -func TestDestroyCreatesConsulServiceResolver(t *testing.T) { +func TestDestroyDeletesConsulServiceResolver(t *testing.T) { p, mc := setupPlugin(t) err := p.Destroy(context.Background()) @@ -191,7 +288,7 @@ func TestDestroyCreatesConsulServiceResolver(t *testing.T) { mc.AssertCalled(t, "DeleteServiceResolver", "api") } -func TestDeleteFailsOnCreateServiceResolverError(t *testing.T) { +func TestDeleteFailsOnDeleteServiceResolverError(t *testing.T) { p, mc := setupPlugin(t) testutils.ClearMockCall(&mc.Mock, "DeleteServiceResolver") diff --git a/plugins/httptest/plugin.go b/plugins/httptest/plugin.go index 507cd15..cb41f46 100644 --- a/plugins/httptest/plugin.go +++ b/plugins/httptest/plugin.go @@ -101,7 +101,7 @@ func (p *Plugin) Configure(data json.RawMessage) error { return nil } -func (p *Plugin) Execute(ctx context.Context, i time.Duration) error { +func (p *Plugin) Execute(ctx context.Context) error { timeoutDuration, err := time.ParseDuration(p.config.Timeout) if err != nil { return fmt.Errorf("unable to parse timeout as duration: %s", err) diff --git a/plugins/interfaces/deploymenttest.go b/plugins/interfaces/deploymenttest.go index 1bb5d84..c17acc6 100644 --- a/plugins/interfaces/deploymenttest.go +++ b/plugins/interfaces/deploymenttest.go @@ -2,7 +2,6 @@ package interfaces import ( "context" - "time" ) // PostDeploymentTest defines a plugin that validates the health of a new deployment by @@ -11,5 +10,5 @@ type PostDeploymentTest interface { Configurable // Execute the tests and return an error if the test fails - Execute(ctx context.Context, interval time.Duration) error + Execute(ctx context.Context) error } diff --git a/plugins/kubernetes/plugin.go b/plugins/kubernetes/plugin.go index db06a41..902e936 100644 --- a/plugins/kubernetes/plugin.go +++ b/plugins/kubernetes/plugin.go @@ -38,7 +38,16 @@ func New(l hclog.Logger) (*Plugin, error) { func (p *Plugin) Configure(data json.RawMessage) error { p.config = &PluginConfig{} - return json.Unmarshal(data, p.config) + err := json.Unmarshal(data, p.config) + if err != nil { + return err + } + + if p.config.Namespace == "" { + p.config.Namespace = "default" + } + + return nil } func (p *Plugin) BaseConfig() interfaces.RuntimeBaseConfig { diff --git a/plugins/kubernetes/plugin_test.go b/plugins/kubernetes/plugin_test.go index 43091bc..81633dc 100644 --- a/plugins/kubernetes/plugin_test.go +++ b/plugins/kubernetes/plugin_test.go @@ -76,7 +76,7 @@ func TestInitPrimaryDoesNothingWhenCandidateDoesNotExist(t *testing.T) { testutils.ClearMockCall(&km.Mock, "GetDeployment") km.On("GetDeployment", mock.Anything, "test-deployment-primary", "testnamespace").Return(nil, fmt.Errorf("Primary not found")) - km.On("GetHealthyDeployment", mock.Anything, "test-deployment", "testnamespace").Return(nil, fmt.Errorf("Candidate not Found")) + km.On("GetDeployment", mock.Anything, "test-deployment", "testnamespace").Return(nil, fmt.Errorf("Candidate not Found")) status, err := p.InitPrimary(context.Background()) require.NoError(t, err) @@ -88,7 +88,7 @@ func TestInitPrimaryCreatesPrimaryWhenCandidateExists(t *testing.T) { testutils.ClearMockCall(&km.Mock, "GetDeployment") km.On("GetDeployment", mock.Anything, "test-deployment-primary", "testnamespace").Once().Return(nil, fmt.Errorf("Primary not found")) - km.On("GetHealthyDeployment", mock.Anything, "test-deployment", "testnamespace").Return(dep, nil) + km.On("GetDeployment", mock.Anything, "test-deployment", "testnamespace").Return(dep, nil) km.On("UpsertDeployment", mock.Anything, mock.Anything).Once().Return(nil) km.On("GetHealthyDeployment", mock.Anything, "test-deployment-primary", "testnamespace").Return(cloneDep, nil) diff --git a/plugins/mocks/deploymenttest.go b/plugins/mocks/deploymenttest.go index 9bd96ca..5e1640e 100644 --- a/plugins/mocks/deploymenttest.go +++ b/plugins/mocks/deploymenttest.go @@ -3,7 +3,6 @@ package mocks import ( "context" "encoding/json" - "time" "github.com/stretchr/testify/mock" ) @@ -20,8 +19,8 @@ func (r *PostDeploymentTestMock) Configure(c json.RawMessage) error { return args.Error(0) } -func (r *PostDeploymentTestMock) Execute(ctx context.Context, interval time.Duration) error { - args := r.Called(ctx, interval) +func (r *PostDeploymentTestMock) Execute(ctx context.Context) error { + args := r.Called(ctx) return args.Error(0) } diff --git a/plugins/mocks/mocks.go b/plugins/mocks/mocks.go index 83662f2..0f1d78d 100644 --- a/plugins/mocks/mocks.go +++ b/plugins/mocks/mocks.go @@ -29,6 +29,7 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { // create the mock plugins relMock := &ReleaserMock{} relMock.On("Configure", mock.Anything).Return(nil) + relMock.On("BaseConfig").Return(nil) relMock.On("Setup", mock.Anything).Return(nil) relMock.On("Scale", mock.Anything, mock.Anything).Return(nil) relMock.On("Destroy", mock.Anything, mock.Anything).Return(nil) @@ -45,7 +46,7 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { monMock := &MonitorMock{} monMock.On("Configure", mock.Anything).Return(nil) - monMock.On("Check", mock.Anything, mock.Anything).Return(nil) + monMock.On("Check", mock.Anything, mock.Anything).Return(interfaces.CheckSuccess, nil) stratMock := &StrategyMock{} stratMock.On("Configure", mock.Anything).Return(nil) @@ -77,7 +78,7 @@ func BuildMocks(t *testing.T) (*ProviderMock, *Mocks) { postDeploymentMock := &PostDeploymentTestMock{} postDeploymentMock.On("Configure", mock.Anything).Return(nil) - postDeploymentMock.On("Execute", mock.Anything, mock.Anything).Return(nil) + postDeploymentMock.On("Execute", mock.Anything).Return(nil) provMock := &ProviderMock{} diff --git a/plugins/mocks/releaser.go b/plugins/mocks/releaser.go index 4ceeb85..703e627 100644 --- a/plugins/mocks/releaser.go +++ b/plugins/mocks/releaser.go @@ -10,14 +10,27 @@ import ( type ReleaserMock struct { mock.Mock + baseConfig *interfaces.ReleaserBaseConfig } func (s *ReleaserMock) Configure(config json.RawMessage) error { args := s.Called(config) + s.baseConfig = &interfaces.ReleaserBaseConfig{} + json.Unmarshal(config, s.baseConfig) + return args.Error(0) } +func (s *ReleaserMock) BaseConfig() interfaces.ReleaserBaseConfig { + args := s.Called() + if bc, ok := args.Get(0).(interfaces.ReleaserBaseConfig); ok { + return bc + } + + return *s.baseConfig +} + func (s *ReleaserMock) Setup(ctx context.Context) error { args := s.Called(ctx) diff --git a/plugins/prometheus/monitor.go b/plugins/prometheus/monitor.go index f094d20..94b4abf 100644 --- a/plugins/prometheus/monitor.go +++ b/plugins/prometheus/monitor.go @@ -160,7 +160,7 @@ func (s *Plugin) Check(ctx context.Context, interval time.Duration) (interfaces. } } else { s.log.Error("invalid value returned from query", "name", query.Name, "preset", query.Preset, "value", val) - return interfaces.CheckError, fmt.Errorf("check failed for query %s using preset %s, got value %v", query.Name, query.Preset, val) + return interfaces.CheckNoMetrics, fmt.Errorf("check failed for query %s using preset %s, got value %v", query.Name, query.Preset, val) } } diff --git a/plugins/prometheus/monitor_test.go b/plugins/prometheus/monitor_test.go index a4fb3c1..571f194 100644 --- a/plugins/prometheus/monitor_test.go +++ b/plugins/prometheus/monitor_test.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/go-hclog" "github.com/nicholasjackson/consul-release-controller/clients" + "github.com/nicholasjackson/consul-release-controller/plugins/interfaces" "github.com/nicholasjackson/consul-release-controller/testutils" v1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" @@ -38,7 +39,7 @@ func setupPlugin(t *testing.T, config string) (*Plugin, *clients.PrometheusMock) func TestPluginReturnsErrorWhenPresetNotFound(t *testing.T) { p, pm := setupPlugin(t, twoDefaultQueriesInvalidPreset) - err := p.Check(context.Background(), 30*time.Second) + _, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) pm.AssertNotCalled(t, "Query") @@ -47,14 +48,14 @@ func TestPluginReturnsErrorWhenPresetNotFound(t *testing.T) { func TestPluginReturnsErrorWhenCustomQueryBlank(t *testing.T) { p, pm := setupPlugin(t, twoQueriesCustomEmpty) - err := p.Check(context.Background(), 30*time.Second) + _, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) pm.AssertNotCalled(t, "Query") } func TestPluginReturnsErrorWhenNilValue(t *testing.T) { - p, pm := setupPlugin(t, twoDefaultQueriesInvalidPreset) + p, pm := setupPlugin(t, twoDefaultQueries) testutils.ClearMockCall(&pm.Mock, "Query") pm.On("Query", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return( @@ -63,14 +64,15 @@ func TestPluginReturnsErrorWhenNilValue(t *testing.T) { nil, ) - err := p.Check(context.Background(), 30*time.Second) + result, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) + require.Equal(t, interfaces.CheckNoMetrics, result) pm.AssertNotCalled(t, "Query") } func TestPluginReturnsErrorWhenEmptyVector(t *testing.T) { - p, pm := setupPlugin(t, twoDefaultQueriesInvalidPreset) + p, pm := setupPlugin(t, twoDefaultQueries) testutils.ClearMockCall(&pm.Mock, "Query") pm.On("Query", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return( @@ -79,8 +81,9 @@ func TestPluginReturnsErrorWhenEmptyVector(t *testing.T) { nil, ) - err := p.Check(context.Background(), 30*time.Second) + result, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) + require.Equal(t, interfaces.CheckNoMetrics, result) pm.AssertNotCalled(t, "Query") } @@ -97,8 +100,9 @@ func TestPluginReturnsErrorWhenQueryValueLessThanMin(t *testing.T) { nil, ) - err := p.Check(context.Background(), 30*time.Second) + result, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) + require.Equal(t, interfaces.CheckFailed, result) pm.AssertNumberOfCalls(t, "Query", 1) } @@ -115,8 +119,9 @@ func TestPluginReturnsErrorWhenQueryValueGreaterThanMax(t *testing.T) { nil, ) - err := p.Check(context.Background(), 30*time.Second) + result, err := p.Check(context.Background(), 30*time.Second) require.Error(t, err) + require.Equal(t, interfaces.CheckFailed, result) pm.AssertNumberOfCalls(t, "Query", 2) } @@ -124,7 +129,7 @@ func TestPluginReturnsErrorWhenQueryValueGreaterThanMax(t *testing.T) { func TestPluginExecutesQueriesAndChecksValue(t *testing.T) { p, pm := setupPlugin(t, twoDefaultQueries) - err := p.Check(context.Background(), 30*time.Second) + _, err := p.Check(context.Background(), 30*time.Second) require.NoError(t, err) pm.AssertNumberOfCalls(t, "Query", 2) @@ -145,7 +150,7 @@ func TestPluginExecutesQueriesAndChecksValue(t *testing.T) { func TestPluginExecutesCustomQueriesAndChecksValue(t *testing.T) { p, pm := setupPlugin(t, twoQueriesOneCustom) - err := p.Check(context.Background(), 30*time.Second) + _, err := p.Check(context.Background(), 30*time.Second) require.NoError(t, err) pm.AssertNumberOfCalls(t, "Query", 2) diff --git a/plugins/statemachine/statemachine.go b/plugins/statemachine/statemachine.go index f23c0f3..e294b8c 100644 --- a/plugins/statemachine/statemachine.go +++ b/plugins/statemachine/statemachine.go @@ -401,7 +401,7 @@ func (s *StateMachine) doMonitor() func(e *fsm.Event) { // run the post deployment tests if we have any if s.testPlugin != nil { s.logger.Debug("Executing post deployment tests") - err := s.testPlugin.Execute(ctx, 30*time.Second) + err := s.testPlugin.Execute(ctx) if err != nil { // post deployment tests have failed rollback diff --git a/plugins/statemachine/statemachine_test.go b/plugins/statemachine/statemachine_test.go index 4294be9..936f623 100644 --- a/plugins/statemachine/statemachine_test.go +++ b/plugins/statemachine/statemachine_test.go @@ -41,7 +41,7 @@ func setupTests(t *testing.T) (*models.Release, *StateMachine, *mocks.Mocks) { pp.AssertCalled(t, "CreateWebhook", r.Webhooks[0].Name) pm.WebhookMock.AssertCalled(t, "Configure", r.Webhooks[0].Config) - pp.AssertCalled(t, "CreatePostDeploymentTest", r.PostDeploymentTest.Name, pm.RuntimeMock.BaseConfig().Deployment, pm.RuntimeMock.BaseConfig().Namespace, r.Runtime.Name, pm.MonitorMock) + pp.AssertCalled(t, "CreatePostDeploymentTest", r.PostDeploymentTest.Name, pm.ReleaserMock.BaseConfig().ConsulService, "", r.Runtime.Name, pm.MonitorMock) pm.PostDeploymentMock.AssertCalled(t, "Configure", r.PostDeploymentTest.Config) t.Cleanup(func() { @@ -249,7 +249,7 @@ func TestEventDeployWithNoErrorSetsStatusIdle(t *testing.T) { pm.WebhookMock.AssertCalled(t, "Send", mock.Anything) } -func TestEventDeployedWithPostDeploymentTestErrorSetsStatusFail(t *testing.T) { +func TestEventDeployedWithPostDeploymentTestErrorSetsStatusRollback(t *testing.T) { _, sm, pm := setupTests(t) testutils.ClearMockCall(&pm.PostDeploymentMock.Mock, "Execute") @@ -258,7 +258,7 @@ func TestEventDeployedWithPostDeploymentTestErrorSetsStatusFail(t *testing.T) { sm.SetState(interfaces.StateDeploy) sm.Event(interfaces.EventDeployed) - require.Eventually(t, func() bool { return historyContains(sm, interfaces.StateFail) }, 100*time.Millisecond, 1*time.Millisecond) + require.Eventually(t, func() bool { return historyContains(sm, interfaces.StateRollback) }, 100*time.Millisecond, 1*time.Millisecond) pm.PostDeploymentMock.AssertCalled(t, "Execute", mock.Anything, mock.Anything) pm.StrategyMock.AssertNotCalled(t, "Execute", mock.Anything) pm.WebhookMock.AssertCalled(t, "Send", mock.Anything) From b533cfc390385488afdadf059594d3f1786a2ea3 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Wed, 6 Apr 2022 17:44:13 +0100 Subject: [PATCH 07/12] Update kubebuilder for go 1.18 --- go.mod | 5 +---- kubernetes/controller/Makefile | 2 +- kubernetes/controller/go.mod | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 85b976f..d215e70 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/nicholasjackson/consul-release-controller -go 1.17 +go 1.18 require ( github.com/DisgoOrg/disgo v0.7.2 @@ -69,8 +69,6 @@ require ( github.com/hashicorp/serf v0.9.6 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kr/pretty v0.3.0 // indirect - github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/mattn/go-colorable v0.1.7 // indirect github.com/mattn/go-isatty v0.0.12 // indirect @@ -85,7 +83,6 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/procfs v0.7.3 // indirect - github.com/rogpeppe/go-internal v1.8.0 // indirect github.com/rs/zerolog v1.18.1-0.20200514152719-663cbb4c8469 // indirect github.com/sasha-s/go-csync v0.0.0-20210812194225-61421b77c44b // indirect github.com/spf13/pflag v1.0.5 // indirect diff --git a/kubernetes/controller/Makefile b/kubernetes/controller/Makefile index ee52734..df1d667 100644 --- a/kubernetes/controller/Makefile +++ b/kubernetes/controller/Makefile @@ -128,7 +128,7 @@ TMP_DIR=$$(mktemp -d) ;\ cd $$TMP_DIR ;\ go mod init tmp ;\ echo "Downloading $(2)" ;\ -GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\ +GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\ rm -rf $$TMP_DIR ;\ } endef diff --git a/kubernetes/controller/go.mod b/kubernetes/controller/go.mod index e267f02..626f0e8 100644 --- a/kubernetes/controller/go.mod +++ b/kubernetes/controller/go.mod @@ -1,6 +1,6 @@ module github.com/nicholasjackson/consul-release-controller/kubernetes/controller -go 1.17 +go 1.18 require ( github.com/go-logr/logr v1.2.0 From 8446bf649bab21b8aae8b7755bb9e4c6c35fcb55 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 24 Apr 2022 20:46:04 +0100 Subject: [PATCH 08/12] Update chart to add deps --- Makefile | 7 +++ .../consul-release-controller/Chart.lock | 6 ++ .../consul-release-controller/Chart.tpl | 5 ++ .../consul-release-controller/Chart.yaml | 5 ++ ...release-controller.nicholasjackson.io.yaml | 0 .../consul-release-controller/values.yaml | 2 +- docs/docs/example_app.md | 8 +++ docs/docs/post_deployment_test.md | 55 +++++++++++++++++++ docs/static/index.yaml | 12 ++-- example/kubernetes/web.yaml | 2 +- shipyard/kubernetes/controller.hcl | 33 +++++++++-- shipyard/kubernetes/main.hcl | 23 ++------ 12 files changed, 131 insertions(+), 27 deletions(-) create mode 100644 deploy/kubernetes/charts/consul-release-controller/Chart.lock rename deploy/kubernetes/charts/consul-release-controller/templates/{ => crds}/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml (100%) create mode 100644 docs/docs/post_deployment_test.md diff --git a/Makefile b/Makefile index d0f0f0c..02a80c4 100644 --- a/Makefile +++ b/Makefile @@ -89,6 +89,10 @@ generate_helm: # First generate the Helm specific kustomize config that creates the RBAC and CRDs kustomize build ./kubernetes/controller/config/helm -o ./deploy/kubernetes/charts/consul-release-controller/templates +# Move the crds to the crds folder for helm + mv ./deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml \ + ./deploy/kubernetes/charts/consul-release-controller/templates/crds/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml + # Set the version in the chart cp ./deploy/kubernetes/charts/consul-release-controller/Chart.tpl ./deploy/kubernetes/charts/consul-release-controller/Chart.yaml sedi=(-i) && [ "$(UNAME)" == "Darwin" ] && sedi=(-i '') ; \ @@ -98,6 +102,9 @@ generate_helm: sedi=(-i) && [ "$(UNAME)" == "Darwin" ] && sedi=(-i '') ; \ sed "$${sedi[@]}" -e 's/##VERSION##/${VERSION}/' ./deploy/kubernetes/charts/consul-release-controller/values.yaml +# Fetch the chart deps + helm dep up ./deploy/kubernetes/charts/consul-release-controller + # Now package the Helm chart into a tarball helm package ./deploy/kubernetes/charts/consul-release-controller diff --git a/deploy/kubernetes/charts/consul-release-controller/Chart.lock b/deploy/kubernetes/charts/consul-release-controller/Chart.lock new file mode 100644 index 0000000..4d3cbc1 --- /dev/null +++ b/deploy/kubernetes/charts/consul-release-controller/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: cert-manager + repository: https://charts.jetstack.io + version: v1.8.0 +digest: sha256:131f6c4421593582023ba3ddf8bea9314eed390e1589e3429ecd3556e14d522a +generated: "2022-04-23T10:51:24.129090801+01:00" diff --git a/deploy/kubernetes/charts/consul-release-controller/Chart.tpl b/deploy/kubernetes/charts/consul-release-controller/Chart.tpl index bf3ea8a..d0c8a08 100644 --- a/deploy/kubernetes/charts/consul-release-controller/Chart.tpl +++ b/deploy/kubernetes/charts/consul-release-controller/Chart.tpl @@ -22,3 +22,8 @@ version: ##VERSION## # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. appVersion: "##VERSION##" + +dependencies: + - name: cert-manager + version: ~1.8.0 + repository: https://charts.jetstack.io \ No newline at end of file diff --git a/deploy/kubernetes/charts/consul-release-controller/Chart.yaml b/deploy/kubernetes/charts/consul-release-controller/Chart.yaml index e150220..8553ccc 100644 --- a/deploy/kubernetes/charts/consul-release-controller/Chart.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/Chart.yaml @@ -22,3 +22,8 @@ version: 0.0.3-dev # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. appVersion: "0.0.3-dev" + +dependencies: + - name: cert-manager + version: ~1.8.0 + repository: https://charts.jetstack.io \ No newline at end of file diff --git a/deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml b/deploy/kubernetes/charts/consul-release-controller/templates/crds/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml similarity index 100% rename from deploy/kubernetes/charts/consul-release-controller/templates/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml rename to deploy/kubernetes/charts/consul-release-controller/templates/crds/apiextensions.k8s.io_v1_customresourcedefinition_releases.consul-release-controller.nicholasjackson.io.yaml diff --git a/deploy/kubernetes/charts/consul-release-controller/values.yaml b/deploy/kubernetes/charts/consul-release-controller/values.yaml index 7f4f5a2..c14ff0c 100644 --- a/deploy/kubernetes/charts/consul-release-controller/values.yaml +++ b/deploy/kubernetes/charts/consul-release-controller/values.yaml @@ -13,7 +13,7 @@ controller: repository: nicholasjackson/consul-release-controller pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. - tag: "44a059e" + tag: "b533cfc" # Set the CONSUL_HTTP_ADDR to the address of the Consul cluster, this env is only used when # autoEncrypt is disabled as autoEncrypt adds a https variable. diff --git a/docs/docs/example_app.md b/docs/docs/example_app.md index f405e95..f515964 100644 --- a/docs/docs/example_app.md +++ b/docs/docs/example_app.md @@ -1562,6 +1562,14 @@ spec: trafficStep: 20 maxTraffic: 100 errorThreshold: 5 + postDeploymentTest: + pluginName: "http" + config: + path: "/" + method: "GET" + requiredTestPasses: 3 + interval: "10s" + timeout: "120s" monitor: pluginName: "prometheus" config: diff --git a/docs/docs/post_deployment_test.md b/docs/docs/post_deployment_test.md new file mode 100644 index 0000000..e4a8a7f --- /dev/null +++ b/docs/docs/post_deployment_test.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 5 +--- + +Post deployment tests allow the execution of HTTP requests against the candidate version of a service before it any production +traffic is sent to it. + + + +```yaml +--- +apiVersion: consul-release-controller.nicholasjackson.io/v1 +kind: Release +metadata: + name: api + namespace: default +spec: + releaser: + pluginName: "consul" + config: + consulService: "api" + runtime: + pluginName: "kubernetes" + config: + deployment: "api-deployment" + postDeploymentTest: + pluginName: "http" + config: + path: "/" + method: "GET" + requiredTestPasses: 3 + interval: "10s" + timeout: "120s" + strategy: + pluginName: "canary" + config: + initialDelay: "30s" + initialTraffic: 10 + interval: "30s" + trafficStep: 20 + maxTraffic: 100 + errorThreshold: 5 + monitor: + pluginName: "prometheus" + config: + address: "http://localhost:9090" + queries: + - name: "request-success" + preset: "envoy-request-success" + min: 99 + - name: "request-duration" + preset: "envoy-request-duration" + min: 20 + max: 200 +``` \ No newline at end of file diff --git a/docs/static/index.yaml b/docs/static/index.yaml index 4cb476e..877d960 100644 --- a/docs/static/index.yaml +++ b/docs/static/index.yaml @@ -53,12 +53,16 @@ entries: version: 0.0.9 - apiVersion: v2 appVersion: 0.0.3-dev - created: "2022-03-20T16:45:58.012949488Z" + created: "2022-04-23T10:52:12.762720368+01:00" + dependencies: + - name: cert-manager + repository: https://charts.jetstack.io + version: ~1.8.0 description: A Helm chart for installing the Consul release controller - digest: e9dc529f0a0f05974eac00ebb5d3284fd654771cedb6b1311257f3b226d96531 + digest: 7db627f64fde5519e7569c69c7dc211d645d4bbe3c5ff8ca134c568955c312a1 name: consul-release-controller type: application urls: - - https://github.com/nicholasjackson/consul-release-controller/releases/download/v44a059e/consul-release-controller-0.0.3-dev.tgz + - https://github.com/nicholasjackson/consul-release-controller/releases/download/vb533cfc/consul-release-controller-0.0.3-dev.tgz version: 0.0.3-dev -generated: "2022-03-20T16:45:58.012016804Z" +generated: "2022-04-23T10:52:12.758345169+01:00" diff --git a/example/kubernetes/web.yaml b/example/kubernetes/web.yaml index b566a4d..d9ebf75 100644 --- a/example/kubernetes/web.yaml +++ b/example/kubernetes/web.yaml @@ -33,7 +33,7 @@ metadata: labels: app: web_v1 spec: - replicas: 1 + replicas: 2 selector: matchLabels: app: web diff --git a/shipyard/kubernetes/controller.hcl b/shipyard/kubernetes/controller.hcl index aefa934..d66eaa2 100644 --- a/shipyard/kubernetes/controller.hcl +++ b/shipyard/kubernetes/controller.hcl @@ -30,13 +30,38 @@ EOF } } -helm "consul-release-controller" { +helm "cert_manager" { + cluster = "k8s_cluster.dc1" + namespace = "cert-manager" + create_namespace = true + + repository { + name = "jetstack" + url = "https://charts.jetstack.io" + } + + chart = "jetstack/cert-manager" + version = "v1.8.0" + + health_check { + timeout = "120s" + pods = [ + "app=cert-manager", + ] + } + + values_string = { + "installCRDs" = true + } +} + +helm "consul_release_controller" { disabled = !var.helm_chart_install - # wait for certmanager to be installed and the template to be processed + # wait for Consul to be installed and the template to be processed depends_on = [ "template.controller_values", - "k8s_config.cert-manager-controller", + "helm.cert_manager", "module.consul", ] @@ -72,7 +97,7 @@ exec_remote "exec_standalone" { disabled = !var.helm_chart_install depends_on = [ - "helm.consul-release-controller", + "helm.consul_release_controller", "template.certs_script", ] diff --git a/shipyard/kubernetes/main.hcl b/shipyard/kubernetes/main.hcl index c427201..7410a89 100644 --- a/shipyard/kubernetes/main.hcl +++ b/shipyard/kubernetes/main.hcl @@ -22,6 +22,11 @@ variable "consul_acls_enabled" { default = true } +variable "consul_release_controller_enabled" { + description = "Enable the Consul release controller using the blueprint" + default = false +} + //variable "consul_image" { // default = "hashicorp/consul:1.9.13" //} @@ -97,24 +102,8 @@ k8s_cluster "dc1" { } } -k8s_config "cert-manager-controller" { - cluster = "k8s_cluster.dc1" - - paths = [ - "${file_dir()}/cert-manager.yaml", - ] - - wait_until_ready = true - - health_check { - timeout = "60s" - pods = ["app.kubernetes.io/instance=cert-manager"] - } -} - - module "consul" { - source = "github.com/shipyard-run/blueprints?ref=89c98c1f9f5e5d6ec0e3577fee43783bfe0062b0/modules//kubernetes-consul" + source = "github.com/shipyard-run/blueprints?ref=f4c6e96fe5188b934b1179087f0e91575db2a61e/modules//kubernetes-consul" } ingress "web" { From ee452423d43bcc43ea0abee3ccbec6f794f5cb31 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 24 Apr 2022 21:02:13 +0100 Subject: [PATCH 09/12] Update post deployment tests --- docs/docs/example_app.md | 19 ++++++++++++++++++- docs/docs/post_deployment_test.md | 4 ++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/docs/example_app.md b/docs/docs/example_app.md index f515964..0c79e25 100644 --- a/docs/docs/example_app.md +++ b/docs/docs/example_app.md @@ -1627,7 +1627,7 @@ increase traffic to the new version by the amounts specified in the configuratio #### monitor -The monitor plugin is responsible for querying the health of the deployment. Consul Release Controller queries the +The `monitor` plugin is responsible for querying the health of the deployment. Consul Release Controller queries the monitoring system like Prometheus, Datadog, Honeycomb and uses the result to decide if the strategy should progress or if it should be rolled back. @@ -1635,6 +1635,7 @@ if it should be rolled back. | parameter | required | type | values | description | | ------------ | -------- | -------- | ------ | --------------------------------------------------------------- | | address | yes | string | | address of the Prometheus server that should be queried | +| queries | yes | array | | queries to execute to validate the deployment | #### queries @@ -1648,6 +1649,22 @@ queries must be successful for the strategy to progress. | min | no | integer | | minimum value that must be returned by the query for the strategy to progress | | max | no | integer | | maximum value that must be returned by the query for the strategy to progress | +#### postDeploymentTest + +`postDeploymentTest` configures tests that execute the defined request before production traffic is distributed to the +candidate deployment as part of the strategy. Should the tests fail the deployment is rolled back, if the tests +pass the roll out strategy continues. + +##### config +| parameter | required | type | values | description | +| ------------ | -------- | -------- | -------------------------------- | --------------------------------------------------------------- | +| path | yes | string | | request path for the test | +| method | yes | string | GET,POST,DELETE,HEAD,OPTIONS,PUT | HTTP method to use for executing the tests | +| requiredTestPasses | yes | integer | | number of successful responses before the test is considered a success | +| interval | yes | duration | | interval between test executions | +| timeout | yes | duration | | maximum duration for postDeploymentTest execution | +| payload | no | string | | Payload to send with POST or PUT requests | + #### Applying the release Let's now create the release for the `API` service. If you look at the existing `api` pods you will see that diff --git a/docs/docs/post_deployment_test.md b/docs/docs/post_deployment_test.md index e4a8a7f..425777a 100644 --- a/docs/docs/post_deployment_test.md +++ b/docs/docs/post_deployment_test.md @@ -5,7 +5,11 @@ sidebar_position: 5 Post deployment tests allow the execution of HTTP requests against the candidate version of a service before it any production traffic is sent to it. +When a post deployment test is defined, Consul Release Controller will expose an upstream target to the candidate, this allows +all tests to be executed over the service mesh with no manual routing changes required. +If the tests pass, the release controller will progress with the strategy, however, should the tests fail, the release controller +will roll back the deployment. ```yaml --- From 65def9558f76601767f601697ed89e397e50c7a6 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 24 Apr 2022 22:05:07 +0100 Subject: [PATCH 10/12] Update certs get script --- functional_tests/tests.log | 2464 ---------------------------- shipyard/kubernetes/controller.hcl | 41 +- 2 files changed, 31 insertions(+), 2474 deletions(-) delete mode 100755 functional_tests/tests.log diff --git a/functional_tests/tests.log b/functional_tests/tests.log deleted file mode 100755 index cfebc55..0000000 --- a/functional_tests/tests.log +++ /dev/null @@ -1,2464 +0,0 @@ -2022-04-05T15:31:05.716+0100 [ERROR] 2022-04-05T15:31:05.716+0100 [DEBUG] Generating TLS Certificates for Ingress: path=/home/nicj/.shipyard/certs -2022-04-05T15:31:11.261+0100 [ERROR] 2022-04-05T15:31:11.261+0100 [DEBUG] Starting Ingress -2022-04-05T15:31:11.261+0100 [ERROR] Running configuration from: ./shipyard/kubernetes - -2022-04-05T15:31:11.261+0100 [DEBUG] Statefile does not exist -2022-04-05T15:31:14.644+0100 [ERROR] 2022-04-05T15:31:14.644+0100 [INFO] Creating resources from configuration: path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes -2022-04-05T15:31:14.644+0100 [DEBUG] Statefile does not exist -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_CACERT -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=UPSTREAMS -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TLS_KEY -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TLS_CERT -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_HTTP_ADDR -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_PASSWORD -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_namespace output=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=TEMPO_HTTP_ADDR -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_USER -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=GRAFANA_HTTP_ADDR -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_values output=/home/nicj/.shipyard/data/consul_kubernetes/consul_values.yaml -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_values - source= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: #{{ .Vars.datacenter }} - | - | acls: - | manageSystemACLs: #{{ .Vars.acl_enabled }} - | tls: - | enabled: #{{ .Vars.tls_enabled }} - | enableAutoEncrypt: #{{ .Vars.tls_enabled }} - | httpsOnly: false - | - | federation: - | enabled: #{{ .Vars.federation_enabled }} - | createFederationSecret: #{{ .Vars.create_federation_secret }} - | - | image: #{{ .Vars.consul_image }} - | - | imageK8S: #{{ .Vars.consul_k8s_image }} - | - | imageEnvoy: #{{ .Vars.consul_envoy_image }} - | - | metrics: - | enabled: #{{ .Vars.metrics_enabled }} - | enableAgentMetrics: #{{ .Vars.metrics_enabled }} - | enableGatewayMetrics: #{{ .Vars.metrics_enabled }} - | - | logLevel: #{{ if eq .Vars.debug true }}"debug"#{{ else }}"info"#{{ end }} - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.#{{ .Vars.monitoring_namespace }}.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: #{{ if eq .Vars.debug true }}"--log-level debug"#{{ else }}null#{{ end }} - | - | transparentProxy: - | defaultEnabled: #{{ .Vars.transparent_proxy_enabled }} - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: #{{ .Vars.ingress_gateway_enabled }} - | defaults: - | replicas: 1 - | service: - | ports: - | #{{ range .Vars.ingress_gateway_ports }} - | - port: #{{ . }} - | nodePort: null - | #{{ end }} - | - | - | meshGateway: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | replicas: 1 - | - | wanAddress: - | source: Static - | static: #{{ .Vars.mesh_gateway_address }} - | port: 30443 - | - | service: - | enabled: #{{ .Vars.mesh_gateway_enabled }} - | type: NodePort - | nodePort: 30443 - -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_CAKEY -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Network: ref=dc1 -2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=CONSUL_HTTP_TOKEN_FILE -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=consul_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: consul - | labels: - | name: consul - -2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=consul_proxy_defaults output=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=consul_proxy_defaults - source= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.#{{ .Vars.monitoring_namespace}}.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=KUBECONFIG -2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=certs_script output=/home/nicj/.shipyard/data/kube_setup/fetch_certs.sh -2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=certs_script - source= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=consul_proxy_defaults - destination= - | --- - | apiVersion: consul.hashicorp.com/v1alpha1 - | kind: ProxyDefaults - | metadata: - | name: global - | spec: - | config: - | envoy_prometheus_bind_addr: '0.0.0.0:9102' - | envoy_extra_static_clusters_json: > - | { - | "name": "tempo", - | "type": "STRICT_DNS", - | "connect_timeout": "3.000s", - | "lb_policy": "ROUND_ROBIN", - | "load_assignment": { - | "cluster_name": "tempo", - | "endpoints": [ - | { - | "lb_endpoints": [ - | { - | "endpoint": { - | "address": { - | "socket_address": { - | "address": "tempo.monitoring.svc", - | "port_value": 9411 - | } - | } - | } - | } - | ] - | } - | ] - | } - | } - | envoy_tracing_json: > - | { - | "http": { - | "name": "envoy.tracers.zipkin", - | "typedConfig": { - | "@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig", - | "collector_cluster": "tempo", - | "collector_endpoint_version": "HTTP_JSON", - | "collector_endpoint": "/api/v1/spans", - | "shared_span_context": false - | } - | } - | } -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template output: ref=certs_script - destination= - | #! /bin/sh -e - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.crt"' | \ - | base64 -d > /output/tls.crt - | - | kubectl get secret consul-release-controller-certificate -n consul -o json | \ - | jq -r '.data."tls.key"' | \ - | base64 -d > /output/tls.key -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Generating template: ref=controller_values output=/home/nicj/.shipyard/data/kube_setup/helm-values.yaml -2022-04-05T15:31:17.794+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [DEBUG] Template content: ref=controller_values - source= - | controller: - | enabled: "#{{ .Vars.controller_enabled }}" - | container_config: - | image: - | repository: "#{{ .Vars.controller_repo }}" - | tag: "#{{ .Vars.controller_version }}" - | autoencrypt: - | enabled: #{{ .Vars.tls_enabled }} - | acls: - | enabled: #{{ .Vars.acls_enabled }} - | #{{- if eq .Vars.controller_enabled false }} - | webhook: - | service: controller-webhook - | namespace: shipyard - | #{{ end }} -2022-04-05T15:31:17.795+0100 [ERROR] 2022-04-05T15:31:17.794+0100 [INFO] Creating Output: ref=PROMETHEUS_HTTP_ADDR -2022-04-05T15:31:17.795+0100 [DEBUG] Template output: ref=consul_values - destination= - | # Available parameters and their default values for the Consul chart. - | # Server, when enabled, configures a server cluster to run. This should - | # be disabled if you plan on connecting to a Consul cluster external to - | # the Kube cluster. - | global: - | # image: hashicorpdev/consul - | # imageK8S: hashicorpdev/consul-k8s:crd-controller-base-latest - | name: consul - | - | datacenter: dc1 - | - | acls: - | manageSystemACLs: true - | tls: - | enabled: true - | enableAutoEncrypt: true - | httpsOnly: false - | - | federation: - | enabled: false - | createFederationSecret: false - | - | image: hashicorp/consul:1.11.3 - | - | imageK8S: hashicorp/consul-k8s-control-plane:0.40.0 - | - | imageEnvoy: envoyproxy/envoy:v1.20.1 - | - | metrics: - | enabled: true - | enableAgentMetrics: true - | enableGatewayMetrics: true - | - | logLevel: "info" - | - | server: - | replicas: 1 - | bootstrapExpect: 1 - | - | storage: 128Mi - | - | extraConfig: | - | { - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | - | controller: - | enabled: true - | ui: - | enabled: true - | connectInject: - | enabled: true - | default: false # true will inject by default, otherwise requires annotation - | failurePolicy: "Ignore" - | replicas: 1 - | envoyExtraArgs: null - | - | transparentProxy: - | defaultEnabled: false - | - | # Requires Consul v1.5+ and consul-k8s v0.8.1+ - | centralConfig: - | enabled: true - | - | ingressGateways: - | enabled: true - | defaults: - | replicas: 1 - | service: - | ports: - | - | - port: 18080 - | nodePort: null - | - | - port: 18443 - | nodePort: null - | - | - | - | meshGateway: - | enabled: false - | replicas: 1 - | - | wanAddress: - | source: Static - | static: dc1.k8s-cluster.shipyard.run - | port: 30443 - | - | service: - | enabled: false - | type: NodePort - | nodePort: 30443 - -2022-04-05T15:31:17.795+0100 [DEBUG] Template output: ref=controller_values - destination= - | controller: - | enabled: "false" - | container_config: - | image: - | repository: "nicholasjackson/consul-release-controller" - | tag: "" - | autoencrypt: - | enabled: true - | acls: - | enabled: true - | webhook: - | service: controller-webhook - | namespace: shipyard - | -2022-04-05T15:31:17.796+0100 [ERROR] 2022-04-05T15:31:17.796+0100 [DEBUG] Attempting to create using bridge plugin: ref=dc1 -2022-04-05T15:31:17.819+0100 [ERROR] 2022-04-05T15:31:17.819+0100 [INFO] Creating ImageCache: ref=docker-cache -2022-04-05T15:31:17.821+0100 [ERROR] 2022-04-05T15:31:17.821+0100 [DEBUG] Connecting cache to network: name=network.dc1 -2022-04-05T15:31:17.822+0100 [ERROR] 2022-04-05T15:31:17.822+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-05T15:31:17.839+0100 [ERROR] 2022-04-05T15:31:17.839+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-05T15:31:17.839+0100 [DEBUG] Creating Docker Container: ref=39412348-import -2022-04-05T15:31:20.381+0100 [ERROR] 2022-04-05T15:31:20.381+0100 [DEBUG] Forcefully remove: container=b82c9801aaf8551ca43ea5519e143cb1733eb171de471fd60fa0eccdc05c6d8a -2022-04-05T15:31:20.800+0100 [ERROR] 2022-04-05T15:31:20.799+0100 [DEBUG] Image exists in local cache: image=shipyardrun/docker-registry-proxy:0.6.3 -2022-04-05T15:31:20.800+0100 [ERROR] 2022-04-05T15:31:20.800+0100 [DEBUG] Creating Docker Container: ref=docker-cache -2022-04-05T15:31:20.849+0100 [ERROR] 2022-04-05T15:31:20.849+0100 [DEBUG] Remove container from default networks: ref=docker-cache -2022-04-05T15:31:20.852+0100 [ERROR] 2022-04-05T15:31:20.852+0100 [DEBUG] Attaching container to network: ref=bbfc08c1ee6527702e40ea18867e2515502e5fd5fe0b03f322358ee633b413ef network=dc1 -2022-04-05T15:31:20.858+0100 [ERROR] 2022-04-05T15:31:20.858+0100 [DEBUG] Disconnectng network: name=bridge ref=docker-cache -2022-04-05T15:31:21.389+0100 [ERROR] 2022-04-05T15:31:21.388+0100 [INFO] dc1: Creating Cluster: ref=dc1 -2022-04-05T15:31:21.411+0100 [ERROR] 2022-04-05T15:31:21.411+0100 [DEBUG] Image exists in local cache: image=shipyardrun/k3s:v1.22.4 -2022-04-05T15:31:21.412+0100 [ERROR] 2022-04-05T15:31:21.412+0100 [DEBUG] Volume exists: ref=images name=images.volume.shipyard.run -2022-04-05T15:31:21.412+0100 [ERROR] 2022-04-05T15:31:21.412+0100 [DEBUG] Creating Docker Container: ref=server.dc1 -2022-04-05T15:31:21.463+0100 [ERROR] 2022-04-05T15:31:21.463+0100 [DEBUG] Remove container from default networks: ref=server.dc1 -2022-04-05T15:31:21.467+0100 [ERROR] 2022-04-05T15:31:21.467+0100 [DEBUG] Attaching container to network: ref=bfe28d4312bd0a621bb97b4c72b41e3d1318d70bc8c06d08501b9c69e365d53f network=dc1 -2022-04-05T15:31:21.476+0100 [ERROR] 2022-04-05T15:31:21.476+0100 [DEBUG] Disconnectng network: name=bridge ref=server.dc1 -2022-04-05T15:31:24.067+0100 [ERROR] 2022-04-05T15:31:24.067+0100 [DEBUG] Copying file from: id=bfe28d4312bd0a621bb97b4c72b41e3d1318d70bc8c06d08501b9c69e365d53f src=/output/kubeconfig.yaml dst=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:31:24.104+0100 [ERROR] 2022-04-05T15:31:24.104+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:26.113+0100 [ERROR] 2022-04-05T15:31:26.113+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:28.116+0100 [ERROR] 2022-04-05T15:31:28.116+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:29.644+0100 [ERROR] 2022-04-05T15:31:29.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 15.000652] -2022-04-05T15:31:30.119+0100 [ERROR] 2022-04-05T15:31:30.119+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:32.123+0100 [ERROR] 2022-04-05T15:31:32.123+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:34.127+0100 [ERROR] 2022-04-05T15:31:34.127+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:36.131+0100 [ERROR] 2022-04-05T15:31:36.130+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:38.133+0100 [ERROR] 2022-04-05T15:31:38.133+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:40.137+0100 [ERROR] 2022-04-05T15:31:40.137+0100 [DEBUG] Less than one item returned, will retry: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:42.142+0100 [ERROR] 2022-04-05T15:31:42.141+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=local-path-provisioner-64ffb68fd-hlswc namespace=kube-system status=Pending -2022-04-05T15:31:44.146+0100 [ERROR] 2022-04-05T15:31:44.146+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=local-path-provisioner -2022-04-05T15:31:44.146+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-05T15:31:44.644+0100 [ERROR] 2022-04-05T15:31:44.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 30.000369] -2022-04-05T15:31:46.149+0100 [ERROR] 2022-04-05T15:31:46.149+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=k8s-app=kube-dns -2022-04-05T15:31:46.149+0100 [DEBUG] Writing docker images to volume: images=[] volume=images.volume.shipyard.run -2022-04-05T15:31:46.166+0100 [ERROR] 2022-04-05T15:31:46.166+0100 [DEBUG] Image exists in local cache: image=alpine:latest -2022-04-05T15:31:46.166+0100 [DEBUG] Creating Docker Container: ref=66538416-import -2022-04-05T15:31:48.639+0100 [ERROR] 2022-04-05T15:31:48.639+0100 [DEBUG] Forcefully remove: container=51d1374847f4bc317ba4ca6fbd5f1d40ec432d810fd233878608994297c1e2a2 -2022-04-05T15:31:48.959+0100 [ERROR] 2022-04-05T15:31:48.959+0100 [DEBUG] dc1: Deploying connector -2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing namespace config: file=/tmp/2811884817/namespace.yaml -2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing secret config: file=/tmp/2811884817/secret.yaml -2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing RBAC config: file=/tmp/2811884817/rbac.yaml -2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] dc1: Writing deployment config: file=/tmp/2811884817/deployment.yaml -2022-04-05T15:31:50.340+0100 [ERROR] 2022-04-05T15:31:50.340+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/namespace.yaml -2022-04-05T15:31:50.862+0100 [ERROR] 2022-04-05T15:31:50.862+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/secret.yaml -2022-04-05T15:31:50.867+0100 [ERROR] 2022-04-05T15:31:50.867+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/rbac.yaml -2022-04-05T15:31:50.874+0100 [ERROR] 2022-04-05T15:31:50.874+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/tmp/2811884817/deployment.yaml -2022-04-05T15:31:50.890+0100 [ERROR] 2022-04-05T15:31:50.890+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-05T15:31:52.893+0100 [ERROR] 2022-04-05T15:31:52.893+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app=connector -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=web -2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-rpc -2022-04-05T15:31:52.894+0100 [INFO] Applying Kubernetes configuration: ref=consul_namespace config=["/home/nicj/.shipyard/data/consul/namespace.yaml"] -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=upstreams-proxy -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=web local_port=9092 connector_addr=127.0.0.1:31246 local_addr=web.default.svc:9090 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=upstreams-proxy local_port=28080 connector_addr=127.0.0.1:31246 local_addr=consul-release-controller.default.svc:8080 -2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-1 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=controller-webhook -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-ingeress-gateway-2 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul-lan-serf -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-lan-serf local_port=8301 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8301 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-rpc local_port=8300 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8300 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-1 local_port=18080 connector_addr=127.0.0.1:31246 local_addr=consul-ingress-gateway.consul.svc:18080 -2022-04-05T15:31:52.894+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul/namespace.yaml -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [INFO] Applying Kubernetes configuration: ref=cert-manager-controller config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml"] -2022-04-05T15:31:52.894+0100 [INFO] Create Ingress: ref=consul -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul local_port=8501 connector_addr=127.0.0.1:31246 local_addr=consul-server.consul.svc:8501 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose local service: name=controller-webhook remote_port=19443 connector_addr=127.0.0.1:31246 local_addr=localhost:19443 -2022-04-05T15:31:52.894+0100 [ERROR] 2022-04-05T15:31:52.894+0100 [DEBUG] Calling connector to expose remote service: name=consul-ingeress-gateway-2 local_port=18443 connector_addr=127.0.0.1:31246 local_addr=consul-ingress-gateway.consul.svc:18443 -2022-04-05T15:31:52.895+0100 [ERROR] 2022-04-05T15:31:52.895+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/cert-manager.yaml -2022-04-05T15:31:52.914+0100 [ERROR] 2022-04-05T15:31:52.914+0100 [DEBUG] Successfully exposed service: id=80a9f5b7-2146-4fa1-ba43-90653767e3c1 -2022-04-05T15:31:52.915+0100 [ERROR] 2022-04-05T15:31:52.915+0100 [DEBUG] Successfully exposed service: id=2e970413-132b-43c3-9207-719a118ab9f4 -2022-04-05T15:31:52.916+0100 [ERROR] 2022-04-05T15:31:52.916+0100 [DEBUG] Successfully exposed service: id=e9882f55-1b26-4797-9db1-225a5aae969f -2022-04-05T15:31:52.918+0100 [ERROR] 2022-04-05T15:31:52.918+0100 [DEBUG] Successfully exposed service: id=1075ce46-24c5-4cc5-a723-d1240b4a6307 -2022-04-05T15:31:52.918+0100 [ERROR] 2022-04-05T15:31:52.918+0100 [DEBUG] Successfully exposed service: id=27c4bf68-b92d-47c2-83ee-d8ca4cf6d790 -2022-04-05T15:31:52.919+0100 [ERROR] 2022-04-05T15:31:52.919+0100 [DEBUG] Successfully exposed service: id=963f10b5-6dad-4fe3-b58e-2a9b9506ad6b -2022-04-05T15:31:52.921+0100 [ERROR] 2022-04-05T15:31:52.921+0100 [DEBUG] Successfully exposed service: id=5da0479b-7375-4d0c-8d65-437475656100 -2022-04-05T15:31:52.922+0100 [ERROR] 2022-04-05T15:31:52.922+0100 [DEBUG] Successfully exposed service: id=dacf1cb6-ba64-45d4-91b0-8da9af742e83 -2022-04-05T15:31:52.960+0100 [ERROR] 2022-04-05T15:31:52.960+0100 [INFO] Creating Helm chart: ref=consul -2022-04-05T15:31:52.960+0100 [DEBUG] Updating Helm chart repository: name=hashicorp url=https://helm.releases.hashicorp.com -2022-04-05T15:31:53.054+0100 [ERROR] 2022-04-05T15:31:53.054+0100 [DEBUG] Using Kubernetes config: ref=consul path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:31:53.055+0100 [ERROR] 2022-04-05T15:31:53.054+0100 [DEBUG] Creating chart from config: ref=consul chart=hashicorp/consul -2022-04-05T15:31:53.150+0100 [ERROR] 2022-04-05T15:31:53.150+0100 [DEBUG] Loading chart: ref=consul path=/home/nicj/.shipyard/helm_charts/cache/consul-0.40.0.tgz -2022-04-05T15:31:53.157+0100 [ERROR] 2022-04-05T15:31:53.157+0100 [DEBUG] Using Values: ref=consul - values= - | map[connectInject:map[centralConfig:map[enabled:true] default:false enabled:true envoyExtraArgs: failurePolicy:Ignore replicas:1 transparentProxy:map[defaultEnabled:false]] controller:map[enabled:true] global:map[acls:map[manageSystemACLs:true] datacenter:dc1 federation:map[createFederationSecret:false enabled:false] image:hashicorp/consul:1.11.3 imageEnvoy:envoyproxy/envoy:v1.20.1 imageK8S:hashicorp/consul-k8s-control-plane:0.40.0 logLevel:info metrics:map[enableAgentMetrics:true enableGatewayMetrics:true enabled:true] name:consul tls:map[enableAutoEncrypt:true enabled:true httpsOnly:false]] ingressGateways:map[defaults:map[replicas:1 service:map[ports:[map[nodePort: port:18080] map[nodePort: port:18443]]]] enabled:true] meshGateway:map[enabled:false replicas:1 service:map[enabled:false nodePort:30443 type:NodePort] wanAddress:map[port:30443 source:Static static:dc1.k8s-cluster.shipyard.run]] server:map[bootstrapExpect:1 extraConfig:{ - | "ui_config": { - | "enabled": true, - | "metrics_provider": "prometheus", - | "metrics_proxy": { - | "base_url": "http://prometheus-kube-prometheus-prometheus.monitoring.svc:9090" - | } - | } - | } - | replicas:1 storage:128Mi] ui:map[enabled:true]] - -2022-04-05T15:31:53.157+0100 [DEBUG] Validate chart: ref=consul -2022-04-05T15:31:53.157+0100 [DEBUG] Run chart: ref=consul -2022-04-05T15:31:53.294+0100 [ERROR] 2022-04-05T15:31:53.294+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-05T15:31:53.858+0100 [ERROR] 2022-04-05T15:31:53.858+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" ServiceAccount" -2022-04-05T15:31:53.860+0100 [ERROR] 2022-04-05T15:31:53.860+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="serviceaccounts \"consul-tls-init\" not found" -2022-04-05T15:31:53.911+0100 [ERROR] 2022-04-05T15:31:53.910+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-05T15:31:53.915+0100 [ERROR] 2022-04-05T15:31:53.915+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Role" -2022-04-05T15:31:53.917+0100 [ERROR] 2022-04-05T15:31:53.917+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="roles.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-05T15:31:53.980+0100 [ERROR] 2022-04-05T15:31:53.980+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-05T15:31:53.984+0100 [ERROR] 2022-04-05T15:31:53.984+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" RoleBinding" -2022-04-05T15:31:53.986+0100 [ERROR] 2022-04-05T15:31:53.986+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="rolebindings.rbac.authorization.k8s.io \"consul-tls-init\" not found" -2022-04-05T15:31:54.036+0100 [ERROR] 2022-04-05T15:31:54.035+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-05T15:31:54.040+0100 [ERROR] 2022-04-05T15:31:54.040+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-05T15:31:54.042+0100 [ERROR] 2022-04-05T15:31:54.042+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="jobs.batch \"consul-tls-init\" not found" -2022-04-05T15:31:54.091+0100 [ERROR] 2022-04-05T15:31:54.091+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-05T15:31:54.097+0100 [ERROR] 2022-04-05T15:31:54.097+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-tls-init with timeout of 0s" -2022-04-05T15:31:54.102+0100 [ERROR] 2022-04-05T15:31:54.101+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: ADDED" -2022-04-05T15:31:54.102+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:31:54.111+0100 [ERROR] 2022-04-05T15:31:54.111+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-05T15:31:54.111+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:31:55.298+0100 [ERROR] 2022-04-05T15:31:55.298+0100 [DEBUG] Pod not running: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-cainjector-7974c84449-cb87l namespace=cert-manager status=Pending -2022-04-05T15:31:56.762+0100 [ERROR] 2022-04-05T15:31:56.762+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-05T15:31:56.762+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-tls-init: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:31:56.770+0100 [ERROR] 2022-04-05T15:31:56.770+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-tls-init: MODIFIED" -2022-04-05T15:31:56.772+0100 [ERROR] 2022-04-05T15:31:56.772+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-tls-init\" Job" -2022-04-05T15:31:56.780+0100 [ERROR] 2022-04-05T15:31:56.780+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 58 resource(s)" -2022-04-05T15:31:57.192+0100 [ERROR] 2022-04-05T15:31:57.191+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="creating 1 resource(s)" -2022-04-05T15:31:57.206+0100 [ERROR] 2022-04-05T15:31:57.206+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Watching for changes to Job consul-server-acl-init-cleanup with timeout of 0s" -2022-04-05T15:31:57.208+0100 [ERROR] 2022-04-05T15:31:57.208+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: ADDED" -2022-04-05T15:31:57.208+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:31:57.214+0100 [ERROR] 2022-04-05T15:31:57.214+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-05T15:31:57.214+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:31:57.304+0100 [ERROR] 2022-04-05T15:31:57.303+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:31:59.308+0100 [ERROR] 2022-04-05T15:31:59.308+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:31:59.645+0100 [ERROR] 2022-04-05T15:31:59.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 45.001100] -2022-04-05T15:32:01.325+0100 [ERROR] 2022-04-05T15:32:01.325+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:32:03.330+0100 [ERROR] 2022-04-05T15:32:03.330+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:32:05.335+0100 [ERROR] 2022-04-05T15:32:05.335+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:32:07.340+0100 [ERROR] 2022-04-05T15:32:07.340+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=cert-manager-webhook-59d6cfd784-q8jtt namespace=cert-manager type=Ready value=False -2022-04-05T15:32:09.345+0100 [ERROR] 2022-04-05T15:32:09.345+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=app.kubernetes.io/instance=cert-manager -2022-04-05T15:32:14.645+0100 [ERROR] 2022-04-05T15:32:14.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 60.001718] -2022-04-05T15:32:20.937+0100 [ERROR] 2022-04-05T15:32:20.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-05T15:32:20.937+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="consul-server-acl-init-cleanup: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:20.945+0100 [ERROR] 2022-04-05T15:32:20.945+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Add/Modify event for consul-server-acl-init-cleanup: MODIFIED" -2022-04-05T15:32:20.947+0100 [ERROR] 2022-04-05T15:32:20.947+0100 [DEBUG] Helm debug: name=consul chart=hashicorp/consul message="Starting delete for \"consul-server-acl-init-cleanup\" Job" -2022-04-05T15:32:21.005+0100 [ERROR] 2022-04-05T15:32:21.005+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-05T15:32:23.010+0100 [ERROR] 2022-04-05T15:32:23.010+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=consul-connect-injector-57d85f9c7c-wjrlr namespace=consul type=Ready value=False -2022-04-05T15:32:25.016+0100 [ERROR] 2022-04-05T15:32:25.016+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=connect-injector -2022-04-05T15:32:25.016+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-05T15:32:27.021+0100 [ERROR] 2022-04-05T15:32:27.021+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=client -2022-04-05T15:32:27.021+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-05T15:32:29.027+0100 [ERROR] 2022-04-05T15:32:29.027+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=controller -2022-04-05T15:32:29.027+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-05T15:32:29.644+0100 [ERROR] 2022-04-05T15:32:29.644+0100 [INFO] Please wait, still creating resources [Elapsed Time: 75.000414] -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=component=server -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=prometheus_operator_template output=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=prometheus_operator_template - source= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: #{{ .Vars.monitoring_namespace }} - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" - -2022-04-05T15:32:31.032+0100 [INFO] Applying Kubernetes configuration: ref=consul_defaults config=["/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml"] -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=grafana -2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=prometheus -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=monitoring_namespace output=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=monitoring_namespace - source= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=prometheus local_port=9090 connector_addr=127.0.0.1:31246 local_addr=prometheus-operated.monitoring.svc:9090 -2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=grafana local_port=8080 connector_addr=127.0.0.1:31246 local_addr=grafana.monitoring.svc:80 -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=prometheus_operator_template - destination= - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | app: metrics - | jobLabel: applications - | endpoints: - | - port: metrics - | interval: 15s - | namespaceSelector: - | matchNames: - | - default - | - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: PodMonitor - | metadata: - | name: applications - | namespace: monitoring - | labels: - | app: applications - | release: prometheus - | spec: - | selector: - | matchLabels: - | metrics: enabled - | podMetricsEndpoints: - | - port: "9102" -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=monitoring_namespace - destination= - | kind: Namespace - | apiVersion: v1 - | metadata: - | name: monitoring - | labels: - | name: monitoring - -2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=zipkin -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=fetch_consul_resources output=/home/nicj/.shipyard/data/consul_kubernetes/fetch.sh -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Template content: ref=fetch_consul_resources - source= - | #!/bin/sh -e - | - | echo "Port #{{ .Vars.port }}" - | echo "Fetching resources from running cluster, acls_enabled: #{{ .Vars.acl_enabled }}, tls_enabled #{{ .Vars.tls_enabled }}" - | - | #{{ if eq .Vars.acl_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | #{{end}} - | - | #{{ if eq .Vars.tls_enabled true }} - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n #{{ .Vars.consul_namespace }} -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | #{{end}} -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Creating Helm chart: ref=prometheus -2022-04-05T15:32:31.032+0100 [INFO] Create Ingress: ref=tempo -2022-04-05T15:32:31.032+0100 [DEBUG] Updating Helm chart repository: name=prometheus url=https://prometheus-community.github.io/helm-charts -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=tempo local_port=3100 connector_addr=127.0.0.1:31246 local_addr=tempo.default.svc:3100 -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Applying Kubernetes configuration: ref=monitoring_namespace config=["/home/nicj/.shipyard/data/monitoring/namespace.yaml"] -2022-04-05T15:32:31.032+0100 [DEBUG] Template output: ref=fetch_consul_resources - destination= - | #!/bin/sh -e - | - | echo "Port 8501" - | echo "Fetching resources from running cluster, acls_enabled: true, tls_enabled true" - | - | - | kubectl get secret -n consul -o jsonpath='{.data.token}' consul-bootstrap-acl-token | base64 -d > /data/bootstrap_acl.token - | - | - | - | kubectl get secret -n consul -o jsonpath="{.data['tls\.crt']}" consul-ca-cert | base64 -d > /data/tls.crt - | kubectl get secret -n consul -o jsonpath="{.data['tls\.key']}" consul-ca-key | base64 -d > /data/tls.key - | -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Remote executing command: ref=fetch_consul_resources command=sh args=["/data/fetch.sh"] image="&{shipyardrun/tools:v0.5.0 }" -2022-04-05T15:32:31.032+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/proxy-defaults.yaml -2022-04-05T15:32:31.032+0100 [DEBUG] Calling connector to expose remote service: name=zipkin local_port=9411 connector_addr=127.0.0.1:31246 local_addr=tempo.monitoring.svc:9411 -2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.032+0100 [INFO] Generating template: ref=grafana_secret_template output=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-05T15:32:31.033+0100 [DEBUG] Template content: ref=grafana_secret_template - source= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: #{{ .Vars.monitoring_namespace }} - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= -2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.033+0100 [DEBUG] Template output: ref=grafana_secret_template - destination= - | apiVersion: v1 - | kind: Secret - | metadata: - | name: grafana-password - | namespace: monitoring - | type: Opaque - | data: - | admin-password: YWRtaW4= - | admin-user: YWRtaW4= -2022-04-05T15:32:31.033+0100 [ERROR] 2022-04-05T15:32:31.033+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/namespace.yaml -2022-04-05T15:32:31.051+0100 [ERROR] 2022-04-05T15:32:31.051+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.5.0 -2022-04-05T15:32:31.051+0100 [DEBUG] Creating Docker Container: ref=fetch_consul_resources.remote_exec -2022-04-05T15:32:31.052+0100 [ERROR] 2022-04-05T15:32:31.052+0100 [DEBUG] Successfully exposed service: id=2f9e3954-406d-47c8-80ed-e44962058d62 -2022-04-05T15:32:31.059+0100 [ERROR] 2022-04-05T15:32:31.059+0100 [DEBUG] Successfully exposed service: id=7c23e088-ee1c-469c-bfc2-3297e1aaa0e4 -2022-04-05T15:32:31.059+0100 [ERROR] 2022-04-05T15:32:31.059+0100 [DEBUG] Successfully exposed service: id=68ee8606-a5e9-4af9-ae3c-515ba6bc8ffa -2022-04-05T15:32:31.060+0100 [ERROR] 2022-04-05T15:32:31.060+0100 [DEBUG] Successfully exposed service: id=76ca1c24-743d-4a43-a588-ff5c0acf25fe -2022-04-05T15:32:31.104+0100 [ERROR] 2022-04-05T15:32:31.104+0100 [DEBUG] Remove container from default networks: ref=fetch_consul_resources.remote_exec -2022-04-05T15:32:31.107+0100 [ERROR] 2022-04-05T15:32:31.107+0100 [DEBUG] Attaching container to network: ref=380ee5bda04929cade10544d9994251c3ed5a8b96c37fe65b349c1af79db229f network=dc1 -2022-04-05T15:32:31.112+0100 [ERROR] 2022-04-05T15:32:31.112+0100 [DEBUG] Disconnectng network: name=bridge ref=fetch_consul_resources.remote_exec -2022-04-05T15:32:31.427+0100 [ERROR] 2022-04-05T15:32:31.427+0100 [DEBUG] Using Kubernetes config: ref=prometheus path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:31.428+0100 [ERROR] 2022-04-05T15:32:31.428+0100 [DEBUG] Creating chart from config: ref=prometheus chart=prometheus/kube-prometheus-stack -2022-04-05T15:32:31.583+0100 [ERROR] 2022-04-05T15:32:31.583+0100 [INFO] Applying Kubernetes configuration: ref=grafana_secret config=["/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml"] -2022-04-05T15:32:31.584+0100 [ERROR] 2022-04-05T15:32:31.584+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/grafana_secret.yaml -2022-04-05T15:32:31.844+0100 [ERROR] 2022-04-05T15:32:31.844+0100 [DEBUG] Port 8501 -Fetching resources from running cluster, acls_enabled: true, tls_enabled true -2022-04-05T15:32:32.160+0100 [ERROR] 2022-04-05T15:32:32.160+0100 [DEBUG] Forcefully remove: container=380ee5bda04929cade10544d9994251c3ed5a8b96c37fe65b349c1af79db229f -2022-04-05T15:32:32.831+0100 [ERROR] 2022-04-05T15:32:32.831+0100 [DEBUG] Loading chart: ref=prometheus path=/home/nicj/.shipyard/helm_charts/cache/kube-prometheus-stack-32.0.0.tgz -2022-04-05T15:32:32.844+0100 [ERROR] 2022-04-05T15:32:32.844+0100 [DEBUG] Using Values: ref=prometheus values="map[alertmanager:map[enabled:false] defaultRules:map[create:false] grafana:map[enabled:false] serviceMonitor:map[enabled:false]]" -2022-04-05T15:32:32.844+0100 [DEBUG] Validate chart: ref=prometheus -2022-04-05T15:32:32.844+0100 [DEBUG] Run chart: ref=prometheus -2022-04-05T15:32:32.858+0100 [ERROR] 2022-04-05T15:32:32.858+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:32.905+0100 [ERROR] 2022-04-05T15:32:32.904+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:32.961+0100 [ERROR] 2022-04-05T15:32:32.961+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:32.972+0100 [ERROR] 2022-04-05T15:32:32.972+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:33.007+0100 [ERROR] 2022-04-05T15:32:33.006+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:33.067+0100 [ERROR] 2022-04-05T15:32:33.067+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:33.079+0100 [ERROR] 2022-04-05T15:32:33.079+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:33.125+0100 [ERROR] 2022-04-05T15:32:33.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:33.165+0100 [ERROR] 2022-04-05T15:32:33.165+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Clearing discovery cache" -2022-04-05T15:32:33.165+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="beginning wait for 8 resources with timeout of 1m0s" -2022-04-05T15:32:36.542+0100 [ERROR] 2022-04-05T15:32:36.541+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:36.818+0100 [ERROR] 2022-04-05T15:32:36.818+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-05T15:32:36.821+0100 [ERROR] 2022-04-05T15:32:36.821+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:37.107+0100 [ERROR] 2022-04-05T15:32:37.107+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:37.113+0100 [ERROR] 2022-04-05T15:32:37.113+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-05T15:32:37.116+0100 [ERROR] 2022-04-05T15:32:37.116+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:37.389+0100 [ERROR] 2022-04-05T15:32:37.389+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:37.394+0100 [ERROR] 2022-04-05T15:32:37.394+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-05T15:32:37.397+0100 [ERROR] 2022-04-05T15:32:37.397+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:37.678+0100 [ERROR] 2022-04-05T15:32:37.678+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:37.683+0100 [ERROR] 2022-04-05T15:32:37.683+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-05T15:32:37.685+0100 [ERROR] 2022-04-05T15:32:37.685+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:37.963+0100 [ERROR] 2022-04-05T15:32:37.963+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:37.969+0100 [ERROR] 2022-04-05T15:32:37.969+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-05T15:32:37.971+0100 [ERROR] 2022-04-05T15:32:37.971+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:38.241+0100 [ERROR] 2022-04-05T15:32:38.240+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:38.245+0100 [ERROR] 2022-04-05T15:32:38.245+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-05T15:32:38.247+0100 [ERROR] 2022-04-05T15:32:38.247+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-create\" not found" -2022-04-05T15:32:38.520+0100 [ERROR] 2022-04-05T15:32:38.520+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:38.524+0100 [ERROR] 2022-04-05T15:32:38.524+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-create with timeout of 0s" -2022-04-05T15:32:38.526+0100 [ERROR] 2022-04-05T15:32:38.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: ADDED" -2022-04-05T15:32:38.526+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:38.543+0100 [ERROR] 2022-04-05T15:32:38.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-05T15:32:38.543+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:40.880+0100 [ERROR] 2022-04-05T15:32:40.880+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-05T15:32:40.880+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-create: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:40.891+0100 [ERROR] 2022-04-05T15:32:40.891+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-create: MODIFIED" -2022-04-05T15:32:40.893+0100 [ERROR] 2022-04-05T15:32:40.893+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-05T15:32:40.902+0100 [ERROR] 2022-04-05T15:32:40.902+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-05T15:32:40.913+0100 [ERROR] 2022-04-05T15:32:40.913+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-05T15:32:40.918+0100 [ERROR] 2022-04-05T15:32:40.918+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-05T15:32:40.922+0100 [ERROR] 2022-04-05T15:32:40.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-05T15:32:40.927+0100 [ERROR] 2022-04-05T15:32:40.927+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-create\" Job" -2022-04-05T15:32:40.930+0100 [ERROR] 2022-04-05T15:32:40.930+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 36 resource(s)" -2022-04-05T15:32:41.121+0100 [ERROR] 2022-04-05T15:32:41.121+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-05T15:32:41.125+0100 [ERROR] 2022-04-05T15:32:41.125+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="serviceaccounts \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:41.404+0100 [ERROR] 2022-04-05T15:32:41.404+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:41.409+0100 [ERROR] 2022-04-05T15:32:41.409+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-05T15:32:41.411+0100 [ERROR] 2022-04-05T15:32:41.411+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterroles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:41.686+0100 [ERROR] 2022-04-05T15:32:41.686+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:41.691+0100 [ERROR] 2022-04-05T15:32:41.691+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-05T15:32:41.694+0100 [ERROR] 2022-04-05T15:32:41.694+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="clusterrolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:41.994+0100 [ERROR] 2022-04-05T15:32:41.994+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:41.999+0100 [ERROR] 2022-04-05T15:32:41.999+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-05T15:32:42.001+0100 [ERROR] 2022-04-05T15:32:42.001+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="roles.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:42.290+0100 [ERROR] 2022-04-05T15:32:42.290+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:42.296+0100 [ERROR] 2022-04-05T15:32:42.296+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-05T15:32:42.299+0100 [ERROR] 2022-04-05T15:32:42.299+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="rolebindings.rbac.authorization.k8s.io \"prometheus-kube-prometheus-admission\" not found" -2022-04-05T15:32:42.611+0100 [ERROR] 2022-04-05T15:32:42.611+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:42.616+0100 [ERROR] 2022-04-05T15:32:42.616+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-05T15:32:42.619+0100 [ERROR] 2022-04-05T15:32:42.619+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="jobs.batch \"prometheus-kube-prometheus-admission-patch\" not found" -2022-04-05T15:32:42.906+0100 [ERROR] 2022-04-05T15:32:42.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="creating 1 resource(s)" -2022-04-05T15:32:42.909+0100 [ERROR] 2022-04-05T15:32:42.909+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Watching for changes to Job prometheus-kube-prometheus-admission-patch with timeout of 0s" -2022-04-05T15:32:42.911+0100 [ERROR] 2022-04-05T15:32:42.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: ADDED" -2022-04-05T15:32:42.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:42.922+0100 [ERROR] 2022-04-05T15:32:42.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-05T15:32:42.922+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 1, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:44.645+0100 [ERROR] 2022-04-05T15:32:44.645+0100 [INFO] Please wait, still creating resources [Elapsed Time: 90.000930] -2022-04-05T15:32:45.881+0100 [ERROR] 2022-04-05T15:32:45.881+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-05T15:32:45.881+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="prometheus-kube-prometheus-admission-patch: Jobs active: 0, jobs failed: 0, jobs succeeded: 0" -2022-04-05T15:32:45.889+0100 [ERROR] 2022-04-05T15:32:45.889+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Add/Modify event for prometheus-kube-prometheus-admission-patch: MODIFIED" -2022-04-05T15:32:45.891+0100 [ERROR] 2022-04-05T15:32:45.891+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ServiceAccount" -2022-04-05T15:32:45.898+0100 [ERROR] 2022-04-05T15:32:45.898+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRole" -2022-04-05T15:32:45.906+0100 [ERROR] 2022-04-05T15:32:45.906+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" ClusterRoleBinding" -2022-04-05T15:32:45.911+0100 [ERROR] 2022-04-05T15:32:45.911+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" Role" -2022-04-05T15:32:45.916+0100 [ERROR] 2022-04-05T15:32:45.916+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission\" RoleBinding" -2022-04-05T15:32:45.921+0100 [ERROR] 2022-04-05T15:32:45.921+0100 [DEBUG] Helm debug: name=prometheus chart=prometheus/kube-prometheus-stack message="Starting delete for \"prometheus-kube-prometheus-admission-patch\" Job" -2022-04-05T15:32:46.202+0100 [ERROR] 2022-04-05T15:32:46.201+0100 [DEBUG] Health checking pods: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-05T15:32:48.207+0100 [ERROR] 2022-04-05T15:32:48.207+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-stjqq namespace=monitoring type=Ready value=False -2022-04-05T15:32:50.213+0100 [ERROR] 2022-04-05T15:32:50.213+0100 [DEBUG] Pod not ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml pod=prometheus-kube-state-metrics-57c988498f-stjqq namespace=monitoring type=Ready value=False -2022-04-05T15:32:52.218+0100 [ERROR] 2022-04-05T15:32:52.218+0100 [DEBUG] Pods ready: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml selector=release=prometheus -2022-04-05T15:32:52.218+0100 [ERROR] 2022-04-05T15:32:52.218+0100 [INFO] Applying Kubernetes configuration: ref=prometheus config=["/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml"] -2022-04-05T15:32:52.218+0100 [INFO] Creating Helm chart: ref=loki -2022-04-05T15:32:52.218+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-05T15:32:52.219+0100 [ERROR] 2022-04-05T15:32:52.219+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/monitoring/prometheus_operator.yaml -2022-04-05T15:32:52.432+0100 [ERROR] 2022-04-05T15:32:52.432+0100 [DEBUG] Using Kubernetes config: ref=loki path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:52.432+0100 [ERROR] 2022-04-05T15:32:52.432+0100 [DEBUG] Creating chart from config: ref=loki chart=grafana/loki -2022-04-05T15:32:53.117+0100 [ERROR] 2022-04-05T15:32:53.117+0100 [DEBUG] Loading chart: ref=loki path=/home/nicj/.shipyard/helm_charts/cache/loki-2.9.1.tgz -2022-04-05T15:32:53.118+0100 [ERROR] 2022-04-05T15:32:53.118+0100 [DEBUG] Using Values: ref=loki values=map[] -2022-04-05T15:32:53.118+0100 [DEBUG] Validate chart: ref=loki -2022-04-05T15:32:53.118+0100 [DEBUG] Run chart: ref=loki -2022-04-05T15:32:53.352+0100 [ERROR] W0405 15:32:53.352927 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:53.368+0100 [ERROR] 2022-04-05T15:32:53.368+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 1 resource(s)" -2022-04-05T15:32:53.377+0100 [ERROR] 2022-04-05T15:32:53.377+0100 [DEBUG] Helm debug: name=loki chart=grafana/loki message="creating 8 resource(s)" -2022-04-05T15:32:53.381+0100 [ERROR] W0405 15:32:53.381316 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:53.412+0100 [ERROR] 2022-04-05T15:32:53.412+0100 [INFO] Creating Helm chart: ref=promtail -2022-04-05T15:32:53.412+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-05T15:32:53.412+0100 [DEBUG] Using Kubernetes config: ref=promtail path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:53.412+0100 [ERROR] 2022-04-05T15:32:53.412+0100 [DEBUG] Creating chart from config: ref=promtail chart=grafana/promtail -2022-04-05T15:32:53.765+0100 [ERROR] 2022-04-05T15:32:53.765+0100 [DEBUG] Loading chart: ref=promtail path=/home/nicj/.shipyard/helm_charts/cache/promtail-3.11.0.tgz -2022-04-05T15:32:53.766+0100 [ERROR] 2022-04-05T15:32:53.766+0100 [DEBUG] Using Values: ref=promtail values=map[config:map[lokiAddress:http://loki:3100/loki/api/v1/push]] -2022-04-05T15:32:53.766+0100 [DEBUG] Validate chart: ref=promtail -2022-04-05T15:32:53.766+0100 [DEBUG] Run chart: ref=promtail -2022-04-05T15:32:54.015+0100 [ERROR] 2022-04-05T15:32:54.015+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 1 resource(s)" -2022-04-05T15:32:54.024+0100 [ERROR] 2022-04-05T15:32:54.023+0100 [DEBUG] Helm debug: name=promtail chart=grafana/promtail message="creating 5 resource(s)" -2022-04-05T15:32:54.049+0100 [ERROR] 2022-04-05T15:32:54.049+0100 [INFO] Creating Helm chart: ref=tempo -2022-04-05T15:32:54.049+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-05T15:32:54.049+0100 [DEBUG] Using Kubernetes config: ref=tempo path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:54.050+0100 [ERROR] 2022-04-05T15:32:54.050+0100 [DEBUG] Creating chart from config: ref=tempo chart=grafana/tempo -2022-04-05T15:32:54.656+0100 [ERROR] 2022-04-05T15:32:54.656+0100 [DEBUG] Loading chart: ref=tempo path=/home/nicj/.shipyard/helm_charts/cache/tempo-0.13.1.tgz -2022-04-05T15:32:54.656+0100 [ERROR] 2022-04-05T15:32:54.656+0100 [DEBUG] Using Values: ref=tempo values="map[tempo:map[receivers:map[jaeger:map[protocols:map[grpc:map[endpoint:0.0.0.0:14250] thrift_binary:map[endpoint:0.0.0.0:6832] thrift_compact:map[endpoint:0.0.0.0:6831] thrift_http:map[endpoint:0.0.0.0:14268]]] zipkin:map[]]]]" -2022-04-05T15:32:54.656+0100 [DEBUG] Validate chart: ref=tempo -2022-04-05T15:32:54.656+0100 [DEBUG] Run chart: ref=tempo -2022-04-05T15:32:54.922+0100 [ERROR] 2022-04-05T15:32:54.922+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 1 resource(s)" -2022-04-05T15:32:54.934+0100 [ERROR] 2022-04-05T15:32:54.934+0100 [DEBUG] Helm debug: name=tempo chart=grafana/tempo message="creating 5 resource(s)" -2022-04-05T15:32:54.967+0100 [ERROR] 2022-04-05T15:32:54.967+0100 [INFO] Creating Helm chart: ref=grafana -2022-04-05T15:32:54.967+0100 [DEBUG] Updating Helm chart repository: name=grafana url=https://grafana.github.io/helm-charts -2022-04-05T15:32:54.967+0100 [DEBUG] Using Kubernetes config: ref=grafana path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:54.968+0100 [ERROR] 2022-04-05T15:32:54.968+0100 [DEBUG] Creating chart from config: ref=grafana chart=grafana/grafana -2022-04-05T15:32:55.304+0100 [ERROR] 2022-04-05T15:32:55.304+0100 [DEBUG] Loading chart: ref=grafana path=/home/nicj/.shipyard/helm_charts/cache/grafana-6.21.2.tgz -2022-04-05T15:32:55.306+0100 [ERROR] 2022-04-05T15:32:55.306+0100 [DEBUG] Using Values: ref=grafana values="map[admin:map[existingSecret:grafana-password] datasources:map[datasources.yaml:map[apiVersion:1 datasources:[map[isDefault:true name:Prometheus type:prometheus url:http://prometheus-kube-prometheus-prometheus:9090] map[isDefault:false jsonData:map[derivedFields:[map[datasourceUid:tempo_uid matcherRegex:trace_id=(\\w+) name:trace_id url:$${__value.raw}]] maxLines:1000] name:Loki type:loki uid:loki_uid url:http://loki:3100] map[isDefault:false name:Tempo type:tempo uid:tempo_uid url:http://tempo:3100]]]] sidecar:map[dashboards:map[enabled:true]]]" -2022-04-05T15:32:55.306+0100 [DEBUG] Validate chart: ref=grafana -2022-04-05T15:32:55.306+0100 [DEBUG] Run chart: ref=grafana -2022-04-05T15:32:55.675+0100 [ERROR] W0405 15:32:55.675792 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:55.678+0100 [ERROR] W0405 15:32:55.678489 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:55.713+0100 [ERROR] 2022-04-05T15:32:55.713+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 1 resource(s)" -2022-04-05T15:32:55.734+0100 [ERROR] 2022-04-05T15:32:55.734+0100 [DEBUG] Helm debug: name=grafana chart=grafana/grafana message="creating 15 resource(s)" -2022-04-05T15:32:55.740+0100 [ERROR] W0405 15:32:55.740055 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:55.741+0100 [ERROR] W0405 15:32:55.740951 25671 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ -2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [INFO] Generating template: ref=monitor_ingress_gateway output=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-05T15:32:55.820+0100 [DEBUG] Template content: ref=monitor_ingress_gateway - source= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: #{{ .Vars.monitoring_namespace }} - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: #{{ .Vars.consul_namespace }} - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [DEBUG] Template output: ref=monitor_ingress_gateway - destination= - | # ServiceMonitor to configure Prometheus to scrape metrics from applications in the consul namespace - | --- - | apiVersion: monitoring.coreos.com/v1 - | kind: ServiceMonitor - | metadata: - | labels: - | release: prometheus - | name: ingress-gateway - | namespace: monitoring - | spec: - | endpoints: - | - interval: 15s - | port: metrics - | jobLabel: ingress-gateway - | namespaceSelector: - | matchNames: - | - consul - | selector: - | matchLabels: - | app: metrics - | - | # Service to configure Prometheus to scrape metrics from the ingress-gateway in the consul namespace - | --- - | apiVersion: v1 - | kind: Service - | metadata: - | name: ingress-gateway-metrics - | namespace: consul - | labels: - | app: metrics - | spec: - | selector: - | component: ingress-gateway - | ports: - | - name: metrics - | protocol: TCP - | port: 20200 - | targetPort: 20200 -2022-04-05T15:32:55.820+0100 [ERROR] 2022-04-05T15:32:55.820+0100 [INFO] Applying Kubernetes configuration: ref=monitor_ingress_gateway config=["/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml"] -2022-04-05T15:32:55.821+0100 [ERROR] 2022-04-05T15:32:55.821+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/.shipyard/data/consul_kubernetes/ingress-service-monitor.yaml -2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [INFO] Creating Helm chart: ref=consul-release-controller -2022-04-05T15:32:55.941+0100 [INFO] Applying Kubernetes configuration: ref=application config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/../../example/kubernetes/"] -2022-04-05T15:32:55.941+0100 [DEBUG] Using Kubernetes config: ref=consul-release-controller path=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml -2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [INFO] Applying Kubernetes configuration: ref=upstreams-proxy config=["/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml"] -2022-04-05T15:32:55.941+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [DEBUG] Creating chart from config: ref=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-05T15:32:55.941+0100 [DEBUG] Loading chart: ref=consul-release-controller path=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller -2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.942+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/shipyard/kubernetes/fake-controller.yaml -2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.941+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/api.yaml -2022-04-05T15:32:55.942+0100 [ERROR] 2022-04-05T15:32:55.942+0100 [DEBUG] Using Values: ref=consul-release-controller values="map[acls:map[enabled:true] autoencrypt:map[enabled:true] controller:map[container_config:map[image:map[repository:nicholasjackson/consul-release-controller tag:]] enabled:false] webhook:map[namespace:shipyard service:controller-webhook]]" -2022-04-05T15:32:55.942+0100 [DEBUG] Validate chart: ref=consul-release-controller -2022-04-05T15:32:55.942+0100 [DEBUG] Run chart: ref=consul-release-controller -2022-04-05T15:32:56.086+0100 [ERROR] 2022-04-05T15:32:56.086+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/application-dashboard.yaml -2022-04-05T15:32:56.107+0100 [ERROR] 2022-04-05T15:32:56.106+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/consul-config.yaml -2022-04-05T15:32:56.184+0100 [ERROR] 2022-04-05T15:32:56.184+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest-dashboard.yaml -2022-04-05T15:32:56.218+0100 [ERROR] 2022-04-05T15:32:56.218+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/loadtest.yaml -2022-04-05T15:32:56.265+0100 [ERROR] 2022-04-05T15:32:56.265+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/metrics.yaml -2022-04-05T15:32:56.273+0100 [ERROR] 2022-04-05T15:32:56.273+0100 [DEBUG] Applying Kubernetes config: config=/home/nicj/.shipyard/config/dc1/kubeconfig.yaml file=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/example/kubernetes/web.yaml -2022-04-05T15:32:56.404+0100 [ERROR] 2022-04-05T15:32:56.404+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 1 resource(s)" -2022-04-05T15:32:56.418+0100 [ERROR] 2022-04-05T15:32:56.418+0100 [DEBUG] Helm debug: name=consul-release-controller chart=/home/nicj/go/src/github.com/nicholasjackson/consul-release-controller/deploy/kubernetes/charts/consul-release-controller message="creating 13 resource(s)" -2022-04-05T15:32:56.582+0100 [ERROR] 2022-04-05T15:32:56.582+0100 [INFO] Remote executing command: ref=exec_standalone command=sh args=["/output/fetch_certs.sh"] image="&{shipyardrun/tools:v0.6.0 }" -2022-04-05T15:32:56.618+0100 [ERROR] 2022-04-05T15:32:56.617+0100 [DEBUG] Image exists in local cache: image=shipyardrun/tools:v0.6.0 -2022-04-05T15:32:56.617+0100 [DEBUG] Creating Docker Container: ref=exec_standalone.remote_exec -2022-04-05T15:32:56.791+0100 [ERROR] 2022-04-05T15:32:56.791+0100 [DEBUG] Remove container from default networks: ref=exec_standalone.remote_exec -2022-04-05T15:32:56.795+0100 [ERROR] 2022-04-05T15:32:56.795+0100 [DEBUG] Attaching container to network: ref=219f995de5201af86321523f1ef77066f082118c37b7d0a0eeecac4749d6e6a0 network=dc1 -2022-04-05T15:32:56.805+0100 [ERROR] 2022-04-05T15:32:56.805+0100 [DEBUG] Disconnectng network: name=bridge ref=exec_standalone.remote_exec -2022-04-05T15:32:58.073+0100 [ERROR] 2022-04-05T15:32:58.073+0100 [DEBUG] Forcefully remove: container=219f995de5201af86321523f1ef77066f082118c37b7d0a0eeecac4749d6e6a0 -2022-04-05T15:32:58.772+0100 [ERROR] 2022-04-05T15:32:58.772+0100 [DEBUG] Health check urls for browser windows: count=0 -2022-04-05T15:32:58.772+0100 [DEBUG] Browser windows open - -######################################################## - -Title Development setup -Author Nic Jackson -2022-04-05T15:32:58.772+0100 [ERROR] -• Consul: https://localhost:8501 -• Grafana: https://localhost:8080 -• Application: http://localhost:18080 - -This blueprint defines 13 output variables. - -You can set output variables as environment variables for your current terminal session using the following command: - -eval $(shipyard env) - -To list output variables use the command: - -shipyard output -2022-04-05T15:32:59.384+0100 [INFO] Starting controller -2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Handle event: event=event_configure state=state_start -2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Log state: event=event_configure state=state_start -2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Configure: state=state_configure -2022-04-05T15:33:03.960+0100 [DEBUG] statemachine: Log state: event=event_configure release=api state=state_configure -2022-04-05T15:33:03.960+0100 [INFO] releaser-plugin-consul: Initializing deployment: service=api -2022-04-05T15:33:03.960+0100 [DEBUG] releaser-plugin-consul: Create service defaults: service=api -2022-04-05T15:33:06.989+0100 [DEBUG] releaser-plugin-consul: Create service resolver: service=api -2022-04-05T15:33:08.012+0100 [DEBUG] releaser-plugin-consul: Create service router: service=api -2022-04-05T15:33:08.971+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:33:09.024+0100 [DEBUG] releaser-plugin-consul: Create upstream service router: service=api -2022-04-05T15:33:10.052+0100 [DEBUG] releaser-plugin-consul: Create service intentions for the upstreams: service=api -2022-04-05T15:33:13.973+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:33:15.067+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-05T15:33:15.071+0100 [DEBUG] runtime-plugin-kubernetes: No candidate deployment, nothing to do -2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Configure completed successfully -2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Handle event: event=event_configured state=state_configure -2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Log state: event=event_configured state=state_configure -2022-04-05T15:33:15.071+0100 [DEBUG] statemachine: Log state: event=event_configured release=api state=state_idle -2022-04-05T15:33:18.974+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:33:18.995+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-05T15:33:18.995+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle -2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle -2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle -2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Deploy: state=state_deploy -2022-04-05T15:33:18.995+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy -2022-04-05T15:33:18.997+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:19.000+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-05T15:33:19.000+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:20.001+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:20.004+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:20.004+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:21.004+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:21.008+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:21.008+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:22.009+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:22.012+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:22.012+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:23.012+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:23.015+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:23.015+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:23.996+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-05T15:33:24.001+0100 [DEBUG] runtime-plugin-kubernetes: Cloning deployment: name=api-deployment namespace=default -2022-04-05T15:33:24.006+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment-primary namespaces=default -2022-04-05T15:33:24.008+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:24.011+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=0 -2022-04-05T15:33:24.011+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:24.016+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:24.020+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:24.020+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:25.011+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:25.014+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:25.014+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:25.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:25.024+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:25.024+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:26.015+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:26.018+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:26.018+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:26.025+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:26.027+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:26.027+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:27.018+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:27.021+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:27.021+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:27.028+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:27.030+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:27.030+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:28.021+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:28.025+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:28.025+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:28.031+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:28.033+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:28.033+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:29.026+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:29.029+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:29.029+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:29.034+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:29.036+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:29.036+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:30.030+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:30.033+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:30.033+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:30.037+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:30.040+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:30.040+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:31.033+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:31.037+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:31.037+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:31.041+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:31.044+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:31.044+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:32.037+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:32.041+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:32.041+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:32.044+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:32.048+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:32.048+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:33.041+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:33.044+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:33.044+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:33.048+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:33.051+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:33.051+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:34.044+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:34.048+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:34.048+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:34.052+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:34.054+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:34.054+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:35.048+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:35.051+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:35.051+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:35.055+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:35.058+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:35.058+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:36.051+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:36.054+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:36.054+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:36.059+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:36.062+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:36.062+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:37.055+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:37.058+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:37.058+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:37.062+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:37.064+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:37.064+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:38.059+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:38.062+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:38.062+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:38.065+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:38.067+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:38.067+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:33:39.063+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:39.066+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:39.066+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:39.068+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:33:39.071+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:33:39.071+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-05T15:33:39.081+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:39.084+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:39.084+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:40.067+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:40.070+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:40.070+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:40.085+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:40.088+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:40.088+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:41.070+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:41.073+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:41.073+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:41.088+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:41.091+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:41.091+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:42.073+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:42.076+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:42.076+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:42.092+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:42.095+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:42.095+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:43.076+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:43.079+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:43.079+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:43.096+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:43.099+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:33:43.099+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:44.080+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:44.083+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:33:44.083+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:44.083+0100 [DEBUG] runtime-plugin-kubernetes: Successfully cloned kubernetes deployment: name=api-deployment-primary namespace=default -2022-04-05T15:33:44.083+0100 [INFO] runtime-plugin-kubernetes: Init primary complete: name=api-deployment namespace=default -2022-04-05T15:33:44.083+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-05T15:33:44.086+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-05T15:33:44.092+0100 [DEBUG] statemachine: Deploy completed, created primary, waiting for next candidate deployment -2022-04-05T15:33:44.099+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:33:44.102+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:33:44.102+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-05T15:33:49.093+0100 [INFO] runtime-plugin-kubernetes: Remove candidate deployment: name=api-deployment namespace=default -2022-04-05T15:33:49.102+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-05T15:33:49.102+0100 [DEBUG] kubernetes-webhook: Ignore deployment, resource was modified by the controller: name=api-deployment namespace=default labels="map[app:api_v2 consul-release-controller-version:2296]" -2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Handle event: event=event_complete state=state_deploy -2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Log state: event=event_complete state=state_deploy -2022-04-05T15:33:49.106+0100 [DEBUG] statemachine: Log state: event=event_complete release=api state=state_idle -2022-04-05T15:34:00.153+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:00.169+0100 [DEBUG] kubernetes-webhook: Handle deployment admission: deployment=api-deployment namespaces=default -2022-04-05T15:34:00.169+0100 [DEBUG] kubernetes-webhook: Found existing release: name=api-deployment namespace=default state=state_idle -2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Handle event: event=event_deploy state=state_idle -2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Log state: event=event_deploy state=state_idle -2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Deploy: state=state_deploy -2022-04-05T15:34:00.169+0100 [DEBUG] statemachine: Log state: event=event_deploy release=api state=state_deploy -2022-04-05T15:34:00.172+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:00.175+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=0 -2022-04-05T15:34:00.175+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:01.175+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:01.179+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:01.179+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:02.179+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:02.182+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:02.182+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:03.183+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:03.185+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:03.186+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:04.186+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:04.188+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:04.188+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:05.170+0100 [INFO] runtime-plugin-kubernetes: Init the Primary deployment: name=api-deployment namespace=default -2022-04-05T15:34:05.172+0100 [DEBUG] runtime-plugin-kubernetes: Primary deployment already exists: name=api-deployment-primary namespace=default -2022-04-05T15:34:05.172+0100 [DEBUG] releaser-plugin-consul: Checking service is healthy: name=api -2022-04-05T15:34:05.175+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=100 traffic_canary=0 -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Deploy completed, executing strategy -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Handle event: event=event_deployed state=state_deploy -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Log state: event=event_deployed state=state_deploy -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Log state: event=event_deployed release=api state=state_monitor -2022-04-05T15:34:05.185+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:34:05.185+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:05.189+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:05.191+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=503 -2022-04-05T15:34:05.191+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:05.192+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:05.192+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:05.195+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] -2022-04-05T15:34:06.193+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:06.196+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:06.196+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:07.196+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:07.200+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:07.200+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:08.201+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:08.204+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:08.204+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:09.204+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:09.207+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:09.207+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:10.207+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:10.210+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:10.210+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:11.211+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:11.213+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:11.213+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:12.214+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:12.217+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:12.217+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:13.217+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:13.220+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:13.220+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:14.220+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:14.223+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:14.223+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:15.196+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:15.200+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=503 -2022-04-05T15:34:15.200+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:15.202+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] -2022-04-05T15:34:15.224+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:15.226+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=0 desired_replicas=3 -2022-04-05T15:34:15.226+0100 [DEBUG] kubernetes-client: Deployment not healthy: name=api-deployment namespace=default -2022-04-05T15:34:16.226+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:16.229+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:34:16.229+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-05T15:34:16.239+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment-primary namespace=default -2022-04-05T15:34:16.241+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment-primary namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:34:16.242+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment-primary namespace=default -2022-04-05T15:34:16.249+0100 [DEBUG] kubernetes-client: Checking health: name=api-deployment namespace=default -2022-04-05T15:34:16.251+0100 [DEBUG] kubernetes-client: Deployment health: name=api-deployment namespace=default status_replicas=3 desired_replicas=3 -2022-04-05T15:34:16.251+0100 [DEBUG] kubernetes-client: Deployment healthy: name=api-deployment namespace=default -2022-04-05T15:34:16.261+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:21.262+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:25.202+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:25.227+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:34:25.227+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:25.229+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] -2022-04-05T15:34:26.263+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:31.264+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:35.229+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:35.246+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:34:35.246+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:35.259+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=[] value_type=model.Vector warnings=[] -2022-04-05T15:34:36.265+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:41.266+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:45.260+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:45.283+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:34:45.283+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:45.285+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169285.284]"] value_type=model.Vector warnings=[] -2022-04-05T15:34:45.286+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:34:45.288+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169285.286]"] value_type=model.Vector warnings=[] -2022-04-05T15:34:46.268+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:51.268+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:34:55.288+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:34:55.304+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:34:55.304+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:34:55.307+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169295.305]"] value_type=model.Vector warnings=[] -2022-04-05T15:34:55.307+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:34:55.309+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169295.307]"] value_type=model.Vector warnings=[] -2022-04-05T15:34:56.269+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:01.270+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:05.309+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:35:05.329+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:35:05.329+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:35:05.331+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169305.33]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:05.331+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:35:05.333+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169305.332]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:05.333+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=-1 -2022-04-05T15:35:05.333+0100 [DEBUG] strategy-plugin-canary: Waiting for initial grace before starting rollout: type=canary delay=30 -2022-04-05T15:35:06.271+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:11.273+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:16.274+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:21.275+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:26.276+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:31.277+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:35.334+0100 [DEBUG] strategy-plugin-canary: Strategy setup: type=canary traffic=10 -2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-05T15:35:35.334+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-05T15:35:35.334+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=90 traffic_canary=10 -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-05T15:35:35.346+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:35:35.346+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:35:35.363+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:35:35.363+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:35:35.365+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => NaN @[1649169335.364]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:35.365+0100 [DEBUG] monitor-plugin-prometheus: query value less than min: name=request-success preset=envoy-request-success value=-9223372036854775808 -2022-04-05T15:35:36.278+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:41.278+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:45.365+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:35:45.383+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:35:45.383+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:35:45.386+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169345.384]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:45.386+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:35:45.388+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169345.386]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:46.280+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:51.280+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:35:55.389+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:35:55.404+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:35:55.405+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:35:55.407+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169355.405]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:55.407+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:35:55.409+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.849999999999998 @[1649169355.407]"] value_type=model.Vector warnings=[] -2022-04-05T15:35:56.282+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:01.283+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:05.409+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:36:05.426+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:36:05.426+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:36:05.428+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169365.426]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:05.428+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:36:05.430+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169365.428]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:05.430+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=10 -2022-04-05T15:36:06.284+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:11.285+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:16.285+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:21.287+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:26.288+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:31.289+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:35.431+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-05T15:36:35.431+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:36:35.434+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169395.431]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:35.434+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:36:35.436+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169395.434]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:35.436+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=30 -2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-05T15:36:35.436+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-05T15:36:35.436+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=70 traffic_canary=30 -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-05T15:36:35.442+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:36:35.442+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:36:35.458+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:36:35.458+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:36:35.460+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169395.458]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:35.460+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:36:35.462+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169395.461]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:36.290+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:41.291+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:45.463+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:36:45.480+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:36:45.480+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:36:45.482+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169405.481]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:45.482+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:36:45.484+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169405.483]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:46.292+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:51.294+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:36:55.484+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:36:55.502+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:36:55.502+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:36:55.504+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169415.503]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:55.504+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:36:55.506+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169415.505]"] value_type=model.Vector warnings=[] -2022-04-05T15:36:55.506+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=30 -2022-04-05T15:36:56.295+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:01.296+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:06.296+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:11.298+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:16.298+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:21.299+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:25.508+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-05T15:37:25.508+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:37:25.510+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169445.508]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:25.510+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:37:25.512+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169445.511]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:25.512+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=50 -2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-05T15:37:25.512+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-05T15:37:25.512+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=50 traffic_canary=50 -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-05T15:37:25.522+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:37:25.522+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:37:25.539+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:37:25.539+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:37:25.541+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169445.54]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:25.541+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:37:25.544+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169445.542]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:26.299+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:31.300+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:35.544+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:37:35.560+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:37:35.561+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:37:35.563+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169455.561]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:35.563+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:37:35.564+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169455.563]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:36.301+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:41.302+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:45.565+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:37:45.581+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:37:45.581+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:37:45.583+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169465.582]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:45.583+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:37:45.585+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169465.584]"] value_type=model.Vector warnings=[] -2022-04-05T15:37:45.585+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=50 -2022-04-05T15:37:46.303+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:51.303+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:37:56.304+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:01.306+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:06.306+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:11.307+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:15.586+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-05T15:38:15.586+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:38:15.588+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169495.587]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:15.588+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:38:15.590+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169495.589]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:15.590+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=70 -2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-05T15:38:15.590+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-05T15:38:15.590+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=30 traffic_canary=70 -2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:38:15.594+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-05T15:38:15.595+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:38:15.595+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:38:15.611+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:38:15.611+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:38:15.613+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169495.611]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:15.613+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:38:15.615+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169495.614]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:16.307+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:21.308+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:25.615+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:38:25.632+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:38:25.632+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:38:25.634+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169505.633]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:25.634+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:38:25.636+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169505.635]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:26.309+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:31.310+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:35.637+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:38:35.653+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:38:35.653+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:38:35.655+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169515.654]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:35.655+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:38:35.658+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169515.656]"] value_type=model.Vector warnings=[] -2022-04-05T15:38:35.658+0100 [INFO] strategy-plugin-canary: Executing strategy: type=canary traffic=70 -2022-04-05T15:38:36.311+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:41.312+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:46.313+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:51.314+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:38:56.315+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:39:01.316+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:39:05.658+0100 [DEBUG] strategy-plugin-canary: Checking metrics: type=canary -2022-04-05T15:39:05.658+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:39:05.660+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169545.659]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:05.660+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:39:05.662+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169545.661]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:05.662+0100 [DEBUG] strategy-plugin-canary: Strategy success: type=canary traffic=90 -2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Monitor checks completed, candidate healthy -2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Handle event: event=event_healthy state=state_monitor -2022-04-05T15:39:05.662+0100 [DEBUG] statemachine: Log state: event=event_healthy state=state_monitor -2022-04-05T15:39:05.663+0100 [DEBUG] statemachine: Scale: state=state_scale -2022-04-05T15:39:05.663+0100 [DEBUG] statemachine: Log state: event=event_healthy release=api state=state_scale -2022-04-05T15:39:05.663+0100 [INFO] releaser-plugin-consul: Scale deployment: name=api traffic_primary=10 traffic_canary=90 -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Scale completed successfully -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Handle event: event=event_scaled state=state_scale -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Log state: event=event_scaled state=state_scale -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Monitor: state=state_monitor -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Log state: event=event_scaled release=api state=state_monitor -2022-04-05T15:39:05.668+0100 [DEBUG] statemachine: Executing post deployment tests -2022-04-05T15:39:05.668+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:39:05.683+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:39:05.684+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:39:05.685+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169545.684]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:05.685+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:39:05.687+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.85 @[1649169545.686]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:06.317+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:39:11.318+0100 [INFO] release_handler: Release GET handler called -2022-04-05T15:39:15.688+0100 [DEBUG] monitor-plugin-test-http: Executing request to upstream: url=http://localhost:28080/ upstream=api.default -2022-04-05T15:39:15.705+0100 [DEBUG] monitor-plugin-test-http: Response from upstream: url=http://localhost:28080/ upstream=api.default status_code=200 -2022-04-05T15:39:15.705+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-success - query= - | - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)", - | envoy_cluster_name="local_app", - | envoy_response_code!~"5.*" - | }[30s] - | ) - | ) - | / - | sum( - | rate( - | envoy_cluster_upstream_rq{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) - | * 100 - -2022-04-05T15:39:15.707+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-success preset=envoy-request-success value=["{} => 100 @[1649169555.705]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:15.707+0100 [DEBUG] monitor-plugin-prometheus: querying prometheus: address=http://localhost:9090 name=request-duration - query= - | - | histogram_quantile( - | 0.99, - | sum( - | rate( - | envoy_cluster_upstream_rq_time_bucket{ - | namespace="default", - | envoy_cluster_name="local_app", - | pod=~"api-deployment-[0-9a-zA-Z]+(-[0-9a-zA-Z]+)" - | }[30s] - | ) - | ) by (le) - | ) - -2022-04-05T15:39:15.709+0100 [DEBUG] monitor-plugin-prometheus: query value returned: name=request-duration preset=envoy-request-duration value=["{} => 24.849999999999998 @[1649169555.707]"] value_type=model.Vector warnings=[] -2022-04-05T15:39:16.318+0100 [INFO] Shutting down server gracefully -2022-04-05T15:39:16.319+0100 [INFO] Shutting down listener -2022-04-05T15:39:16.319+0100 [INFO] Shutting down metrics -2022-04-05T15:39:16.320+0100 [INFO] Shutting down kubernetes controller -2022-04-05T15:39:16.320+0100 [INFO] kubernetes-controller: Stopping Kubernetes controller diff --git a/shipyard/kubernetes/controller.hcl b/shipyard/kubernetes/controller.hcl index d66eaa2..7d53da1 100644 --- a/shipyard/kubernetes/controller.hcl +++ b/shipyard/kubernetes/controller.hcl @@ -75,30 +75,51 @@ helm "consul_release_controller" { } // fetch the certifcates -template "certs_script" { +template "get_certs" { disabled = !var.helm_chart_install source = < /output/tls.crt +getSecret () { + kubectl get secret consul-release-controller-certificate -n consul -o json | \ + jq -r ".data.\"$1\"" | \ + base64 -d > /output/$1 -kubectl get secret consul-release-controller-certificate -n consul -o json | \ - jq -r '.data."tls.key"' | \ - base64 -d > /output/tls.key + [ -s /output/$1 ] || return 1 + + return 0 +} + +max_retry=5 +counter=0 +until getSecret "tls.crt" +do + sleep 10 + [[ $counter -eq $max_retry ]] && echo "Failed!" && exit 1 + echo "Trying again. Try #$counter" + ((counter++)) +done + +counter=0 +until getSecret "tls.key" +do + sleep 10 + [[ $counter -eq $max_retry ]] && echo "Failed!" && exit 1 + echo "Trying again. Try #$counter" + ((counter++)) +done EOF destination = "${data("kube_setup")}/fetch_certs.sh" } -exec_remote "exec_standalone" { +exec_remote "get_certs" { disabled = !var.helm_chart_install depends_on = [ "helm.consul_release_controller", - "template.certs_script", + "template.get_certs", ] network { From 9b8c74cfa04720d21b1a64bb68f563fce2852be3 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 24 Apr 2022 22:30:24 +0100 Subject: [PATCH 11/12] Write log output --- functional_tests/main.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/functional_tests/main.go b/functional_tests/main.go index 92ee9a1..35c1cb2 100644 --- a/functional_tests/main.go +++ b/functional_tests/main.go @@ -87,16 +87,11 @@ func initializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^I delete the Canary "([^"]*)"$`, iDeleteTheCanary) ctx.After(func(ctx context.Context, sc *godog.Scenario, scenarioError error) (context.Context, error) { - showLog := false - if scenarioError != nil { - showLog = true - } - if server != nil { err := server.Shutdown() if err != nil { logger.Error("Unable to shutdown server", "error", err) - showLog = true + scenarioError = err } } @@ -105,23 +100,26 @@ func initializeScenario(ctx *godog.ScenarioContext) { err := executeCommand([]string{"/usr/local/bin/shipyard", "destroy"}, false) if err != nil { logger.Error("Unable to destroy shipyard resources", "error", err) - showLog = true + scenarioError = err } } - if showLog && !*alwaysLog { + if scenarioError != nil && !*alwaysLog { pwd, _ := os.Getwd() logfile := path.Join(pwd, "tests.log") // create log file os.Remove(logfile) os.WriteFile(logfile, logStore.Bytes(), os.ModePerm) + d, _ := ioutil.ReadFile(logfile) + fmt.Printf("%s\n", string(d)) + fmt.Printf("Error log written to file %s", logfile) } // exit after the scenario when don't destroy is set if *dontDestroy { - if showLog { + if scenarioError != nil { os.Exit(1) } From b9ace4ea18545dc4f5b86c5fa6c56c7eafaf53b0 Mon Sep 17 00:00:00 2001 From: Nic Jackson Date: Sun, 24 Apr 2022 22:38:05 +0100 Subject: [PATCH 12/12] Add chart dependency --- .gitignore | 1 - .../charts/cert-manager-v1.8.0.tgz | Bin 0 -> 62023 bytes 2 files changed, 1 deletion(-) create mode 100644 deploy/kubernetes/charts/consul-release-controller/charts/cert-manager-v1.8.0.tgz diff --git a/.gitignore b/.gitignore index 62e9a3c..ad3596a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -*.tgz node_modules docs/.docusaurus docs/build \ No newline at end of file diff --git a/deploy/kubernetes/charts/consul-release-controller/charts/cert-manager-v1.8.0.tgz b/deploy/kubernetes/charts/consul-release-controller/charts/cert-manager-v1.8.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c04b5b79bd8fafc4c345558e2ac60b1122fbf511 GIT binary patch literal 62023 zcmV)SK(fCdiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{cH1_#IDG#0Q{Z#XZz=94$(9qRtOJ9;)c{EyM|!^3BzgXf2%7yofEdUka9;y=*A zR!7nBRm!reO z7Y8p!r!QU{oqaue_7ZC5A~{Agr80TEzaJtd3?&~YG#cEIxh#FtZv8*k$T%d3; zJ2Re=Vh&RZFp79u8gl8!4vloPu8P19LsKo6L`0k^!W6XdBT-V}=&syUilriAKjBjj z{~Km(x^qY74_w6ZcxO-^-T>X@V=_p{l zj!R7pf+GJj<$Riuso;4g^%!>$Vps#9sm9LY=N-v&5fSKbEx6rRR_T}CNuTCZg6};} zaw50R0G8AL=Z8n5&nxu*x&GYI{}1pyL1$!w^F$%D_zNU$xbpie^7_?a z!bOUeA~BlKgy;fiBucO#=pGA-#|e>0aWp0$l=a3;bWX= zrt{FK5&9ELAju6j-mw1(!4a})r^#&k1`(X z*|}P$y3&Q|O0!}y#?dh_&qxrg$T3nPC-CA4I+;!dnPNrIX_9L;amDS@eCL6KV!QmB z-3%r;(m)lu+)yvdQg{ltX!|&dh?E1Is~Lm;|Fo}1w*Mq(bpWlx(6Ad=I4(PMJy{-K zlPK5oz2pgv=4OV3Y1E335eOniVvyt{%T7efMN$0;x+V%Bc~8WcOATy3DI+zy!fZ

jN}EFVF*3GxP$DiJrc$nsTXZeKOoZDB;sr>seyklBpwSG(&y3BJOd5 z#zZ|3!rZ*2Zc`5uM*ssOX=zZv6k+NP6t+1%*_{cBBGdUX z`uQE~Q#H@XF}mVF%D>O_n!$S!z5xz_kj9nkTujL^Iw;9L+C z7IROX4eFtoPKi{e4tGPuY_97-QB&X;$r(O8dU1R}4n9AO<2W8oKA(IsiN5&q;7fcM z;TMw^N96Mt(b41}KAc38@fTzA{PQoL9bxk9`O)X(i}5%j<3o)%nloFbg3c!wTwMwx z2~!$%T9NOwi))k#eouik2@(^gC{83IDjEVgw@mF^%AANDytglp!j2o*3X7dQwydC^8^G23??#>Rdiin&<5$s{JdKro6glg6@BS3HUZi8|Nn}Wf{vR&^i$R~zk>Cx-W39zU% zqPU)CfPhLPo+eVZEe#&sS|4H45S3_37%}@kmyVTB@+5)pPWXf-Ss_FP(ix6p>i#S& zBf$US*iz_#IP@gCF2M*|3vDWn)Sc)Rfq9)=o|o`OqYQSQpyOLBzOwlXI6YIVQfG*$5d~5P#-vwgdm(G$Wv?E zj>s8`d2~kv{MnX%9{%Hk6M&fMu0Z-QRKD+(3P-HU z+eMI+-#b0S3FLG_BaL%zGn>7c5QE%W0T>KS`-7nPfIl!I27*k!@_7HfB*Cy0FPM)& zF_i!uEXGs`Eam|~Wgk$5yv1pjkiIVq@}%vOVnwdVzj7iKP-UU1svlp_)>ohP!*L2* zXW;7?fWBn+0MA0fxqkEdCKQ z9UCVpu(D@|uc^koOCBR9|7%HEk+*8+vD%%q4Z{M;+N7eN!Xo0pg2qBXd=H6JkNlFK~LXHO+B@en`app z8kL?@`#A}zkQ2yoI&7L&IERCpIRx*@s{(SKUD^d)u{yP004ECdE9spxaGfHFCrOE68>;0=siuyl)RJ?POM_$^x7vV!WkaZgepq>u89TD+}{Iq z^6Hh{TR48hlDP)X*EAtUO$^v<9rSkYd6K8Z&`SH`wdMi#&E^adoq@cPYKiKJ6<+j@ zlL||GOc$3t)|i&@c%jvd$FB-jSL&oq%a$Pmx*FElZrCe$@?yIUgVeI66~kp;OFxr5 z(PTw$su{l5I)XU{fvsq*R8Z?Du30nJxa{T1n5URBy$7y%t_V7MHbj5cde4Mw6f_n+ z<`{|=!w8ePplqrYpb}Td3>g!Tu0YvT=s&rDu5bQwg9M4Vh$Yg>dy*hUQzG@Qzj$-= z^4JKfnh8)rWN3RD4MzvMncLG`DxO~Q`0V2Pwxp_gl3Gm8%B&jB4_w?04KAE9>E!y| z3(m-{e{GB{hT?#@OvF7LaOf9$FYS(o@ZWCn=8GZxx4W~$cucOrG{c47er4*w<*^ov z^0!(A2C!VuXzDqi750rPa1lzJr7z!67T15V^id1rnc%4wxO1Qgo+H?eZV@ZxjM{>L)zH$&5?T6Up0* zL`ovcvRomlL>>XYVu>;$EN|3ul~#yb*-yRN5)>QYjPBo$hNIE`6Fiwvra8?0Xb^Fs zDM=s;8ccR&9A0b0J*m8NyD&b3eSRIyNSr5>P0y!{``0huk|;NJOh=C;8N5vdHm z4N!_zG<*3r(;L7XCHs&1^BtKVqY3B3F&1#DCwM}_A_(zJ1AvQTbk53O%(=vI`Q^Zx z<97V4EiL`J+8yRF*@f0LROJM^?Db~VXP*cb5g z2Qr>spYO6r>Df_UC1-TKixrvZPr-Gj7qOrieWC!oa8F0 z8CE^5mgk^kjfu0O#OR)4qYj!@PMFq_ok2-+I!zzF<`RU7&pbT=q z#uNZ8%hR!*^6#`BG4z0^GO$kNEaIu=A|y7-4N;mjAiP8lq#gJp%Vg-Y0@6s~Uvb>IwiJ|n<3 zYJHpcacR!M>(#!^n{}F**^Ko%-{!5q&h>XTt>p!}*>p*PEso<)IHB?Kk=!pWQahH- zEW~b1&O8icc}oUjC+93!hY?z|4_{(619*YV;C8Axn5w1VeEcJcls^tCYbUnr(AGMk z)31J~b*F*i_V++{_4^%=!^&3Ds-1MfQd(y#1+SM^^qw%In#ZvBDg4R=A6uiW^gcFA zsavEOT&Co{X4whHvE0wN`QIR+6B5m%gzP`@By9j)Naq`q*l}Fyw`K|xOp{!Yo0%YT z#*_FMJ+s;)RTL*@B*AkpcfK&3DuZL?P#Oj8G6(ZR(2|k17KB#-t%bp+BRQ%Y$kCeP z*eUBwW*CjegFt<=`)fgnU+X~V&t}mpbR^#H zP~3G^=d82tnfN15#cR&R*E$)0A7|qR=^Ky7{jvwA!H+o)uJu@Je zu0I=IYcpCLZfd<^ZQJPBx!nQrBh}cgDzV#8VYjWoZdHACI#E?q40j)$)U5#c&0(R8 zwPePnx*!T>l=9dZN}!!9YZrut$|cdI;Z)ZU&p2EPw^Zn<%%hoBm{0zEjb46ty=UAg zBQWM07y^MtrZ2#w5bJ54&3iS%O*7(|8W;MX*yqvdkGAQbUW-gBDAA==>6$ zo}XR8vf?B?$qZt6aYShx`k^ z7;yH{tuqo8D|H(Zz8PjyBRFCfNV(8Aow%bqkUtw%DtPB@=Vct2@rM%GEV`dz7AGVg zqVG$GO75hVyv?|=!5bi37$~k0UxMXq5^k=c-oAhz5tc;uL*j?ba+>vXXOz**92uDN zXBZvO0sHq2*f*Tx)TQxR;W+*SPB4q~tK+gGn>6mDR(Q+^?D@_Uui2Q6-2F-*9Dn5Fo`eH=^hWQH2P!SqF|aX~ z>=e(zVyUJ3ohK;HiCeut@-brMo(OvtPRmW;a4;a3Ad=r_rih+OR;~j*4+>L?@7S65ZSIA-LM>6lBHGhfrMz4bkg&N(sL0Mpd73?Ar$RKRpWg+kP78|39@FM1&lw?D3)Cmec>y=xFq;LjPZk4v#we z{~?~Af8PHL-P80KNb!UwM3cg=QVo`9Mvl>E`|sZE=u$f`-)5RBs)|HxBZ=5@0~C{q zR_1q0#6nltMT4RUI9^z0bD>)s{>j|p(Ivgc_irt?u?W3*27l7@I-gAFTeLeU8Y3)* zzs(>|jmTYG;Q$t;)z8FS8p2ry!yoSanV8n0ywZK>sYq|>1pkJ>&I^+UrvT$zlF*bY zVueL2(NlX{Fm({FEW+d8M1sf;#7gM4W4-WUygT$3-EYJ#Oi7Z_6zfrvM9;pW&|4UH8l!zsRFms{I30Dw^bvJ5Ofa1o|_mb zwIL#}F*DZ#_1fw8J)C7d5XO4CcrVb?dd?S8|8Oy8cOsr@8y6b_!TMjyC&yYoL7Xe$i$T`(;O3T>)pHkpMUm9UI&mN zdiQP+;q4Qd!qu=9eW@?riq6zbYHwA$n~|C}jWv>-z?X1$M04w#5s8-VHPVUd+1UFg7F7fC zmMKQ1`3AC4Db>-AD%gH;0O!ohFak0_v|GSHJ|GB#X4!yEetQ;sA z$FT{M3^ys9QF(Frh6b9pah46s9!NfQN9}>bztO*Pt~|Ku1d)HCr+(>XBuN8~ph3>X zo_k;0pS@Z%7|%_YPMCM+i0|I*xRXnOJCrK6d9f73WjOFloANe#8tlIXqa75iXw$?X zE6)EuA01TA{|*m6fAPGt|9*(4SsZkM_h3gAv5;_<$^HA$j)`&lXW-w)`KqcI*5f*u!|5XWBZyI zzYPd)3gdOLzts--B5Z%z%6MPLYK595S!mQROp9I?wpoK?Rh!-`eYzJu`g&n+mr@QgL!Dj3wM)S#e!Xo_w>OUPCm(e|42>p*PX5CCp5vSE0 z2O7vrhxmre7uI0~1uq_S#UpvCq{j9g45cfq$_|4G|d~ zwCIko`{U9q4I#OFbN0`Rlh-e=FHcTi2H$PG)~^Lmk4vwSv4vfcN%g(`atQ&KohVSC zUdyRB-P9@1rjgDr1JmInSH-)bm8%q&E4DI#T+e;LPF*0sCm5r_&t zKJ$C(GPp`oR4BzF-l*f?&tF=B?Vd+HtL;CT%my~>i{J^_zzDR`|NHYw{_n%l=SQQ? z{_`Q8R`#EI0d65pXIRCUhl2c`B_om;<7kL;HRFQ*WHKDyePK+)qk2P9t*%pXwa8@l zTelBE(6Qs40m2!D+!68^{m?U4aC-kJUt`qoVpvxR0WLxH7nyk4nxxC$__REzgMIE}yV(B#Csp{*Yw| zX=f@u+Zf815KGXC^{8h8r|jEvgl9~V^rT(B;s2gEy>Q|Gz^%8e)tC}5(JunP?K^DX^20T zW?Gk1$=tP~RXUsT6IgT4Tr7T#v!3})(oD_IsIWgX!A)c_``hG8wm)M2z#g!OPcF}U z^-+n<%k#_A@{7y!v*JaO=oR3m_10t5d!0*lrN0rN*G46E@dv$vm?$+;C#`;;r=SGT3gRv0p}RS2>aby{eIY;61Ce$ zy9t%>?*mrR49ZlxscYA!*5786vju&sE)$w~8=G=DMU)lj^~}0_ShK*~|xn z!7pet`ppxP4{a~1*oxk#NvPtcR%@05^m~Gg&kAxrD<*}@x@h?*j&^K@;6||M9KFn? zsp_Nj+eT@}8*L`z2^S0N>u%!saJo>uA((sBqY2USeV!on(jTydsLVe3M5%oQflH$_ z4y5dTxPLU9@+YrGqi5?312Rrm$8rr^_;JH{_IZt9!MTVjTg8iDg=OW7)x*ou$&!fy zcV7br4J@aHSg^^gd^c7A`G=t)J5SJ5V5TbJy@_z?iQob#L`>D|RNn12-dBn_`H z$^|X86HILfAsO+E93#(5W8;1-3l`|CgZCrbhRnw`_l2awDld|=pdh&arGVVCr##71 zR=NrLqvXt7wi=rH!-z9eP5$uTPyc5K!EnFYJ;^e`?@7G7_YYezxPD}Y=ZXX$OeR;U zY>Mf1J3S+eF7473*j|TM1jq9w{lWM3y30s3G$GZm$OJaoLaR39``XRsl8D*{Ew=MD z+iV4ylt_uEi+x^KA?7YkAEVJ)!|<2>T#Aevni8pSngz|oL`H&U#$)8PTF|7$Q~swQ znaK^~5{;Nd>Lvr+!;CN!go}e=06k#olA;XJxzdd>uFy2c0yAa9_Sei8M5TWH{mtocaU+(N$3WaCQPu=!Mp9f50iF?da(VuzXV;Yv6)^9f)KFA!cU9aa zgF+ZdI%Omdi6WW^o+8eQU~(?9f9x_24AI{iI!O{2Crt~P#tK-|Z%?9Iy$Nou!%vzk z$bW?=iU{OTXNYRY48hU}h157U^$OwwO)yRR2ul8mHJ463NY*uVD*am=L zJ<)-japmo&eUuVxa+|ASZ6&~pO(6|BWq?nBln#_8+e-*X$f{#9!;f{j0VHbLU085~ z%)x766Wo_Cm<}M!LTTG-TvfDs6EzToO7AO3($kn^uiu+cSSC@q|F~d~4F>s{z?v6`9syOZ5S0db|Ok3RPfUN;V*+kPvT@p5~ZpEbx zwQ2Avgl5dgsoo+^ctVN~(WysIbMz2Hviwt=lH^nijPD!NkjiAB!Pg$x)u=NoHd8q| zN$u*K5vjKuh-IGY)zAyKF2lAxH*IAE+u6$+HQz$Xw0N3!Jj}>Cax8wS%=TvHi57`b z&(-Upr*ue$D4`Rg3EN%`AciKjEzf*r)-geJ%D5o$zRf5X6F94cu$pFuCSgq#XlU6Q z>j#1&tenkDU8)GR36&651{qD796bpwfSLG!R$gdW;~~1_S)O1O#6Ap9$E@oN;>>d{ z!{Z%WYo2B;exQo*-@Lv>Ls$qrul-IHNgJxJ0QNNSGhG60a}HU68>*p{q+=rFjAkDZ zxSOD~1V&3CgwWeTp=1xV?mDnNDW1}3p#qhsCo2JZE>BO4kmKYCICK?v9u{7j0I8E2 z=Ya5omf$q|0O{CJdBaW&pEY~X?p)}poR0}o$ju14)ons!w+PZCc}7ho_-^0ATY1|I z@-gQL!K?-nme92Thb?J%r67>(G`TQ>JV&>t zzgsPKEF|&rL5`>No-iA}*CuGze-~%OST=EtQi{&Tk-5>7@`~v}l{1YMBZ3@SF^SEf z%AIKPeyiX64y?{36=pwSqp%pJgs_5~w4i>Onr1_riU55tubo_;+pl(y+qHO@(P-xU z{Gs%1#UgYIVNuge%{L&9%?uQIdrQryWtSf2;fq)44{>A|cX`69e1W}r|JPu0(TZu52FJBJ`i@4qfZ;uYXtfh$oQ5_RU9Es1F zd3pk*#Fk!LLP5wR!aGLexmv`+oYpREX(r#FpB3B`I46xiA|~1}al;8#PY#MfO4%84 zSAbxxOao?eScLMZ%ljLJQs?=^)zF2F6^6{w^|x=ne|4r;)*%9A(j{L$y}km;ADxAy zDW+4ZZ~{w?wN`Qqpt!vwbKMBdW<;cfDWF-vF>Hq3c&m~|ML8sM0G02|v3kRYZC-nm zBk_*RK>;L%LZ&!RZI}lGx*0^7;&z^%iF5U{wI$;Ie}(VOcTvsRN?t2_fwj}>}V!Q z1Sg;-`+xCH<&2S}_^mg${^d=dwtXJSEbK3(k>HX~6q3_OzhFek2xkO-SC!@#dlx}) zxO^eZn|lVX_r~uF>)Kdyaj_eVRxw~{L5~*AW31vz^B5fhHJ7kh)mWf}YRy9;ZAxL* z{4K!L=D`-|yJT4koNk^}1<{*F1=!#Cxw<7*6g2x}MIpU;8jFNGs)Y?WoaPHi1BfX1NJC$nR(5eH#OVUtZr%*A!7iB90+Aibq%ZAGU-2B zZBw%1C2ABeU5*kuWkmE5P9#Tnj6X213Z9^+!9>xC@sw5bz4Bx==+T%+H6W7-7YdEB zq*5qqMB} zk>qQju&8y5wkSK&&UBe|MME|HoV4H2tM5x@$oC+p?Ux`*12tE?3WC0ME( zftjT4_`IoP6)_enI(@7-bdR_YL}nZ=TomVXQh9WmVKycHAkag*Ny%>^f}#NVW30$P zH472ek)h>`Uz^g#f;h`l%#a{BhBN1&pd;cjQJ5y4J;Ah<2Uy<{j?|vf34-M#=WUv3 zIhiXcZ00f+luS^HqZwtSm=k%MC72Z$Z;$NF3iV`lMvoeMJ-2TddztV1A@!Ya!PDCt zk(1j#y8Rj_68`w!u&>*_M`G481qZ=i+|_;WE-wPZT3*Huc$u-Q9k6cZ8L0u4ktzaZ z`>CbE{RI--N4L(eOaE;gt{wr&#p8|?XM;O3Z&?3E`qp%AlHzQkwB@`_1g-?KuZyxs zDlSMt*NmLpa75r)zmvqAR}5v7B!}aMDHda6dP&@6HqG_MIJz6~$>b4?zDnyrr;Cq~ z61jh+xPTlD@UD8<{C&8#c0R3-@@a*)wa%=|yjYjGuM(k3KbE+#!k1r-@9KN<>NJ5q zF6taG&2@+Mn_SmXbWktxfq63{uC1^KcX$nXU5FkqEErW7|ft-sCFF)z=`yuQtY=)YtRm zz&I&#_+}LYuO?@L-fP&vF;_vELy{TIFlCnAJqW54VLm%~0N$QN3X3UGmQok`4rb^i z$z~XRP2l{_u`bS%IdWI2y|dBnU@$S|22)L3zAB~{^j4bbS6Xwqb$+6pp)t3O6>(jl zQ+F2OFV!w_6WyXAv3`O4`d}6;eR-W0?4|`0YYr#<`ArzbQ_RhIWM!!vmsUe2!?1S( zba-!8%SV_c*EMj^#bYfCSKU%Ifp-bH$x_^Y-{zvTmsd-_pYn7}8Hq1nzOFIjrzvL_ zZB7Aur@pLVYo@LNm_6ZU-Nb_>FZ%`R_F zyb2-&vgVk~@IB?ZSn193Vsv=qol;&5pAVnc`93UN?U>1uqTRR(XBXE{&@6%Te?7an zcC$K3jLIJ995pMlO-iZ=Ql z%h+8jSUHg2z_o%qGB@XgD>v>aU88lIrF`HbHp8m3 z0GVgCLW^u?%e2A8V-8}iCbA4Z?_TNLGES>BUVv>DO=#lm=eMr*@W(rO>j|VY;@cG| zDZfGF0>UCO2XQo)&i3hm6CmmB0>Ew!_4PxC5kco*6e=v4D9<=Uf($hO!Ym>~bW$3> z61h~>8Gwi6hnR*lzqnd@l=|;lXUrvQyj%+K_*Ct`HQHQOYt~2!7=%;G5MDTIsm#*D z#(6SW0K&%*C7bOetu`xawPDdR4(dVIVk;s;yO$TJQE@fcEGHpMiMd0!3KV-1-Nsm9 zCv6n=l_9zY9oBjrNPkvi3R>;gs<9;Q>khb9CnTcEeRhCa26NQbLWNea(pp&bTJqGo zG0N>KOjDS6m`;Np(5=|D?&1A{pdTs`Fe6Zoh8e##ni&+Z~QI&8(> zF26gy9v!acaJF2>-Pn^#cGwAr-FURL9SlO|O{?iIb_OFSEw8v+}99EA37JOGn-QqxXRh?<9mp8!cwe zwA6R0BtySxdxUU%b$xQ%zkL}W9vzLoyoHm4m#1gfC%3wVTR)6jFmAcK-{#7Tq(6~c zXND^}(__+~^vDm7UX*NFFj&_?d7iq-Qq_a!U)0pSTBtcJss-n8aPU@ekz$7Bx|^DD zR-KU!(AD+HlCJ=QW#7$kYfFIrpR#EyEW4>77Vrl?6*!yC!HyVX5li$`bBjISbS+Z# zWT_=XGmA(At8wlYSdzUkrT_lo)(pY*sNX#q!FTxci@v5^8Hp6VC&_$Rj$L3|YZI6N zZD&oP#}(hdsP{Usq2Wz-+*T`hRjN{))XexpnZgz4G=faMySF)c4kb3dJq!oP1doVx zc5G|2z99E-d9$?0B~h?woKE1$8$v9QmHCZUXAfMHH~x^-v$MFtMK80V$?d62cFdDsx8|eE+OFSUBO66cR&!mm`zj8q*q#2%HC23Si&z2b6F&b>0QA#<>uLsbp@B_2LQ}G0q3&YxtIm zLC=d3Z*FE@=+-ko+<#UIyH)MLIV{xpGI)=jBa~8>Ybp0*^kop_o=VEuw^VCy^H(&b ztIzoBD!Hwg;rDd?nxTC3-FH$d@G@Gu^w4+CFmU*Losr0Vg`2tY5MBA16wWg#zc(H6B!+u$RA_Ex z@Th=G0R-|kA|#e(V5Wd$ApLq^I~>9m&-eu0j(`?SVca6{{ds!JXmY#P4?2XgT36}H zojW}#$3{F3LkrECOw;x*uHR9no*gcHFPQa8l)Lst>zo;7#eM-;@B{Q@N&fi7uzD6kRGqS ztY>8Gh-Wki(pK7j&X@U>si5nIZSj)%!&?>2F0oz?bA+>uU{NmYhiC-JI5wdo>@FHs zOO+;|*-vb=0xh@xm@{){R4-0Hj04W^iFgoHFN*GYjHQo@7B*OB6hz4yubu)H??JJz zrgmDf$S1+r!M>-_&}`ZiXSJ(ph2@3&M31ntw~wQX+DMn-1=tnyx5)Ubn7Z{WTYdXF zPZIQ(qk}IE0kk4rWaNaW4T6Hv#`oVI9elZ;-O;!EPc$X1y`%m}6o%YcVhI?^2OO^S z3McEOE7Tm9c|~OAHps{$oX};H1MJ;D^t*|2dm#)soIw?s6#mNQ8@a^UW6`We| zh*>QgloEufrJm4>+r{YZV)T}t zE=F%K#x6#0{iM1Wy^oC1`xA2@F9`wa$KiU!s?2&nNo`!LZz*9-f}R!fClz|St= z=Z6UR$;T$hpAAjda8bKvV(#Rn945#tW)YEV>YH^@4}%Dja7d)d(-=$Z)H+08bKxES z`jAn(t}(st{#bK#*aw#d=(-w{?1#7i7%omyH}GY@G8`%q&w)6_=8mD7IhPlQhqlwk zuraIFqWKWWJi$@Wi{}lcx)`lpj8=Fa9i!E9$WJf~D~ZpoThED7B+Xg`KDsHLD{D4Q zS z1s|rx-odvQ{~aYOGjr#x1ze(VQ7E?d5zq6`b=Lc%720Hrm!38JMkx)aW( z+~BFj16kAw6WCC9Q_8w8S`Rx`1s;{vRr3o}Cv?}zEWcoc`x#CW!lpzHag>rS$bC7; zeFIDuBi%bN!n+{Oy?ehH<=z7xUI&5eOHH*1Tfg{npoiTup#5f{>A~<2Aa@Z;eKCUf z$~f^h=-@(gXFSD}t=FCzp0Q0VGZtF|!I)`8OPa3<)zWtE0b)c2Y-L{ z%I$0*fhS=jm3tfJ=&MX+t*pJa%4fm7a*Vc|Q(dVR-spt7%&&_>nsCuaWH=on@)oCA zLWU7feYnQL?aIb9HnZqG&?Jtqhh<^6Hx;FdaW-&;Q4BJR?GA3Ie>Mzyy#*!F z-3Yo3zpM?f_Hj0^TqqG(9>AAm9wrRY>kOuD7ar5t0g7A1PWv-5inUQX7<*9K%KpMG z+~e)LtHq^DxkL#X#LToct=NMZ>ggf%?0X2@Nrd1cY#-`|?E z@3V{RB?BL0NnSknfgY~EJvlsjfn@GOlWbueNRhXy3>-MCG9$S8%Z)vdao%~uwS(Oo zp1g9+Ps42EhQ32pYm^5X8u%705>4o*iXQJV*lEnGbR49!>XBXG4qiuaJ%}xRaqX*mzZeme2%g34<@Bhg8 zjMIJH`XFX<51m||YgiZvElkv)Vr`V=HRg-f2&jc4xW2V2(w!?l2T}^m=vH>PE{vG$N;*$vh=u!PH%S)*#ReGwz7Ac{(E95$O*_ zq-)7Yw-L?LZNzRPe%OuJF~qv3+lSpg{80O_R^Z)^8uL>wHZlRd_V*%BbQ7S_d~6zw zTX;AKs6CA=mzVk2&-DCk3krpypXX<5(M&pV>5Qp~KXw|3Lva5iArobto?l;|mx4NP z11Hc{M6iZwoS$uF3LP=;i1{Z<%n7@vg0qycm6oUy7{aR@hUNw>p{FjID}1`l#|e#2 z6Q0L=+ad|8Z`7G*urP$SRZeG=;k9afLqv+%T2;Qk{zfl6Ky7u!8JCL0f8&faxmScw z<9c~}U(G4kw${f62RH|p4z*sY4;NT~+REj#xju?8b755BV9s6xh9sZvikD+{{d(qs zxIl_9tcz@q#IHk>+j8Rt=vddW^D}=xtpcug0CJ>j<^0jQWVL8{?YVh+`qbGvV?fq}QR(c0&b0Ln{o zRmoI&zigkq7t&QRLgMXExk!`iO_Y^yIG-j20lEJuHI+>86)m+TbdO+I-0F)8^&xaF;2M(z*WYBWoxS55r@rb3;~1^asx#`N0jx_@ zdU`VUntv`0VaYZ7R_@BOngw$oq6@Cbu?;_gnT5rjX7`nv;Dh{NktX74O28d6C2GdO zo0uwhWz}8#bV=s;1Z6~|RGMpW&=OwV9jqq=P0{$2X~vP+f2Xa z%>;o;*V;fYA+)KB=3qqhzRAqzW#b^{rQ?_;%w4e8mPS)sV-}GH%C!<$k?B%2FZ-Zh zoVHn8jKj*0r7NVrDzxIfMJlPJ?S9)2v*d)pp|ny5MZp z@!Z!CV7jr84N1%+f|s6+)=GM3rt%wI`J=QDsJ0H0Z7HhiygF*0j%jsF>q9UtF^LXG z&t9xWr>?#})pgL*-LpBvDUHzga9dqE+%SG2=9=HNi9NqpT+q>Iq6Ciah$!Oy$2{7% zW7*&Ps0bdwyBa{E`n27NMPq9bI=vCkFI{dB#08jF-N7Da?oyY+ir$;k1$!S)=2^xC z#4~Wq7Th*8*AR38e~DMWu_o8^%lj9;&)~*0VNt@R2`?i5m19BB7}irs^pp&z=!e6D zgVAw3{^Iy}^pCy&|Nr|hq`QEaxYmkWih)Vx_7m$XNv9{P(ze&a8g7T)T%UgvBytaK zSvwThAYOp&Q16e}NN*s<+}`SeR8AmoZB%ji_8pl+?7UlWM=^mvG|e<^m-B2tjj$vG z$|QmKx%Xu67~S4}`}*Yc_1V$wtv`F;>)Y4Y-=2(aZ-ZZlM=x$o23z;$Xmogc+tSL> z67F_NYhyS7{W~%@C)TwvH+gg$fJ&ukK0K^6NnJgg8 zw&vT3E}iJ|DT*#USLEo~`d8one2uP5-H%SY5@fpkpnbh7WZ#kbn#b%WHbPNZQxhM4 zw_<%J=U_CdQEl&0w0-nCv_5p;1xBcf*-VlP87y zz#tgN)_7lWky$~_iVq3!bU7pz$fNgF! z$}1{Wakei10DJ`DjG_o9$<}zI!Qu53`Q!o5ZIET4OH)Yc5SYCJjMP&$B;3E<+R%Bj zp4f856B}v>{yMq32%_)0H7YMDmNHL?+aM+nx-#*Z6B-9w%gjt++imgwpso7o4hq_@zkH2cb@#1lLJ$zg7wEfsALI-?cwwa4I2$ z5_@YSRoYhUkw{gBGx32wDj{#$_8JfjeMQ06SAYO^>v3ftRd{)bqzp@0WPNwbfir4t zP{7BFC{$p|u;JwN4h2h4gnha*gvFRDfyEsC@%qgLq)!~WEpM$MwsY$X?DL`;`amVp z+x;hOlWl|*b>GGj6iijaGP&0b#9Pm3ME3e<&U4pW4z7M?Ai%&95-BcBFj{vGQFGYv zH5WxPE}M6t9Lg1_QC|Z<=7}nS(F+gMW$VH=mr~55-2YxhjGSX|EYNJ3F><^1k2s{nh!=-D^$t)KsnMnwg$;uPakp%7MtStd$~g(*zDj z@Vg$Zz4I&m&mj;z_s~(><6npl3B4q`-oy!x6^`AV^P3}-8PphKM1{353ykCl^)9>C zXpZBpmI|x}luaGfm`J`)POtb9t2R;}J^^cJD;`2nY9z@e-iE763=>0%>TdXuHJYqd z&)AUgW9c5nsD@x9Z=^$7sP$|Is(+mRPGbBJ^{V66j7)~K1MYdlt#)J5WJagIb7SZp zvJ)&qu#^9J#niJ8Mey#nT@k7#E_-Vj?{E||Ul^lurprS{QPR;75xTEpsS<4x#!8Xk z6N@#I7Md8G@+d?GwAvO20#BbR&X*~K)pF22+A$F_u0Sw9q9(9!@6&GXvOD?7yyQD% zwrRe_Fp7$ysfq~8Qm9&0MM1&5lQYfL!dHpDTgaNd0Pb}CvMgAn+6R(#k0!RVn=eAJ z$=xm5%E|kJ0ugC5I=&(rX!AmfAbXqS@8a|e4zUCltP&!NOKISw4JleIf)P;h8#M&h zy|#^o(w3!G0!i>@C&Hqt*)KGBWX!=#H{n{{+iuWe>N9ezSlticfq!#P0Vbk|h)5jP`mi*HqyuMfSs4WhTFu)*@@u^nC3$LfO?mmTV3Z^OR zbgWX&R#pDfc#8k2J1O=DuK&pPaG2^J!haXurdcsgI#fo!)eqJMA4DdB!!)!nQN<)# z(iSV+O8AaB2ZcZm>VUw2vnmBfH#MV7{v*_QGTvy&g834EdM38qQ_r~AvPQxzX9K=O zd(#(O75wYxQbUew3|G>(y_qS{ ze2<5VaA)_R#35JMr#Ju9y@6fdUu4#Sj|rllKI@udlPbR#&+|Q95DiwE@4=S|(J>av zIcjgiWKg~gE>3@oma`(f#xn~gNl7b}yH;vEvq%)g%+b(&GLl67I{XplFoffybn(Ad zbO_@`{E_z-SHGUWL!8wTpgpe&P0q9nB0G#GbxPbMm4?C?+uVTaL+tUO76VM8bgvNe zl!p1Qn#Guv5}^lDoZ_^NJ{-Obl3R!35t;ciQd5hRam%{%32Ej98I%zf6zhm}1gJsd zNZ5z?mojJTEXeHWz@v1a4bRes0aOl|i?|<`W2gQcsYXWLAak1btS)}ef}>&>7gBg= zF63Zqb6VzLj0?>%xb)L_iUTZ#Pno*(Y|+yj+L0M1HC<3;Jt`Rw_4wBysO(ZE+nH05o^VDnlwt)E$5opxpr zP0S*BjE|Nyv|W=?$ZoL_jY8@4PEVmnUv$-In}8@2>wS-+KH}xYu(HSQ%(5Eta}C?B zH9?^DS5QQ3zxXG1WhuSs^n^S!(Cqrhn8L&Oe(O(jD1M>$vTjcN1ffmE(4y!xmMx8! zMrv@Us7_-;wK1E8G*BxJJ!8U(sNvxC4^N^Ql7_ms-0>@WhzmE!&xCO}VGDFZp=R`w z)@$1Ax;8NF9AWuxN-PdayI&C{i%Vs}AZuX|pYS;{N&#gmtkz?E^YpS;Ms1xZy0H8*18$7HIHt&ax3OPU8Y%eVlPw6Xk>}U73VArA{|Z_t+Py#HtmL0Rx)5xCtpFPp zipb^y$Cb0}u*0WLyD~|$JOX!ps@5ptkWx%d(Bq6a__2x+4YIK=vWuX^{w)iyMd3y| z**-F7JI6>-BeBL#*s&bO4n*vq;xCyH$|D;DO^m03_s!e^mGMstCBs**Loe$!kWntL zRp$Vd8+s4#pP$v{zWStCa@_XA2XTrf0gggTAF37NnA%il1q2674p$Lx8~|C$0;}q8 zdI`uNoRD!!0FqK3GnQ}w_qlKqtWcWtv50fN6gU=@t<;IMa7k3n5zptBWN`L__^1y* zRnmC(uU$Uqm@EgtDr>$n^wfw3*JXz}DDQ8#`M0@>zxBt5O6Wl5H^y*MdB*$x*dT(3 zQt5q7TQe3cnz`_MhG$wDuPm*>4wvQ*e{PmKeP2^V+pHWi%id_Asxf4z%}m=Nx9tQp zGm#;0xTz!1lTjP$_J@r#*4)3z zJ`|m`woZui3#P`D9JNQwe{O0%)cYxXLUi_&nzmx1XNC|^N{;VRm*8BW&dz=S5NV~Q zM89oNz$N?~v{BoR;RLrquui<~C`81QZ57`Ne0ZA2vcp#yKPZoWfBq7^kjoOh>`HYz z)vHU>RvJfH7ZMyybJjx(bC~2il+4&K7~zr~)uU_+v+ghLf{|(tPu35ltoUT;vEoZw zL6$s}58MewI^@G!yzZw$HC%R35>GTWY5@E{m0Mb|5`+Ea@2y`rFJbK;ck=1Or!kY! zm?WYMD{#Z;7=yL?rZt>r!k27k#V2#47J!ksynXD`aK3tQ$VLg)`3|9uT^%$(GW7NMSf(YMEIiZtCHfCC9bYrs!ANHnw8?NUfmw|g^$B1=wHzF0BpQvy z!P=fS9qZb}&Olk{meV$pe!>wB0{sX6bP{Ed+L*J9%0A+DM4a2fz6F_hmKIOv@6J85 zUtv%w(~v9C0VVAk<4GIco=}5AW8&UnPN+eEJiL6v>-0J4u)pvWOq-%GvjgfN2?X(8 z{Yh;MvR9UcA0NF(0BWbz=JfEtzvgV59BgW9jn@GI?I%q03&J~@vr!S127$h8)D+Us z#?zy_3WD1l8s~_W@5{l>LI0+Qcch8#`6uM5HMuLj#y2nH_cv{)IS?QDtU|Tm) z6yDs38soYaH< zqPS(cJh&|j64}dt;^{mu{=Z!kWFz^T8SnP~P(aj(%oX~o{g!u}y(AqxyN+HF+FJ5R zA)=IWR71;eYsQ_74l3-}obj$EJg*Kf=&i0G{hx-NVy3rsbWm&!(+AN*O!67Msod%h zbmm8ZBw8s53|h7dph$SBhs(Li$ZC5@LuO*69GVNNZ-rn-0OTy%2HtfFJM4_alo!I=_mO z(2i+qq+#Y%mHyk9vu<%y4lcK^Vz;#+pDs2r_-(CP&Sgp~k4ebZZ5zI?gFI**e}l@* zo_C3zHM<-oZ$T46(MWfIx}FaVV><#BTwdyCes@-eXcjBH!J3y#w_c=(&gzRB{%l$p z(4|?g;$zdh6%!4kCS)DWL;m?eVN~}fHYs6IK~CDp$AYp>Q0!lNV^!tO`Z$vhWF)c# z1S`i>Nd2PaB&~VkMmeA=NjIaDY4kFso!M{Z468~qRet4=@6m7z+UVK-r;GaOVQwHw zX29KN`Du%XdFPUW==h3jgN@f47@cn*^n;}1#`f7qMq0<hRv!<<{b7)rWkNVt+Zz#enXg&}FU?1!!kEX}G^NTV7R}F;Nw!3DLe(c@Cd@}r1`ZTD!u)wqdM7#q7{0;t8ZXxa7^oMAo`zdde0 zeviW45e9pIm*MVpoO?vhjCk^02jZ>^TfS)z%v&9o1cLKgJ60mdoW;yQ`bx{L_!y;@v)w_~TZTL{=?%L~NuM{=%s>0s=0oZ7D!EZ+b%1zAzF;$^WwV2puruW%~&K!`>V1d)JiaHVup#K~ga9SwRuUtt}W~%4yQz zM@@n)KQ4hzxdSONDL4|yLF<_9Ab319I=8*`xb%=Dxv~_M&ksA1we=xs_6U-DzqZDR zpcu^6J!i9H`^epTR5!q1ZYF2Zf${|R(rk#w70}Kll{SR(DjI^h7mK8|iD^_Uvzcrp z3QI%TJ$U3{KzJTA5hi)`N|G6o`O^8pS-IGgDHnj9P2eE0ut3djJ?(HsnBs|QKiQ>_0`(?TIMdO-U zw;KT9$#Ra0Cb)AK zPdb}rxXM6Qb$}Z%eFXjC2Xp6OQAsxVFoQ2h(qK8CQu2pCJL+-Ff}6um-{n;TqI)05 z&{m8jv_O&293;}m!U-VdsIcvPCz<4Bqh4MVy%531h!FP(0H61=9UuA#tQ7PQS|Q!1 z{jJhOsd8wgvzGy6P8^`kA(4@AM((bi^7b;Qgxz!WPA+%`noOz+RwlamqIC^^xP9GD z{5GIFaqCI;9!5>UAd~+l|GQDApI*MskU}@ki)3~oO$6T_e;YTy2e~hLU9x!Cdg%}G zO*TY&vLB2;8MmN9^azuj3W`dlB=ZhSsNb}?M`F?T;2fX5{oh;f=nTd-34`GrK{4uh z;Q}@_#ol|9?m;VTO)Ai(xp<*iA^|Jje#tnh3+e`z?FB%6{dP2cPkt!OEwf_>CWcF_ zpiuXH1VjSw9Hm7h+?)%*RJW9RCu)ogQ<`R?M2a3A`6Lx+Fbg<;1enSxSVPG8=;H_m zyp~m~rXXG0zu;wUhz$=B_cJnAh3-OD@bpH$nZ3A1-_B3^;)rGHz>HH0Ds$Zq#0(L) zi*`rbefdK5v&kHIiDq1DBOpbM2%%g_vGSdtEuu4g)23pQaaF(R&Eh=<&I7GW#eOsd!vO#gPlOSag`j>(xlZc8nfQ9by zbq@?i0NmGILXlij)Tp0izq87i{2OESrBzGwFVjHO$e6Tm6VYt*^(gb<{M|+X(&jSk z^RlF%))>+i`FSNXL=#l7*h&SwwQZS38Lqhii6&{1J1ANjKBl%_J@=(^1;(2yO~$cc zH*|MelT{=G#~<(yajuTmkl9mLAy^xbb6uAFGub9pi%RWd0&mK7#j(M#$Prnvd>P48e9K^d0bx0J3T1C@`M#ozq8jFnkg-M-keh}7Cqh$ps)K~)A6 zH-YFAU`lPXr(mh)N!E&yjG~KurmwZQgXO_Wfe(Weumw4NT1|-F*UkyVo&&ibS1msb zt)FyDbqc_BhQ9i7#~Klpxc@E$Y75k)!{Wv2P4^`&vT$jzr^oXM0m0y^#P`Z~Jvy>v zY2J^XB5UUeJ0iTFH6AL~#cVo{oH8T+R6dYvK)IiI5jO=a zg?8fvZU>c>JSYz^IYOn@?l42)P`pRn_=O8cO*RL|Lap+EHfX7L_X9;U2>SECBsG60 zp$^|k9}}IWjWdHFX>$fKkLQfRrZv@!m34Z3QG;%pl~b<{52OB8l2b!*zXSF3AdTNP z3)XlHt%o-td7=IW-dvh4sJ#*$c3~<2jds^E2F@v}rXLi5Qtt$G} zo8l+7V51k_Rv>l0z|>25!|_aYDeLb32!|&|zSix4VJC2AXRci#0{alAPjkZJYGXJH z4y#Be3qjl8K@eiDC3xJDhDJ_VQzJ?=n#Ed$5J7h2rO{&Qey~O%DvnVk#!Gq1$D*To zDN>MBX7191ad-G$k821p=4(u6pC2qgf-ID1n2sWt_AxzH(d+F;-B-g`n+@l;QgX^f zn1)eymQE7rz67`?@hfXSp&cX$^_A6stODPaD{RttX}Nm$^3V4_u!IF~d_IZ)5D}_m zXI!Y=0r&-C_O<=HhK9CNMnHn@HBFh<7(JGz7~SSl^!Cc&eBSe%=@go({QVr(y@)Sg zxvbszK_-Kb>J3|0M9y|ML(5pJY(0ccVm$XGii ziSKW{aUW(G18x?9be$@kbj-<;Wg0ZrmnKUzmKGK+$cdtBC7)@?SA6GGw$T z=4n#`G#}G%wW9W#ds9Ne3`K0x8!0jn?+`-;Uq+)qm6}CUDm9s4l@S$KP6KN}C3Xj^h?Yepj7&*cA}$arA@S@)ddpm{ zT%Msxh;U}5G*%|#Q?wFNt|jj;pFnL9RRq?Tbxi(C0g3*BrMl1En>*iAKV zvy?(=M>`AdUZt)Q?evrY=*hC4`O3OHKTlMxT~Ib~Se9kD-N=H1Uk|DpTlaWTzxbCU zpc0(RpC31Vgr*`!y62Sj{he(ecNrM(|M=7od6;|1K7!8r~tOz8F>4R{bjY>pt$PeIo z%y3N2u`T|-=9wkp)DR{ZXO$(xW9Q~&U<822&kGmO=NNJ(pEa5Ni9PfI(WE1y z>|0|^2bGXk>EBlrr=ex=$3~~G6@{7ds7~h}4Bkg=04>5E%R1=?O^Tc^KGT68#p5U!w)%o*q0=8*e(1~{@)sI$0S3WWLo?ciW-iJQWy?9P%7^s1UN zuG_RpgRP#0hU12i9+w8vdRU9fZkoa7ikKg&0}Jcf);HpX?5WtL70wUZMt+DW1&A_e zkshb75#?=7!Q2#yz#T>vReK1cM?#9XhIUbaVNO@=MW<}GbSP}&0FNfr2`DlaH|hkg zmy1u{1XQ+-d3f&gP~W)J+gBR*ElYR|r;9Omh?3zLBa9`HSenr%wc+Cged?Stpn%!D zamEkv)5o=T7IC;0Yx-2-RLkb%(0zAj**4v;wf?$KG$~)oT$^vKG1a=2mGQLqI%-`E zAVV2+XRw;*D^PY2`jzE}j7`H`91gu7PG&xgIR67LpH9>s?U-X7YJttX0G_H1`}ODF ze#^>_*nxE|^A4=x-`9rEs;0MoB>jLX2eG!NE}IU?77Jsbrq=Nq=EUc&b9#Z26QibJ z$npee5q=A|!2SNd)Edj`rJS>J+!fPI)AZWDst5Rk@Pn@TZg)Z+@-am#CnPa1{1zja z-o%>yd<_$DD1mKrwbHsdZ+OvTua|uk#XI^muwdK;?0bItT-wXX0R}V(B;<*2 zI@1p^a~l8v7RB?%xv^h_ak#w#OkMN-D3R89YA8HreC35i5uFF*qbo%EFP0ZX-Dw0t zCG>B~=V);Q3CDd|e9hJzw{92WAL1D(yN16r^0BVQiJufw=y<0B&-EDk97m`%$sht=+23sJ)x*W%Pf?UtqCoaUV%*bpgo|t6%0UQK>A{&h8?lczX ztp|Z)u;`ymEmJrDb^mdk;LrG7pDIkX&tkV6=Y zZcH4#g3(bt8ojvQLousDxlErK2gLi(jr|(+Of&5lo#|k~C&Z1q@WhKGsVBylQgUr$ zw^7_MsClKBkcz@qFZ~~8z97hhPrf?1u7JOdNzpoy^fQs>jr*AA?n5m5sC3G3w7_;F zxU-Fy49)1VA8JKXAmn+}I7{$w=Ub~w&GJwd8mxDt*LMD5m$Q_j{tu!@0*+b zqqt-5G^T=d7A{FPE`)PV`&+fz`Os8D-%F#y>K^`IJ@0oD46#IoG-(_u)avJk-ZS?b z92^3SLnAT_%i8x8qDHE+%uJBoK29oZb6_eKhpHBx=)yrn&6Bd&c9Vxa6UvYT^sF*4 zrH4ddfd=`^%hkwVp-027H@Z42F?Uu}xT;^%ufn1|zK=wp28O z@*2V~<7QZG35dL6Q&4(4MKbwDL|~8@=xT{cT|+DiE4t1aITpjxI2w_7(5m#+M{$!W znD&~4x83CHU1u$Q@Ij>wxP$<^9Bd}J;yVYvxa@*Zo=Z%;UBxG=q$Z&lG{1AwlcdAY~M%jS;96IS7$2q8D zYo*{P{V@kt(#(P>`Yz6=3Ylq#^JB@u8c7tp0nA!6ALc6*b&h!0-*;WW% z?_+&Vp^&!XVn1Az2W#IRsoC%leH9-g>9LUjh7iRp0P;r{O7*o7XN>c#LD->@IHG+? zizsz-zyqppnlB&1!Ch&x8W)oQ1r=SNO)LdC>y3GjOvgscHVjyo0EDdBOe3==5=r7)(RVbKaleoB)6*<~Jm1oGZ6MyKoBEQ%p6I2Glu!JG0eA8GDgk<5E#z|LXMx zgomWktXVBjjb2PgJvo9c9GwT-ggu#Sslx*8ceAK?AjB{^Z5)?hww@zTG zk=yVz6T#M_{N$^P7NZnjhRK)Pm!Bu`=eFr^3g_fYSVCQKtV`7&2%w6eoQeS#~(YF+@=t|gF*?| z+G^XQ4t*$4OUms?TAI@vuOfPc)*nwk%2oFRixlCCYi)h!Umihd2UyU4&uEy$>G^muz}`pZ#$$L`_?5}`?dBJKfumn7WJ(Ro=!zbW8+ zT&H=>wz)j7Il*Fc&VUssL$%%((vzZotaWcOPO&*FOCHsHbHI>fJmU~?{R2TAL@{QE zHQ$Z`WYVvf8CT%z_#E4)MJJ|G=zBMT%XNOeO?FEmAWokIOuGwrhb9E(@qmcSA^UB> z7fKM~B})ZiBuC|s@u`SRPhzR;m^xmlJ9|IGqiS#_nwm;f7&qYR$#;S)HDSK(Q!jQW z!N8s5HHSkr)z`H~9vRdB+gw7deYuET#wSez2}PrL7d#!c{Oe%$5Lppg)6a34?Yh=2 zOPW6T6e9XvksA?@oYgjW7za;rXvd)6$?1_C4=8GNw4qK4VW_V_T}~)*8elg zHhlxH^e-l8)ElwYN8B?qn<3|uF zMyfB6R05^?R4^iDHNlquecD@@t=Ww$rV2I2QS1$wo({PRi5}GBYcYxmtp&ZVTd!~JPU_y_fK9!CUn!2do&5_!FK#g{CERc!<<7SM!CoAD5kIZ> zmsg_)M|&!nd=$!>4k=DANI%Dfg?U4Ku{{MFVqv#OzJ@`s6waB%;Y5?qwcLft_)FVi zg(M#NiGIetze240mn7aw?yi@B@N>d&w5p>zbo38VN5sE=is5D z-pz?iLsRd{d23qWPoHzWRz9&! z+0p?nIW~xQOFX(T!-%%qfwr=wd{ZQI?db(#%<*RGY~#F`>aV!+(r^1k(9Ja{D79aI z(A1pnayWMMj0`;#1he$Yv`Kp^H751Eo5%Pedl~}2detuI4ha4PWLY95_t_J zG!>V8s{Cd(b)gvLce?e(zY4+S3u=mBwkGv{rD)r6=i2(f0_m9)gA5b(-e>`Yu*o}TL z#mlatP`pT4Q@n1(`v_sTp&#!)AROfy5P#?|?0VReXdypx)!2M0o~^W|O8u?qn~oKy z-K2swp(7+S6qDQU8cv-Z22Zc<^D16!hL$@DB-d=bc^<0%Uc2y7EY?bJx6pvFS&R7E z-9F%Efmi@NB_AgG8w`)rkv^D;9-uaEB~VQ?QcMi;L0{&J>az7zqD2s5&1NC8pF1zL|jsH3zwn(>`owbAEV1sTIRj;0F$Z4c&Kh9`? zH#5NPzt0LUZeWQPF3)Is!GI0hY4_+geMISJFy1S46 zspz%yckXfYON43zI6nAk=qtF?RR57qqXTajLoD>wu9u`*#v2?1F@h~10#;Z0vLV-A zGSI0NV$P84>9IajLG9zLqq((>Y!Rj%6%gG0Xdvv=E_$f#a#@MUp09w5G%zKnhKpU% z%%s7^SNQppAPYM=;&#pDM}cFhK566gz+5*7mL6IMNwYE6>K6+LK2J_<4k?;EpxlK> z6x)jW?fW_e!EmfDufC7|dj0o(=lcs6|Kq{v=KU|;m+kJ?W83$?Qvrl;e%;sSf|>8C zM>kA1Qhl~^$g|93um0vY$}vNtilb}F20UL#gaB)W^qB3Fx(+p4w^4mt$6*%w4=)Ox zyb!*_g}&IUO$A7SkOH@F{}zoCibTN;^hXCG>5F;yb;w1qPAtLZ+oIzPXTQ%JE3 zs52q0X-ryacVKq^+{@FpBjrL!Z5Fj>g{AotnrS3)v`pNaD^o**msxtGD5 zfv;8_;*t5u7vrLoY;#3o1jO6|T*`9Dccn-=xBVt{WSQO2Eb28Tuc&Ubox5NNmyfI8 zCnH*KBzDI?@AjV$1PwW(P&>v_VY@?RB01mzPhogud!_GWY<?iEZ8~nUjS)+vlc>do`xpI&d0pZqY1eu zGU@d+GJ%C8=B4_-b%8^KZpXVZANpA4v4vjX$&KF7jCdlm}4Jlxq~u9&_~O+DzqjT zoge-KBu7aDe6@}EWi!;0ct zyoUS^AkZB1RE7F?*a3J>bmuingFEbmQI0<~)RY!?vP;2@f&sh&0Ua*JC@Q2INe+CR zZS~XC*x-mZ#`D?oBw~g?cZ^v_|BfYFwEA+hc(`t2yG{i5cB9Y~dwLQi*#L>SIE^mz z^){}vL`6&^L^tRO*EPV;!Y%09GdEoXt*L8->C6kg2FZudpgyD5wJ5G-ERLV;VMS3& zNvPFXVQq;@q}07LBpDKbRkE5U(;0@5N>^iK_9ay3Pt&Y|dMv{}GT2xNN=Ve8FcH7s ztacfk{AH}vxH*KrEM0T$`%8XdTZwAHhjC4}c!Nn3>Du>ba|xv8pps_fey=hTs$1+% zA$9%z*1zqn1kt3z(N^kjwTWk9!(cG{8MvrLx*k!grL4E(P|?1buh~++Oa;=Dl)`Az zE0Xs6w=?f?KxW&gTT=o}r+?DKXjB=_QNAL<`i4P*FcrBhJ7I!~jBoGeIpD!x!kgp} zV-5H^^n;V}!k&zNxF~_~5nMROQ*`lD*d5*qlD7LEZFOR{h;q9R_O>P{w z!L$gX7mp>73mlf3i5htawhK{5Z`cJGh4%(oY?cW7g52r~xDoHy#~Z#3%mVk{T7I1U z7SNm)$bAw)dWXOEPn^&O&y5*4)gzKb{X(^FZRq+;{bcS6;`h=?AEk`^OB9P0A@@NZ zgsqcA)$le-5tD^5?Lw@45Q51y4svG7nJ594!N3Js<`=)>DdqQw_}T^{Cgto zw6@_#jV!}a)mCl#?7NTIt88Hhn`&6~IKhX^CbLZ**Q z_DBXKmbg~U7AQfFDX16X?VotQm>V;5l&+8~YN0k{#b!RjO)1cjb)34RXLRD4Hj(Hi z0%<}|U>YF4Gt^q^w#^VpEY-w!%`lfR@q|-*HGG$g06jmMC&7Q?b*NJ`BhrJBf_skq zAkxCT4bH_soTuDFz!Z}a#+#`o`!S(9TzaPi)yPwxoGr}6FklvAO2U2kfT+u52E)QC|UX?_2~2s&$Z|3sq6eDJVXyn$>R(4@Ct*q(+|wx@UJ1 zu3#|aJW=un5umY6>w}#|m1IFruBAxXc|ww=U9RM-+RKm_ml1g{Yg3^k;XqTjKm#k61P;itAUCJz$U7QuXq3BL>EH4~HVR z;4Kl-UDM2Im!fde{zazhOg2pZx;5D*b5jW%C?GMUcR&h`I>%-S%7_rkn$ffmOF80` zD1xOSQ|9~|%D1@ZN+XH2#2>R+BRqYf(Z={Szd^=`NTcyhMpsK5P6Y1E%GtkUb!rGi zz!3f@bWtB2p#Jy5A3AXD^TMBk`~opSu2snVguXfne{eugtY7HhkL_{Ild;=cRb9;G zKRG#iha#BNaK2#Sc)r`9>{mfOf9m?Epv^gQC=B;{B+6u(@IUI# zlz`s=V;?T@Kc@67TtEy?Ek- z42n@9a#Sl_HKcdxBIagUEkbQ;L(hOAFvcKbb#?j$5uZk}U5`}51=H0J7-pMd)q}P- zBcKVCKl$f>Cl)U>GVPpT<>-J6b4?7x(V#jOUtP64)q*v%q$A1(xKuzznWctx3t@AQ zh(9Lp&C284m&aI^sxGED&^u14b#K>-<}V~@@R1HSEp2gy=?UJINrcAkW7>Um+ywnU zH2N0t?sjB`D9dfmI^@Yz8|b8ASVsutklz;b_}z_0bU1%{_q4N21{$h373LAzs@8j2e~{zTjHC-=mmf|pLY#}e zdO0f#Q(VXWmytt)VW2?-j)JZTI(`{cc7j8&Cyj}kmFvd!0zjX`iItM9+aDDw@a?Et zwyi9GTI$%!^ULg%$QY4!04MuOT9!;RN-uF^-qk@%K#AE5jk|0ulJ=BxWC8iMaepm(hL|q8`n}NN8(w z5}v2scRZgZvD{;9|BcYA=*_pts(g`=;E)u4{-H3KdN^+iH?x`+=t?yN&!BR-ut9^} z-avg^76|ZzMN9%iCFI}^imMVHaxjm0uuMyGzZlM%zBg-f4{+@-f^L4&8sL8i;cXBv zv$Tn^@61Zxx<$kU9Q5!?ky8JtMVym~UCZHs{|-)cJ)RztpfLqH&@`!w!y zPVk-EygoMh;T*jpGv9ZaoO+7Sa0rWF4+<8z`Qcl{QWMsFc|(&H5f3xm`P0j0mho?O znN@f&2gMIm|qv3Y%my zHY4*M{Wm34IhZ+5^*EjnLU&1r!4Bwy?cAP(PWWBp;jTju+UN^95DnG&+X=U~qIE9l zkL>t*VqHT86{Rgk&ghTr5uSQ|f%xJYHwJyDFa$ON?E#QgKVB}4yCQxzs#VJzI`683 zb4*$FZl64=>(2?LgHsYE2Cgt>9dlG^GC$@OqOnPC*ii0cavns-#w+PQ^4~A4cvyO4!A}J=ZMDwMWSH#} z|F7|MX?o;8wy3Xe-VT@(i}BfvH`dvY*cx&*D}fPypfB*SvMQ$8KRU!KfPr9}@&-a! zOlLltgBzO);MfD(MC}3$56nM?TOrH1|K|Ls1HH##{2Cz}J@!~}aPV$4m}C(0k2rOt zO!mQnM6BNt^c(A5Do+qbpji7p9P5xdcwKX(E1IZ@&1nOYW&?%c|9t_cC{;21i@Nl~ z!#ucK4qx-NHh#N)lESvHyo^0hU zoy^+N-)+!_K-&${muxi!6e)};lZG1d;lG9=7fMd>#^5QGUkq%Al4j$GOFQ zA<^A_Fe$U0Da!qh6N$1v zX~34@Vx!F@%%fQz8MXWSvO%FM8jhj=>3Z;N*ui5wiI{t(HcDyb$F>NSrC(ipDc-y( z3I9aON;EA%=c|;z3U)=f4S2SH&jRzb-m!XY!r2q)`UO@0bS~)A4KIy4$J{V_Mu44= zNitK!?9!c8Pg4dLACYAm%r2{^3#zD*32Z$;!OX8JA)9+k@)FF8}S_NC|r z+)hX4D9TZYfRHe>iHoD(2uvq*=$za(cnH^nNn-@^RUDnb4jqU(231y?U?mc{XL<-J zMjbf21?FURbhNID&Y4URwcR2DrgK_8yajxqs%5@sIrvRhJuYb`qEnn51 zrt&|O-D7ZNVYe^(*tTukPC7PLY^P(VW1Ah@wr#6p+a050-L>Dn>zs4zemVEUtXi{H zt@&Zjs;Aa`#`yh*{SV;??4uxM=OMHa`2?KoU17dZm4TW{QUo;sLf6~VpeRwJYDGS} zYuS1{^6mFBSwvmn-8oMM=zP86Q~;JheOxFt9seoTJ-PH@PZEG!-`xUnaeMs{KS{FA zG^if=^yT7q3cHUQ*>HG{`ZC8@>|rl?pB5cTzmNu#l4h4*D)tks`1@cnA!n9|4q2Na zUdX8B5|w-+nesXJ#dEnf2r9P_q|&Idn_+tJ)2dZ{OJB)+WiGV^;|CRApYi0v)e7{( z_WBGa%%?o*Yjuva7hFKS^*Gqm&e=`fZh$cum2>2xd`J4sMm*8cH(h$8zyf>8S$=at zsfb+oEl504(Jxu$auU9INa!CSG0zdy61}ODE@Qo)$_Syr3nUE7y+f;+-fNDHVKs|0 zP48`E55?flNEDuQ;L39HzBob~7@Pr4ebI@YZJO%8k#ZIDO+*hGmTnn(p^z$tkUqd* zPS0nUwYx0VU&54zO;j~BceaY?X*~WY!q8tclIfF zzr-?YFDgDJ)b|i%BoyTD!z<*3jzx&zkVBkN@~$DOM(V|)_pev7qm=!~IHwiL@8!qXlycH~o_hQGgMLgSt@(`OkBn#Pv=&=Q(1mv2R$0>QpW_H; z20KZvuFkyTVoUq8GnQh(Ny zhr+Uij?jL?5o3+_2miK4$6tj*I(F7^S&EovG_M3UVpJeyKbE2)Nyc=yB{Q-p)!i4z zX8qOsvO9ur^tZQ(?DsZH?jNq@I!y1*%pz@S| zfV_r(qxSP?Y7{jaD(3$9IbqD}-`F9jkY!*#uns5g9Mu=oF72l8SFMK)qV5=XVAe71 zIk;LDBE&irpQJH(Y!_g(yz}+I+&1n#rdl&Nal?tSMU)fEgC0f^71%1zz70P>yu-QU zbQx#r-$;O;eyWhQsRMr$WvDyT!P*O7$K-P@c)!J&R(=I(y`h(G>8`zU zEm+`BC()T5tNG;p_;wW#DN)KmX<23l;gB?hx_nu+`_@MQx&1HDLZAgqo*@O0L%JI| zozbK}_L;R1KF~9N_ouB*lN+lbR^IHS`!}zK>nMVn3IxUNs6dfkKmR`Flqsa#B^6!k zcDZ6*(tw{+7wK}Y2u(7SiJmo&?(Upm-p5lQG{gF67#MEav#r)Ow7gNOrtRUU?G)?= z0=tcoZ?wV6UnRCssZCGEnS>v5#5vRvU&4m<8ncVklMabzAG%)B_K#xBMGLbvyu=o6-+uj7=HHn#deO% z!%?dm+XgD+q?^wB>gc0w^p~Ye;RhYFI z2Zvr1{#Fh%ttd|+##(YvaYyd@)@VUUbegwAQ4mbG^J*8K3wxNsoQ`~xT9ikULXKVT z?}_FzsEKPwcGW!E$)*F94WLu%aXI!NaV>O^**1_~8+mreoC3xgkEVQ;hE3;KnY1uV zjb%w{HN+*d^r!m-Sp6ylWud>F&`}>~NIjaAe)%;LO|LvGKIRg4U3tn!Gcud9>Qh6V46gCAuh~ zeKUUtVZu5Uw35w^BV)eV^=qF1xZvj!(OPKguJk_&Nl0&r)RY;RyXT0sV8Gyf>FoM( zlCepQi`C~&4Z37KB%Wp(*H9AcDZ-OmF5QM$Xp`%Ej(i%p;aWGofB_x@o7(E8Y;lRV zvrMldacr1|kZh7;S#$^1n;jh>8kfbbqWSgdwy>44xzXai7!B80L)eQp^qOGX@-6>f z;2z7}m~q~fzvhk^L4B*;OoWxhAS?o~Z*TTf^*Pa!&orXCxTC0^DKb=9jVaxw>N?x7 z{KiFp>2AstU}X~FiM)Kh4LWq9d>HYO1$qh+Bt-!EX6Cvkbv>xIQRqchLNN> zP*OiU7ERrBYCtm*GI4TrWS$oTm+ccF&4xhyy4mHAkd@Vp{?Tiwi?k|%B@(lMa%rM6 zk9iUpepeI_B?@AY(>vcPA(179;8fhGq;pZc}{Xo^rPky8AS(jE2brx?u=YzSsfh*E~_R2O6!7)GC)8~DR9{0^> z!zlGic~SkmBwe04cGfhNvFE?diW`%${qYf?^5(O@`;(z)=CZ>t2?V>p3Cq)vsq?m7 z5_`!kL%E#Yuhccp`eBXUrq!^!K<9#U+>63fFjSd@$wS~s74&3lpT=3SQw@>P`0Bxy zKoDW-q;F31B8}OrkXW5>$0gNhZ^B`FEDpihDEdB3TDln~bxOSq{HyM19cMzh_g{@Q z>PBlWIYP?@d1h`i&0}o1AeMLg9`O&X=;VAY-u?(9!(ht*iem`&9G>{U$cEGWbT$ccr1G8~ey zyoOEVKn=Dqr-tPr{2Z;nxTyQn`*IMy8(hEFb?qqH+b4+66?f3=ECAy~zvgMCP-=^H z{5q8#xmXoV+}mF9SzsS_8ztBBqHC-2+-k3rPD|id92A5(o?%1kOI`+NR?FX=yJ~x> z=dv*bVsCQ3A!ro((&*R*35Ma7#da)mb4fIBDf!UYXPd17#>q1|mkia8_qJ+M^Ap4( z18#vCP(bF_GRd^ubQq z=1VPIA#D;%OGYdaQZox8)(9)fQ5X(&X0J<J%d;m5_iGAWMPcf z+i1Pv$p0<^w1LU@tbKqz^V+i#wVrMK{2sI;6#%Vz!CMt=|eQ`eK#4 z&55=uNj3R7AEFf!1Kae3p>!Y@O@5f98WgtP)^s$MNufd#X#y7p->5p!;yM)u)>+b$ zfxpT2r9u>O<#!;Yp|{akqxwTA^+1Pp zpC0`J9a8MKeo=oM?i4D6tMGE#0U~-XUFSb~MYzWo)XQ_=ImmhN)}$t;opPVr_{YdP9YJlLh+2Yc{^0C4PXHh)pEj#*F-MZ(#|7R*;9f zr;wQ9X&n7(jmDLg#~)9w*iqqgT4w*^+EhIbr8Rj_89B8+)$l1tD6+umGiTDJO$*@K z{d+udZ~*AyCyn*a$gUA-rrm)|RDMkGz*l5?mEJks9UCgG1^QDs3FeO~^X&S?O7@XZ zH6Akgv$b}M#DN8SN)~&b86)Z)!Fo3irdBZl4^(19Q}s*9v@v5|gLFCTaasnv7@bC} z*tPProHu232jz(1;vS{yq)yWk`b_hNXX)QDyX^O28M#z-`hnP%Y!bV&s1)`9C;pNo zjZ$cJC(pg8n6<95WcA*qBM-pR&W)f~cv3vMssDjdw7mxuyrDi$p`$yVkov(zJ5r)? zeKS@E2GYP5s)iK;7A`wro14iJ(Sc@~XCGOfqYoR>NP-d_t7|NmC*dr2hIv-=+n4w* z9r*r}slB`_ubKH;DR$6-d6yqNSv83eC(Tl=WGC~S{F5A0$qH)pm(5FrB>+-vlM&GA zUg(KI9fC^DF%9hAOO&sWWwn`*zCX=MGxRf`*paYMmyg>e92!X)1Gug;s)CI1EtUyF zX$@~!_P%VN>x@2SFe@3<@|8qCtc-yxdE2`=5fQwVE!*6F*(WU~xyF;M`MYWKx@)ha z{<3ep)p4zh)_qHznKJ3hwI>m61LNYMN?T?T)%T`rQt#?cT93gULBD_c$AI+Pu760S zs@*IYoDQ4T`xKMH5SO)#Bn!IJxNLM;gUlfd#sSi5?+o66Gt>M~2$WfQ^1w2cag|V* zP{vS`11YiAthx)+_v^KK?&RUm{(YpV;$m`%Z_v6p%G#kR`hkx-f!?6I|pwy%i>024{$om6akjzgM;&pq(jOK?=6Mz3i{cr7|l%8WfQl$JqFVjzi#ns>e<6=<1GOif>cf7@nSNPfgRoal-ViR7 zRl~f*UEkN^G$}1Uc6F+CA@HZ%Q{bDIUqE$I%}gHCAwS#1FhP6jG+Krjxr5kYO+pD< z39^WdmuYE&buQnnV*zUopJM!7^9&~uzcYy>eyZuej%a_1J)Z<#V0}ofO~uOazeNYr z-4AZ9k^7Jw&o-aStADfq(HvFRyZ2Nb01yGDcRgn8y0rQq?^3`aiVn$<^98~n?v!(> zjbc}?vR~;)){>+}G)P|VOp#H6C<2yYqEA$x2vztj}id0BPG5YU3G%FNOd2SYg+`Q75SyFc3B z-v>TS;k!y}vVVN}czZt{Kx~{C?sW556C8F%)NN zbdPUtwk!2by>VPO4CSzz4gXtlFr2A6kw(0FAg%*LMtqxGZ_?AcUmLCX#vi3jn4LnIS<%dG;VP^CB2(-tsWB!#_q&G1=uorDuDL2HkAg1vPbb5( zI8l%1j;=p>gT4kdOE-oC?-k1Y=_fn)5;BZqVc8pzBCGE&Zv62yyENKIa&L)Ty9*;U zB1S*vN{F*i5sG)JhMp%?c;SVp$p4a)luPR;Wg}Cl#hBUJ){6^ydAq1MC0*j@jT8Nt zqQvjw**z@fJ6T{&Gfx0E&Bz_e>>QYk+5yJ`N6F?_1PwN`RExG@Os8udVacf!l~ ziJk1zjp~bpg<8uT(N#Tjp0;Ndp3mHfAGnmPmD4U}l2+yXkK;&;5{dL#6hk4|WXYQ0 z9kf7$s1TniSx$`vabsx(&!+y(xG&a9etxXkx@DJt(sjKm{#oI^iK5Zgj$+)T%w7De zs$=wP3T5dYv1ZF?^h_WwmW=1M*}GEIlPPvWd@un<)@6cxK}Qx#3G zI94p{8o<8sEM2{1ztKEBk=(JUUP!us4oOF6x5-fIG+gCw7t;^!cXDv>FQl^ICdpZ^ z(eIkcBr7=LIdmfYl&EX`8ji`RkY~M{^uW&oISkaYDKfKYV6(Itp59Pun-SW3A$DVNO{n<1uaqg&}yaz>wuy$ARUXK{h}6GAIXOg_yp;w zKi$(h=C{Y`tt|YP`Yy{bZqL$HI&xfoQl*#M>wC2uTh*<|bpCi!$gJ=KKy80Nm^${Ck{P>_Weg^vg2643Apc=#}_BgQewQktE+PWbps2m<0 zPhcC`iK5r_2{i$?%7Py{^4W6}ZVHa_pI(Ah)Rg11w?uyZ8&JuRuu_5L!(!z;nvP+8 z)TbJ=|1l;-%n2RD>rn%B!73ygltFKwSYpp&s;mJuwIth7oi-?Fjs-JJt z%=q%md7AC9&Rgo^ZQbI995x*|qx2RpAU?-Nf7++bbCj`34C?j&^c*5SDdhV+633Es zyj3BR!pe~P=WXr%O6XK->r=IZ280~MQA<78bgMEs%kwfhxJEWVz+-^$(U}mtZCNLh06S8fv&5h>Qi3w&p zmnByxSqPL9y@EPZ}{y!KKRN){`@opZ7x5d~b^dICZLq%@OXr|Hk5p?MP+-)eDH>_t-v+Od9KmX9fHD%75yFMBsNND26PM%= z65V9XXq5MEl;8S2$0R$f@h~M@@Dd0*^Q!zHbLQ;JQSGz4o!D*(SOYAbR8Sz*x;zY) zmgkm-u-_j+3lDO-&ZrUCYlZ2HC7vXivYDv8^_vH#I9<&vidlv@8Aov$|5C!qC1~5) zIcsjnY7f^f(PMYh2aAmfyjIn`e5@+1lCOC?tpeM`hPv~$B0aZ5AXB{%>8YS=v9?Fh zkk?Z1!RLAY0<*S45>V$LU8);I->?2G0{Jw4M5U(zb!oW|WUoz*)*G*GfOL~++UnlD z0Mk_f8M<{zcK%%gdabIX&D^NN)HQ)j%`sK>kJ8mF6svmd36o`#@H-4oykPRVe>^bD zgdG34(s^UKp|t%eik-h5E};Jd7)}D-;QGgHT95(7nbIfj7OMkk9$?WtomLXU*Du)< zmt%pe0Cwx7jxwG1tXGUu8h<0%BQlfx@wq2Y_w*dxIF`>84;zuCU%A*>b4|6N+AGos z*)q7jd2Al^=Nxi(*|#v-%*NU}M93do)XdfKF3zvK=cX^+3|OuIEJ(fz7#G_$`4(Gh ztb0qX(noTPE*$#cHbPyc>;;R49>EhGfn+Lq(pKgv9^lopJgY~0|Fu3-M(6jaue-H{ zW&^nm`$w$Ei=}{9pUkuacaGn8z-*@~_AL3S@(6cb%=h*&kIQ_TZzt_H&uj@j^qbkWq5#Katr8NLCB`<d;NUsN)sw;{3aSdt2od(rcB%tmkN`|BV^_Qhm4&-^+Z?``^7W$A8zmQs47m zm)uR2D}Q#VwN^EjkbkAL_4?}O$SX^^2b0-wpwirhLkWmpGDuXA63QMo&Y&tweMVFO zhuKo0XL6o0u75%c6hHfWr>f38JxiKu<~_BN6D$Y!(NbG;mAM#3;P>HHQa!$S#%xZr zy+-WBkgP0Ioer|3&_mS>x;?gNVu1@ibKGKjnNo5MV1)hq(ocwvDleYcT>QQtfj4nl zqz4`Tn+mW1&m>AcHj!n94IoL!lxhemT-eOp`%;T%mW`t?Ew+LZ31d&zW+b0KbjG z`4hPaAN+m|n@7o<;I6ZlcMMl?(u)vj`zgu;Phc322D`k}E@4&%4BQp2N;Fglev{hVkNM&CE zl^WTIofrD+#`9&o(H7*3_VN*<*X3jN`>nxp_hLD1nY=?jr)K^YkGTCrm7$()qmD(c zJji20bI!>i5Q`N;$;w@UZR6wxKtwvdA1$UH>pBCjy|IRv4{J`@udfU4)dH!DEVSMf zzT4#5vuefgPO-z@wy(=I#lA7hI1i%R{!QdQI)izCCeGo%&ez~X|1m|1Q0eEJI|=CN zcpR2evcny_C#=3=WKSN4F2ztf#0p@=0W;t<4lD;}+?|t~1E<%Hha=7LS$*(Biwj#GQds@5|F)tdQPi`V4ZH*qw9H`q7WRx)mUa{c~5rd$L&=! zf6)-4GxLoU`_#9ra}7~7zC$E!rYn+2*u%OU@4&!icL4fO1a`@t2wxrSV%p68 zQ62MZk24hz$o=nDU!+-7?ZCUhOIaF z>C8Kksj{YA`Jvzsw(GLHboSh`-HttlvfWSz+N8h!s(K3xv1oq&3$)d!W&HamMc%;~ zI5%6gCjf@A3I2#JHd3j!U43i%PqmJxHRhnuU)T&bVzHm!d2wTUj_hsUwE*W(?gVGt z3|5UIJ&Z|lZ+v;x{}f5YooyzN)4jKU3*AO2g=~@W?|mi^Lx&O84v(~}H^1j<|Korl zEc;;r86g2@mz=`1QPTX4n{5w?p$a|ib!O~9jhG(?S`<}1X~tcIWQL8C zn6nq+&~=pPGH%fc``#%MGnQxAXDVZ?bBeqoCH~>Q_wXd52Qf~0jXX<44SJaiP#b#0 zftBEad17iipqFfixS6mrh)g2J94&hb`L*nr%W?yrhCAF6$S9kbp)SfDQ91@ve$QDu zA#bB5HuoNU$w7*QQI%yQ?#kNqTZm0418nHc7NDitH5_iyauZR3FD~9j(G4X-JPMu+y}8@`4N%zn`lt z>tDCYb%$@3$0YB39#zo6a;Uq9E6+X<)tW$lh$PDLtWTE|AFw81AE6|~WaUDI5RZRY zNh?Ou4Cd%Qf~tg7bwug`_SXc;tA(JDz~m|H#AmP+g6emigSMsH@`i3q z-g)sxuJ=066KaN+s+G!D*!D@V!r`@hMqr}t8iFpN*~fGDWczQlDdoCmRsx(yIVE-g z1^T4-MZ6y^WjPy7@QxEiH2S>mg-4w_n7^lV^o%f8=QmNXYx*}5VV7D?zb z#IV`LE>vPFY54Z~jQdHCk|$TnToU+AnB;)4bI8qq2h1YF9d2)<2Dz;eIgfGDb#DQU zt4%g0`Kk9C-WU@LdVD-RO6{c@lyn57crw(5LRu`MYK=(-_J%+jy4{mn1XG0h14Cx}$Lrh7g3OKv(opZETsuxA> zbk~u+jiaYJ#WW>SVS_2k>xhRQ%8FZZ(BInlmhsrDrqKdw}2_HxrAkf-^C!P#;aDy%7J& zD6dqX4ie@#JvnLqt319HM&O3cwi6-CP&8~N*+xLq5Wz@$P{H-nAtUqC=E2UspaPNv zA(??85zIJ^ZQ1nrb3F+7+}}ASBOgM;;UH51&_QXG+g&sR_1z zD7{dZdgiB93Ajl%e~q2^_=u^YECr3%j!K)u1rkjHu(d8z{L8xn=SPZy?`lPeP3sSt zz>~EiT9drYx89zxVx*fl=sANUMq5uTcm-Q{fq@cePvoktx`TSD7Gu&*A^t`D^|sg8 z%XJ8;C#x{>cg~T-o~*-hAqD5+xZ>wE@|AAO3xf5&*NDq)S*i1WI89~2lnJD3rxBZH z)?n{EEPhq!R(3Zh7EM9)_ibp7(nM;O@YH2ca{yc|i{4a@+=I4X``kj-2Q?*}R&y z9TkwS*FW-iMK*)sodWK~z*T}BLG??K_8g#Zq!c%^P#WSh^{cQtp|cTE{_UoLh3Mhw z?|f}`n(d)f;=&1C zkS_cRuzrO)!)BKZrGnmx+g?0IhaPH7l1sn4JvEG@Th^U~CDcIjupCApG`kEm*D6}n zkF0=*Zuse}yTQbCK`lEPBSy{Xod`*2-nE;eIB z*N$F=t)ET9zPI@B_}^|#`R>PppXRSGD66SS;x|{qjns_A6<;biLNs|WU;Z$g73v7( zJQd=}dJ+9}iDRl#rF1{{HkOUTwPZD5Y@Zl?w6K!YNCJpvRPI9`173h>zft6cj$`GH ze_K`CrODr;<4fO}tNqhxZS3!s~&F`HIsiNYmIED{LOGs^4Y4yz`YT1Sr zQ%LvXJv*Ka$iUuL@bZPQ)SJlI1(;2{^`p}eFe4kHIcpBOKJgSv-MYhHNvQO|d7bXE zIi~a!!0X(M=4>vI0w3@0hRJffN^wQ4p}>Aw{S{~)smJh!3>Mjb5A?#d7$i=o=@>2$ z;=3Q5Gw4|T?U?5u-#$#dc}u*eyeC5WBK!5w9n9nrpSKwZDs=66}nvnDssE7WCn*DLTlRQ_>!saw+&B~_|wrIIQDoy;}!!61Hh$4OgiGusbBu39C zX6%j0_!F^sE3sHR^nDw4@uu3e7B=&f(^&MC7M~K%7sv6#!J+{`JYGmTH>sPYHb_fT z>c+ITNRxNIHr=4gXXZ;XRb1>il zZO4@qP;)E;&s-sqD~nvjuDF22gFkMTbr~o-tOtQVz)op@1@aBW0b6c9NSD9BkA#x{ z1C4zCV~*@u|C<;Q_L)F7Rh2(CNQo!KvmRGem9PGgws+eC(vHVNO+%GBw3_Gr$#c8j znExd?mRBxpE`a7@BR+mN<8J;hab6fWP;<=r0X0WzT#-*h0z4|4?MLmJ?V!9gJEI?YlokkkB?zY zI@&ag;L$x#N~Dltv9y-`9|6I*p8c^O-93|{5#=PZ^+ZUF#_!no5@?)BJMAOL zYq&6GdS__uX64&V@?r};MX(u~IuS3R&&?1*8$AKd1ASTzGSiWm-mz7UI4Oi2aD^b> zf-sl9TtrR7ABh+nO;!C}K?$EXUxxl$$&EK8$TueVg9>)!RO%$(c%`Iz#R9NTVj&EE z1A~P9$6jQz&T-?G+Q-IMg>2;At{;u+IyfE4OfRXA6PW6B4E~_F_o^m1*J0{VV~R;@ zsZT9%(tV6I)-YL7oHgA!n8tpXwm0kD&3-((gfM%bX#RqKBuz(&^_nxYW83@V_m{p{ zjNSby$U?tE|8zS9+?X_1iF|e;%Dak28rWt>GdS0MYs}e7&#tFqWq`hPPQ7Gi^rl&Dw>XVy7@Rk#Uk1`Tr^|Xmi!H~89Z8i^&<)xKvCdy-idG9rFC#1w zRZhS=N1$H&aGBDUg_%E)yN9Z55ogi z4KZ7{$5Zhu26987hF{A@m}N1t`ag#@ABgPpev3F<>DKfD$bHH^AVgRE2+RMpiCUBC zSYT;ylZ!j69d)Re&ZeokQ>KurCN@>ig;hk;gZw1jlPyNY{fFEZtRxq41~|7fe-{NG z@hHLw1C}TqZ;RX~#xpQmMoCUW=Ik}&1@<8NX%UkOj|+dWkz9N3c`bp#h^Xqel8{p+nT{NKMx4K%CzFF}Ht5E#H(?8f6PUjD#exHs@FiDq zXm#LguSS;C1Dw}_jMZmvW1D=#(CJ-%*cgRw<3>|!k57)Kn{izY}Vz6dZSFbKtB#;NVb>r zpnq8OxWTE!If+0;Lk57y-D?OPURlLd#xxm4fFIhLuC!P-M+&X!KyL+by%ntyW!+M2 znk?1`=Q;MwGCSnUgz#UZt@ej?5X9c@0CroYN(KZktytx`+N|ci;Uv-??*t->^Zcz9UPbt1*mwF75xo-Y3Zuup)G%iG!#S_@$#hOM9yxVlbz*J{-M2zXoVbo`Wlkr>{akDE|? ziT+$&uh77DnXEa3z6;Vrk+s(Q! z-+_Mh=|J3ZvKSCjbCTe#SmVwGL9aC2N|>K+iTOcTcWW-#6i>}o8+Y<|`H3%_xyhqE z?GyMD`n?`JAMHouyoL0z%Ucm;vk90F=F4G}6ha((pO!Zm2K+Ph!E0Px7e6MAKAwlJ zP8Bqv$Y?y;K_{-;(3tC2!w|ugPfZKeZYQ2ejq19nn8w>^Of4LjIOUet?%aMe>gDh1 z04vC&rO0bRr&R(4_9kfe@8ExaKH{^;_e(H2Wzu3dX}`}0e;7ilrAqxO#UM=PTEejU zi$b(FZ>+8a3x_E|-MN<^k#I+J7Xl0_^txVaBaSM#1zsS@)B4-UM*i#kWi7~kJQTP4 z-Q>R#D5aMKxWy}|poy>hr{K5GyB!7(4eYRYROlgPiA?$LLOhQ!y1qD{D2^smWmSA!sxJks2_pgsP8=Sh@D9x$k+}- z@JMd%F1n~KD=D%()f8_&$xj4Lw5TX}wXRzZULIIAIYxe}sF8>iRueq7R6Vwjt8!o- zkDz*%XTVVRIC^PjS)}xz{JS7bO1cHsbakpjdT(u9%KB1z-$3@!FOMZ72=1-}If$^@ zh9?YwE3})&00Nxx=*N2l$Ofwn$)Ni_rI^DoayUbk4%%gK+(p-|)Z&o?f+rrgJ zI=!am0$~V=j(-RB1+(Sx`hf)8^!X&Jj;6G(!6f^~wGpTPHsa+~BPO=e=_|VM+hPr& zX&gBG8V#l0w{8(y_lBLM-$K{iw6s4RZ2#ZhT?|Kq4U;@11Sc(ZZ_T{epSEp6Q>t=RF7>rZ8ir-(AUg=YJp%hZ)qvk0f;_09N8Z2G0rUEnV&NTmkOoYZP;E zWxiE&DlifDnB8rO$WqM+3YCxtKkmKy3sHww@@xHz67k1|CZJ1+c)SJtlFxIaC;AUA zL0IL8#c59N9QK6mOb&Gh3iK3z#^JGcmdLwtQ1dPaHtnbn4n!nAr#3>K{ME>9c4E(& z>WlReefp!oi0T<1gO=HUh4wbY(B(4;2%ASD5_Mo5O`$bpf$18=l<$*kyOgTxU{sHQJ z=xY<}v(6K=7@*SoL3Ga(|K%yrf69Q;%w%CJt$3G)id|7V6`yhe763P^lFg8YtMu}g zJV$NuqS7ea-i?S-y|L;4b&Tb8qgAQF^V$Oyv{}@IYB`u7!8(^}UFuExGSoH7AGhsv zsg!C8{?KjhqWd#Y@9t+6FZZa&{&MJ_9;w`}6SS5d5k{sz?0q~n%nDiX57SIj8$Hzj zltQJ`n(ik3>J0h_SrW&SOO7s+WA+rBdH$0N{GC>mpCvRGQw9i#ELo^zKjKg1b!ok5 z_g8ykY3JtqdVP92A0=x}jGWH)U@ME7O*f{C3V_&2w@iljr0zEHsy2$;mKbTpU;eA1 znprvUn{H(*()aLbMnPbo>kFJf2*!znJKDi{oc5<1AEqq?yCd&Ff?jH5j6f8L%d%1P z>f2qp0sN49Ez44JXAH~L*Z45FrmE3wO`<_&eH(DxZ#N^`5Of$UUDE4ZMp}pvZ@;dH zR3nR%PDxXbI0O3R;a8M^kPwnFaYxeL4}rjG?(X8yLp9vNY1P~ATly~ebSjy1 z92)XzueNuekNmgc5YQOm``vHbQ`pR{TLa+euG6dD%zF(rTiDmjn^p8=Dc^lf@>sMs za4s;Gzrd8ja@_F^v-EYU4u=(ztydi#k(6)CWYG#VHCu`XR6+haIu3LYPfWow$(>?+XgSv-Wer*R72NHsws;% z_EO7cQ?33qzc@Kw*)&U)*B%4aQ>)!@CccZS)>JLY0@&tspcaP ze*~=muVW47vLO7N=uh0LrB@J}6Fr9W(@N}z1ZE}?D&cjT)I%vs;Z}ugjYHe7+6y-_ z(2}8Lb;n{-M>{iUadH`DOg1bc_BQ}Z0@P|ql-`?ay2GfeEB)l99)AM1#n>SOb)M9n zD<6y0t&at=hroEE4x1g>?8!`sD39!)Wd10v1h4<{>)d%TZ6l1gZa6lVhjP_RJ^v?k z1`tICP89S1^L`trrb>1^a^zLrNpKi5m68VVZcg%}xA<3NPSH(PVOW3!=I?}o=7GPI zManzFCZbUqOU0gBdo(cv!WO%VzCn*sI zquqsp9f~V9%Q-|QCsdh@B{^HZ4?EK+nR^=*-E)q$V0JfCMF(c-V3=mjCREKmR*25p zu4hAtL5**m2^Rk>NunS)+}v(jGUyAM;z)kyv&t4iXv)oAIm4OdXqRsCAI`yS%6SOn z98&r~&fzc`#`#~I1NJ|h0~ZbB`2WQ@bpAKzC<1bh4TArZbCj2>N*2@QY5Wi82>Cxb zM+_izZh6t}DM32$FAY4huklIx(CNKGzlbIoIAW1G$$QY*0qHAXTuMa|gkGZR?>1-A z-w%7O07e~$4hH{Gm+*#WiLg{Ii9h1@^or}r2*4yM96v~F<^3RNdoIG z&Qu+Oa_5!H&1S9nTYMF_d$358tr(4qDZ!cCIuL`pQ_jGe%_^>DbLNOv%2?Hq>~WAt=G_vcE*qr> zhhR)wLLp=zkRkZ|pYSPaYUXz{^}Qo;i6rBf@!g$I)3vSQoW1AI4d-^MMi7(aFdFRW zs9G{)ff!;)bu-RL;~CcKD#ZCxFbE>gDfG^;aMTCMs3z8od9z7Kde(%VDRw&9LiIrC z(M|OcDP%Jr4g;`2K;W$o78KsbK{Gopx4^3DC zE8TVD+6A%M`uv2LIu2mzLJvzL_8=HW$smt&lSf0cUo>fXsA8cBRJG)q-bd;1Q%%sY zgj%FF0V~0p#m^6ahU+tyLveUL&5A0LpNB#Wn(jbxlYmjGbOu-@42uGFeHyPAFUNyf zw;%PD>WA*`nS*L3*%qENY?7S#K|43QZ-`E=DJ4RTpQm}yA<-1{s**^z-0wNxltJ+H z=}Ei5OTA930=iZslYV?fF@UzyMCP%QodtaB?0lOKUP%`0#_zWj4MxNE}+eM&v{b#hJo z_=tX|RXh$uIAzbkY|=_5O7OR#CE4L%5!jQSR~T~GUGmfS?5kQlX2319@ShnS%Cv^H zw4>qfO`4>4Zd@O8yc%D@%j>B9?!K}Nf&hJuRJ@0JiZ3^kEh~#o*^-jx z3}@a@e}qQ&ZHWuLKjq;zs)bhTJHq*4ro}#LZ|Lv)G=gpTK?H%k+Zhgj|9Q1u?}SnI zn+mIh(&n$(q=iZYNCvypFSolPZ0;7}r3;#YS(N6~$Uxb1ELiQ~TaTE+nsjQsXlpCk z=*J?^yLRRG^+I3BMXU=E)FEwimGkwPLl@Eke8iAjd^y75AT)G$LRGPf+t)@W2pR7# zMY0iawJ@60@yI>l&~?`e#=s2nWGP3DA9GQh)KQ?SSY(+4&)!-_6*-QF>(*qJO=6Dh z!mW5r6w|UL@oG=~jixiy;FU?V+zhOtCSx3@;9Aup963Ox@vqK)PLIwLWX2Ho=M-qR zlEAtCe0RZWorC=$nfmb~!*Uwh8kVwNOh%I%RIoJ5bxbPOa34X1A{y}y|*gex#(c0y?%`=D4s!kQB`*pZQoA=x4~xfmmy2_g6-wUJ(Yc~GQh*d zgrxZFSRJwqCdnOp3`YA|mP-DjZ08HBw0GH&J~d0B(ve32ugjW-Q`pHykCS}2z7U%tEa+93dFATGo^;tT6PlqNIi$(-zC%JcNheMJ z!gFCTGt6Skv_+Rb@qO&lWc53UP&Ac~;Iy;bKkSv)cOPTP%+??6rs;=hyDxm?+~>u1 zJ}kRy)Ve$aZI6(QXaQJE5J&lCx?`1R0h4?>P>{AwNK){tP5)?W$I|dzZp0|yX!rt| zL>^E{7*ohX^G9Mk@^QZ>rV`MYRdbMdmuFB3e5}-*yT||*4S!vA4PA^&RqygrpT(>& zuxN>y1$6=P40RqT@ut{p$zuhjPa`0#|IB&JIokE{dp)1&%6{gJT(}3HkfkA z%Cn_kEe&x-`l{%uQOIE42eHO(wiES4_=(~`lOc%?fzvlJaT(LpHbx=5;P)JeJ=)tn&#kGTTvvJb zw(e3`wBUx*3>-0SmmR(07w)F11|DGWT1ComLaWk-jG2KZPKy!y0!++R5y$R3Q;eo_ z(gV=+`jOHGc1W3JUVnqmg{WlGMcly~Fe(d-1#Oumg~AoPK;K2Cexy@O&{4)T>Dk$S zB8nB7^~j+vlBqqrH_Y@jd5twhp?8}6|JnQ2=C*NU(fzDnfh$jy?VRZ4S7u#zP93l9 z+3`7fsAA9Evz3|}LnI_|LJ?d5l%q}j-*4eX0^m~*E6zmxkXR(pjYp%q(dcgYiFAV3 z2HQg`(pD_wjG*?FDdlDAX(nBEM8Xe!Iuj#lU64udvmQGt!IS$Rh^eV8A?C2Mgz8Im znbaUqSuBX^8-zZ^Tw+(3Aq1C~sbqAuEDkx8UaX9-GjaM3qK1w9hrY5XySySn(oNUp zKJsD(0$_H}k!EAcFrx$;(W&Dzy3W8)5qJ^dsH0)L(1%fafHIg?7NKAa_FtGj>H9fe zDy4GDOJADdavJ|WZ{2=s2C|l(Q_{p$x0Xg2hY02wv|%b;%2*(5mmZGO7(z2*$cz?B zRjzkAi-7J(jN>Gf!bMnhQ`3OR#6LnP0yOdX3L7V3xX`8s(~a0*gV|No8H~&`E4zkR zF>cAjHfe+qA7KzC1eJMwTEqHtR#qkq%N#w8B>A#4%KDd6T7zgDCL)?=0?7zY_*xA^ z9TXn`=xO6Y3YTrHK$<#CB5&dK0{ zWgu9iQe|auioDcZIm{p{v8U8xQ@5GBQbklVT1)O|h^dQ-1gAzUWi~d;4ra523C~!` zvgP%3S%XV1BPgJYTKC1zpF3PN1&@!dzdX;!+|Bm12O;hGC=T&rh9cHoz*)E+j()%2 zKRY=Q|M&ZS=l{V;e{k}b!O79l@t}WlG&uW9e{gnoa`qR{-&7~7o`f<;{?cC?m)p5- zcE-b`lXx?aSy@h~hh3T9znd+`i_9}wmd&{;^U4hW6VAdi z(265zw;qDxFz_Iiy;K<0%S#b3CTiMO2o_wvwDtt7HU-N~LT+d&BaorVLUmI8T5>2s z+Cw!uj*C_3+)}k1Wp8M3R~_DEsk{-T|7gO`O-hV?b=jFys$e#9kkUCR1D#t#qL1!6 zYKF29p}1ty&rlLPLu`r?+LabA9~?xO6@6Fth|X{nFidpu!yI_4dh;ITS}Tq=H1YuV zL{>7;?#&P*fk)dV#i&Oh*M{VVzYG>8>>TX>^`w8aUyR>$ETmTA*|#;soiA;XdT!Py zAs)f7t9{EaLrAGj<+)FCN!ZeJ7T2=G^(W4k0~RjcjmI1fCo~tkMO_ZAa+)$p)@`7G zSkV##np4$YOu@LWUG{43y+{-NN#rj0w3_g3XH+EZNV7Cj@S~6G@^A`YT1GIh3?Yj#Gsc<@(EvBdiCw0AoxZAo0)Bfq)T!WE3z0$pUcg z9E?KjeYCr3a;}m&U515L^VB&GlNmBtk9x5dBUSr;>sGc-rhaxWr;xCms48e(FoP4P zjCgep+L|O~z&}}l&f_D8o&J7&?CFN3pJGfobLJma{e!L_Ob}&M|V6%4G4SrqU1s{BuKiIqaA!OX~Fh)96_CU_ZHbYf9j zVJ)d$inD&E(I-aW1)0!%xdLuD=&yn!h$aM4dOHnf#lxaFj&$G6^GiNBsz^sVGYd)+ zV^UMKayG2G!fmwwVR#9P!=ho3OtOl0q zhM;0q9Idh{qz3Ya?+%=iGrw%E0VtZ=11|^Gk`xv);WG3y!MVc(VXQ8UClFs`v}+pd znu>v1Hgp}$pO6c23i>@J_|w8AZ#fXZ+}#a-AHIM0zyHjSg4$`Vh?Ul%z1=+C2v;F} z`)>0X)0j%TTtTRL)zsEeazRIZbgMHDr^U>-Ya2@}d~hssHW&k|-)t5S!=VnW&Po|C zH;XOC{#8U>CEVAqT&ida@KOW}Spem$6(%f1SfYl7w8?i+c;i28Eu35BoBm>i%ynQzH=XeXVlq8|g%$IU*x^ zF8Ke4{e&W`W*Q;hX@1PRlOo^f(~SR*0^y*vq8O;-|HplY{~rwoXZ;=j-^Q~7|8LCg zbAsY;l8km@V0|%wL!@j3S`buBMoVW^Gllj_Lr)W#pIwRv3DmwaRCJ;aa^>-Dt;5hx z-fZqE=l>gU{8LX2|35lCJ9G5^)8qbN$N#tStjYhS;@O)IMu!AASR1FLe=6mt}fJ5fQr(%(Ul?hSIWJE;?Xe<`Q}X z<9+#Cc;H_JMEz7(TOwcmmicSd4`D6hTfG(m1 zheeZE3-w|F`iJvuZK@ zD(rjt9iP}Z;S!WZ3pFCVmi^GuZx3@-xGN z*cOeX&KD(dKUf3MG1@1KD=XuN_5`u^OVE}nQu$voWZqPi+CZyPG?HN3zqLf#_|_hn z5EwE07Q7gdSwMxm9mDFnCz(#yB080fZw6x(@Yvc@B|usvJ9=MXeN>u4iV1ADN}ioP zWhFz3J9D;8B}3nq9r$`i7QKvALP#SblPq=WleaysVF1ipq1?CVj(#h+ynWL`5ieDv z$l0>`vnNv#y6m+H`)-b|SVV*Y75_h!VJHGAcQ4IAz64rKSOUpMArhja5kfRaQ666g zSC5ZgK#KIA>pD^gJ-g+!iREMurl2?L&66%J2l;ok#>`Y3&u@ttt=lcI^%j^hl!DZZ z-+FP`ul0=$C9j`$MV7bLYF3VGEW3vHz(0^qnyE6Sib3Yv93459P()~!c<9|jB=V7~ zT;#)aYjhorG4X^oO+bde-ZL2sOPvUuixL$VKBvjfdr)L!>F~7|iGTmyOCcMJh4%I^ zZ&{WlJ=?S)t7Yp=M^C5zA*GaIlqjZ-0-`9o;i{-9^4_X)2B+BNOYlticGW`I1Opd2 zT%IB8PVX1nG3^qjy(GoI1nRHV8SnBKv&7Y_YDFvQersxCP5W8iyBt5+$%+*yXeB|g zE<1iIMLEmJ{_J>dM#npTYw+7W@GBMBj3u!dxw6w#YUw@T>vIr`TQ0$)MJq-2LqWd< zt=vrenrp-*?V&H#tvw=XgvGS0n!21VZN;tl9(bGG6e*I_nYp=TE@*X)e@ucor-qMc zp>w};4iBtF^aMO98&`EgC^^t(xfMtA%iZ0uKairS8T1(YV(^vedj++(+(;2gABZ5D zR2)pHVC*$8XR3F;4WK=N3_ZX_H{TeLZw+X3QA=>b_nu%g4RTcnAYD@g1FMe5Q7`^D>4_of z!8njvcQehRr`qy+`ldUAW7C{FtW+0jQg{sDvow4D{rnboii@o?Py9vz25* zGyQB2T)n;33*UeW4_H=v9Zniay#p<8Wy$l zig+$jQUx<%JNP`U+m4g2ve0?xdC}|6`{0?8turAz>fIgee>=2mPREXNcjubl0L`k2 z*iq~5Wat~ASYtAFRJ*gQeKT}xO~;>&a@Qf*d4L{v^!b>TERKkTlLfP1{u|q2W7{)Qdb7V%3yjOz{^dU_U zO@PyU6%t8>1CbToMZf-GuIkgd6`U=!sXr5&F|cjvWS0h$sDLEZa62{95P7wJ-38El zkw11VDD&J7mv*%Ee0MixbMrhmIu0j3Z|#8&_*MG1a<0l(o57ZEgGm%bleM`s$1+4@ zjL8h#%7M8MXZPiS*?hz)r9pT85^LsMc~F|oz-fNt5BURSWty+m8)BN<`B8MOZ_gN zmz3SD;b$#qE2ihU$=ceSb6#=&H`TJuq=2i-|NW|;yZ?P~yvzT+mB%r<6kJv8yaVI0sj(tiGZZ(JS}ULQOZiQn=N#@|ZQ1ii>3?hNLdv&5P9GyXX>L@Q zZ?|D}`{wy&w?R9OZnEHP$Q#Z?_T@%3x>Pun0}0pN6#aomVq>+`hS}bt%pmiouMHZg zoY)c^&djbhx65u_)>?44`9Vl8Ed)SaTv&T?6ySfvIEeH{bnX2k0I|58yBQHeHr3UF zh#@kEVZ*ArxUNn;0%LR+%n(kRw%w|u0Znm)iK3@wV2m2ystWX7KV|wKgM=k9j010q zypNqf@Mv`VI?p-Csg~3fRgT2OK)7Vq ztO-s7G|8z$evVsSA$JbmML)wJObAk+^OiYB_jOxdc?et3bA6i~2`~xR;xdGk+S8x= zBx%Jxuw7-C^(}UnIAZ7%%W66w));FbGNHgALd2Ld<1o8>IfaDfNWMYqh0)ipBVL_@ zww6N#O#;fu0(2f9Ij;2g<6}=ZH2oA~%9T+5QPn@_`oRQIcE}5X|Ki2u3sppHxjT=K z=bt~P*X;eEI&=}oO2C0GgA?%h2n>vEr=!-0r9BxYVW=syf+LEu-8e05LxN;tj65HE zQOkM*5~O{r~0g#C0UoK-X5uEhmv@x$>rhyrF1uYU8ico_~6apjEhaz*Ul z=hn61{x7Dn&I>|txTIfD-TCjy;Mm#!9rurR=f7Kdn(zNsxG6gCcGuX$vc{fYy`L0U z)$ewROYRcod~9x?s64H0_uYMYWBC4WE!$mpKgPb6=%Pq~s3@d-b@}sQKcUE~nOc22 z%aBLwyXX4Zvl{;&Nq6UlVxZRl=aqB+|Ix|u+3x&zE6BT=pG`WcIy=KTN3&VPM?`wcYP#PXoT_1fI|s$! znvz&T(M23zkXdHDWa83~ecnmzFhzOJpW-;Huv2dZG z@O>N(lXSDT9}~uv&Qh3H^WQ&#qj1TdqI-ug8oX8vU&2o z=Q-GalTh}af02_wU^LO@*$xnCT?YMrU)cg@@KgGmqSrx`e6oNEKo`-1!=gzXhay)y z4AtItBY4MDDo7gu)=cAQDE|dHuBrgk`u`4&T={=`cC?fK+j!QM|AH{GFp)idCzKH* zyV4yeO)?@>D+A}UB_djP=V0=U?HMDjNS7DPec80t$5%%`~NF9{_E)I?A6ZycPr1z`d>9ySu%3Cc}Qb5WIze_;uuQ3IBgUqbbH8J06b4LDO^IvZs#!AD`sne~-^z z?fCyT9*3)|dGE@32c49g1Y;0kR#L8;@px55RvN<~1nu&&vxG7*LVzOHHgGAA+g2mg zT%Ob;6{Tv>nSU1wtxEyx4UB6xfExEx2DxY)EAZ>aRoCUy3Q@bIhpL*`1WbeBoP#fF zQp;+5(cH000DkQi_Pn1O{_mqW#EThPD+f?D{~sK`8sy^tjt7Gs|KG-AGCCN?G&6Wz zrBlCScgwN6wQN|rx!KBlg3vvJ#MS3^khjLHK3;O=7p$Fhpl%+XCf$HB7o{Ui8G#H< zRQ!VeweBN+@q}_IF>rJkLA(tEynPob;cFT{Q z7!xbt(^{^`%t}+&a2C?bT-$Y1vX8~h#snOgO;5`of&&=&>SOx0>n|cW3%tYJhj9=h zx}Xfr4#8nTw^c=X77uMd|3@lzp-cJqM4 z8kl}WWrLc4d)c5&x9lKpt;$_G_v8e+^plWKuw8|r;`8Uv#ROF!QmcVIL3nYRSvZ>{ z$?&I)#ngBY3NjCykb`m2aRbMA%;{}7i45sFFKU>-6N@1RzoE+!txdR*q za}*&;hXjw19qY`8`0vPx#nxG|dc5Mlolnj{PZ12+^xs8&&}pHKA+9W4)@Kdptp8)b zsEXTNAQEg%5htNv?(S?l38H`nFuXz`T-+iLM}G01${Mq7K`j?&j7T8-UK@h6%Dcc+ z=znu)b_Ew4O~joVcTOkBGtvWEPiM3Qbe&tLUD4G`uQcK0Mkj;7XeDGcW3-)Y9ALTah4glR!#DL#1N0!uTF!6?-vv1sWxJB9MwX7zwo`>@yxU3< zqVYXZYLKO--w1T5nQ>2_C)yOUgoWK{=L+`!n)9Do!XV?j8r_6dPJ!zE|DF3Ejs_>Y z`yaORSm!^!x{pzrtco3>-zbv!holI(c~4~FRZoh(&$FML-PyepFNpp?9_x6pGbVVZ zOclb^SiGn2H8Wsjtt@1svx*5Wu%9mxk)|+Mx1*(O)b6{enuY-YV21)&N=Ys%!2Viz z{d8I+qkk9be2|sGabAM(LYMEaFYd0bSHBLg%vXhKNC&iE^j=8t>7tVtkfx0RA9xF7 z0K*=*n+8-56~Ixr0MPSL%qW--EV9WEc2(8ueqKGC0QNX5(e^nG?BoR9LV3@dQVY{>x}GeiKJq6{yX!Z`vXgd#5B=7=!l1BStTa44H(wBp=o zo%q&3|1Vbfm4dCo{tSaqHTWGLExjD~Y2c&l@fdlG?n~Vh1QGb3bYX)*cX0F{qN-8! z9K6Mm)JDB9KoOIR;=EcjFf3)NU_wG=hdS@|s%>jMu?($~4QrFAPL49ND)48m)Ekz+ zVGv}SQww32uWOduwg?Cxoo_p4| z=bTL~JxEm9)X*$ui>rX_*Cku)@ELuG9w6~AhBvwNYXug{oIiF`zipARExYtzWX!AMfHnxAHW~>h}b> z`-)Y*bH|x}7euiIN{&MGyd(U z`T5womNjza<|Z?EbqvJqc8Vcq{aVfT)x`3(61kezzSYQ84FMGH&qTPR(C?KB3wdhM z1Qc+hf??bsTiTR8eK*}-%fMbd^3RC@?Y4s7%Tu%eQ*^Z67O?L8_v|c}|Lt_=|FfN^ zDm&-OX8UEd+={Fdl7&@fzp-;Mnk>C}3d}#LOas*^J;dPJ8CRC@HT-`L!@yrR0<_Nm=j3?c^8Z);-TBW}p5@~||6fWHy9m%f zX$0uJa*DSb1Dc9zH&cNKBfS0;6GW}>%?|j87U#LB(4HSqI0{k9(s1O)cVco5+HWzt zF}{e57FIBSn~?;y9b{s3R{~dRg9Ez&*j)hZ`T?+CIf_-Sw&xnhTGYH}ud{9PvGl+9 z*B4iBuDdgTvpA~tzmvh~k+c6F9QR-C?*H7%vu82SR?A|g0R_;EjfcLEBhJdi4xKMe z&iG{M8E29(@PoON60wuU@e9LK@oaz0P%KmZI0lW1fmzgj5F*pCJ3NU zaX=Q`R%>q$3<=_bAfN$5wAJc3c>;d?4^irdYmQ;ad%}l9q~dM0eon#=1oD%RoZ<&b zJRwD2D)o?8@)3hUNCA$(6hH88c}m^ltziVV#z`cq!7yM85Ja}X^I!x<2#j$OiDU-6 z5g#nfKKAHu2byE&6eH}>o>{(^X}P__Zmab-IWmFWPmlNWC0O7@UaT?>2xYpEEMd0t zGNBC5-YX$_g+v-C-Z(>E3n3p+KBHqyW=M1g0*Yct_&iaD#Iy@PXn~nwfFKRR1xO-| zno|Hl`j^!RuI=K40Uw2ktG65m(QQUP@I)icCbjPG??;eMTR#9kDjo|t<%A2+8K)v} z60m79>UwzQBt&&Ll@h@sz`54t~g`}TBr#HTXh@csRLt96I%0p&w3Rd%Uy z2#`Ylf&1B_qh8#fi)MQ`qBumHL@#__)c9}2D1+Wd@CyogH+A~y)(>E+-|$rq{?G+e zqT#4%SHI`lxk3B+=@#HbB@J75Bx@(=WSM*I+MUi^<*}B7l(xqjEjdOv5x~UfN*D$s zGzp@Vub8V|5~^S>5t8~CMU1l%sE_e)C`}M)VFKh|nKpPZ#sr{Ga2AK?B^WK_CC3~E z1p6Uk6h$6c#H>RZoCMKiUo-&`zIfiqrNil2E=DX@s2_~ShzQMc5hDulSXH8efODLH zP0_67F7*$be0}UC!m*r#uUY1vxsel#`)5qt=H+l(bCa=u$#OwV@I2s?)w;A;Js-$u z!nbGHf_e!U{D=SqA=jQElwm;Gy`bb@;|YPj!^Cf6ac#buc8ndEMK0=ZfXK4kSLN#LVp_;p%UbpFMQpXQb-X5?mcw%10n9Eo}3vd)7u~6j5 zrYwZN=7M>K80T7eoRkAla2;d92LewKcEXIicl7+vtzJQK? zfbqBaOO(1VvE<)_FW@~A?A8h&BaaxDm86np{qAAY;H z&=_9w9K+2R+%uA(`e4(gP1m6Gc;?l4W94ONu1vD9Tq+~th2t;iQMea6_`!8Uq z-T{xll+vFwTWjPwYHg&5u`k-+ZacusqCBg6lMC-G?~n+#szYkT1v-d1whI-~r=u3R zxETi_m#JWQJ1icy5J4Z2>ktXGIm;)@;lG`w}V2P0qDB&cLL4=`XrnwjuOc`I`PDoWF7 z5X(Id3_%jHAk>>5v2-zjo{&*yaXc2)eK1NGNFq@i`MQHN#H|#w^AYzEj zVF*TuJs=e6o>Pv2Hx_zg6lRbzskg|@pfz^9yGA>C%c=MtL=!a(`r62lYcgyKxxNX| zzY-X7m>iK5x9OPF^@WkeQ0!R?XaOnH90hcWlhBvb@AObmfG0PmyqXlCk_go7rXAFc zQDW)x{S{TKj4zv);PU;I!I}icjgTS4AmvP+Y4)D!HC+xvF^rc=1u}JrV!%?e`M`rx z4TIS(xnTdLnDW*2>+8GgE0?3lyJ)gqjOdrRpvSma=L@+1R{|GYaVp$IbUYj}g2NCI z3oL_^3?73M4oFH(K+Nk3W@qh)jOq9SZn?C{07Ggw zIL5wg$9ThTRdh2~_d0q*?}LwM@sm&nKnw$-jPbru1Nc5i0s#}j4fXm+ z=c@~D@ysp7b#tMm2`jv$ADz5_Z*L^uNmWXzool{@m<-fiXeC(pqcaggejGx#@6{w(FW<$|dL!!7ys$QP3sLbpnp^cyG!F=lgpF+uNx-{P1E39jFbkMaBtJimU|!cHa!z7r-|vG1isV-)MaIN-aWqodxQZjowG zXFlk7n4rU|E}1Iv6^aS+1XUhz)il@rL(l=&qI|CRuIwti*+DKUr>-JVR`X5^B<@BEMn!5zKJJH6hMLZMI_oPz+BMt%mnbIX7sg_C{86@R+n-j>y`W z2?L3#Ts&yTAk9lAC)G$(F7*W*xD^*T5r;;yb`VVt>zb2&xl!Igyj@1$^=m$D+L-eN z+^b2f?QZ6D?!cuUfiV(J>m1%+Px?o-z+%XzC14<%axlFaVkGcrEhxQ{Dh8MCv%Y}) zvwl4^$y|hB^i!2yaU6!-8T?WQPPXDsIz1G(P9vM>qeC=zEJrpADUFUvR#JVv|VQmV^( zS0Qb;VtKaFCr-r3|2yLI4ZS96(Wj#4X!wo|9p z4#U_{?DVFzWa0nD8^ZTpd}{a%8D=y7Ndp&ripDrf&5}$X;)<>a&jAXccBJcyR`i`_ zEW@W<^Lt7#2C!x5+JILGZiS_yK^Bp<2D<`B)nH4Q>5>=CRO8Y>Qlu7(E5zH_y}255 z24)G|%W|J4GvuY*zo;e<%3@a2 zs|{Gr>Lb~fv!GQCUp2gB2;^@?EX@S)=XYyNen%6TY=2vU6EwLcEtHWDKA|d`Gjnoi7MKplg zK6Kr^UqQ+MJ?d-`XF91`*!Kc}KA{>qKBo+W8^&Q*{wW;kuoL}Bs zP2lYHwE^z_u$yBhI@CcU5*<}Ag~kcJsX4?i#bGCcKJS%e(89bTc5Jds;&@K;9G!n9 zhq(GKY~37P3dFpaR&4=GuOa>d?vLFOth=hb1h^^*d|nhB1QDRJ{Gl`)Rid#jg)TuL z%j6*EboA<*$4h{#V)oFun~&j+D4En6&}EbALT@yyl^2SaL9Uxu56aL@+nRodCzB9S@GwQ<99r%?bxDK&D#2oT zVjQIYrj^yMcZ-%;8Lc$3~Ek`vOz9o@Uftl0bRv1m;o-?%9_)> z%x-ZhYFCuQQnWG3Rkrs= zIT-cZBa5n=?O~RlsnvHfg$uHHBSRS^EQw(ph!}}F5$zNQ|BXk5654T@a*z}Z*%13# zr!LF3XD<4zcSHBI#6iijQ&V+-Dkf!L#~Da?Fb?+9KnyPAXC>f9(EEtTiaALu{J*>J%eRCPVCmaKezS@ypkpDg05!hYXEM-+UvoWj=iOe7ENndq@ONLJw>v_1+s!b zVPPdcB~FSF70HxhFt%VRhE^|K^89i`dT%-ZtYg?qX~5-ZD!pQx^?DOtvelT@R*0*H zxmgR=R*l^zROrVtwsX7y!bF$Gu^A(I-|6sKN?p`HyiEW6?LOt^!o$W4aK7)hS{I?P z>B+zuK4anxPJ}H98?v%Ts#ryNYL<2aj_}-ytW)0U%4OdN4^tWcln=-6f}f2@<)To` zqA2V!FwX5jSA+!`5w!oriD-hbX--k