diff --git a/.gitignore b/.gitignore index b4b73f55e..132bb9da4 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,10 @@ bin/ # Go releaser dist/ +# Node.js +**/node_modules/ +**/dist/ + # Dev configuration associated with authentication */*/*/secret.yaml diff --git a/app/cli/internal/policydevel/eval.go b/app/cli/internal/policydevel/eval.go index 83036f6ad..8f1ab3100 100644 --- a/app/cli/internal/policydevel/eval.go +++ b/app/cli/internal/policydevel/eval.go @@ -24,6 +24,7 @@ import ( "github.com/chainloop-dev/chainloop/pkg/casclient" "github.com/chainloop-dev/chainloop/pkg/policies" "github.com/rs/zerolog" + "google.golang.org/grpc" v12 "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/api/attestation/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/materials" @@ -42,6 +43,7 @@ type EvalOptions struct { AllowedHostnames []string Debug bool AttestationClient controlplanev1.AttestationServiceClient + ControlPlaneConn *grpc.ClientConn } type EvalResult struct { @@ -75,7 +77,7 @@ func Evaluate(opts *EvalOptions, logger zerolog.Logger) (*EvalSummary, error) { material.Annotations = opts.Annotations // 3. Verify material against policy - summary, err := verifyMaterial(policies, material, opts.MaterialPath, opts.Debug, opts.AllowedHostnames, opts.AttestationClient, &logger) + summary, err := verifyMaterial(policies, material, opts.MaterialPath, opts.Debug, opts.AllowedHostnames, opts.AttestationClient, opts.ControlPlaneConn, &logger) if err != nil { return nil, err } @@ -103,7 +105,7 @@ func createPolicies(policyPath string, inputs map[string]string) (*v1.Policies, }, nil } -func verifyMaterial(pol *v1.Policies, material *v12.Attestation_Material, materialPath string, debug bool, allowedHostnames []string, attestationClient controlplanev1.AttestationServiceClient, logger *zerolog.Logger) (*EvalSummary, error) { +func verifyMaterial(pol *v1.Policies, material *v12.Attestation_Material, materialPath string, debug bool, allowedHostnames []string, attestationClient controlplanev1.AttestationServiceClient, grpcConn *grpc.ClientConn, logger *zerolog.Logger) (*EvalSummary, error) { var opts []policies.PolicyVerifierOption if len(allowedHostnames) > 0 { opts = append(opts, policies.WithAllowedHostnames(allowedHostnames...)) @@ -111,6 +113,7 @@ func verifyMaterial(pol *v1.Policies, material *v12.Attestation_Material, materi opts = append(opts, policies.WithIncludeRawData(debug)) opts = append(opts, policies.WithEnablePrint(enablePrint)) + opts = append(opts, policies.WithGRPCConn(grpcConn)) v := policies.NewPolicyVerifier(pol, attestationClient, logger, opts...) policyEvs, err := v.VerifyMaterial(context.Background(), material, materialPath) diff --git a/app/cli/pkg/action/policy_develop_eval.go b/app/cli/pkg/action/policy_develop_eval.go index 1a89d416d..e159ceb2f 100644 --- a/app/cli/pkg/action/policy_develop_eval.go +++ b/app/cli/pkg/action/policy_develop_eval.go @@ -1,5 +1,5 @@ // -// Copyright 2025 The Chainloop Authors. +// Copyright 2024-2025 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -58,6 +58,7 @@ func (action *PolicyEval) Run() (*policydevel.EvalSummary, error) { AllowedHostnames: action.opts.AllowedHostnames, Debug: action.opts.Debug, AttestationClient: attClient, + ControlPlaneConn: action.CPConnection, } // Evaluate policy diff --git a/pkg/policies/engine/builtins/wasm.go b/pkg/policies/engine/builtins/wasm.go index 18f5b715c..90ebafad8 100644 --- a/pkg/policies/engine/builtins/wasm.go +++ b/pkg/policies/engine/builtins/wasm.go @@ -1,5 +1,5 @@ // -// Copyright 2025 The Chainloop Authors. +// Copyright 2024-2025 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,59 +23,70 @@ import ( "google.golang.org/grpc" ) -// CreateDiscoverHostFunction creates an Extism host function for the discover builtin -// This allows WASM policies to call chainloop_discover(digest, kind) and get artifact graph data -func CreateDiscoverHostFunction(conn *grpc.ClientConn) extism.HostFunction { +// CreateDiscoverHostFunctions creates Extism host functions for the discover builtin. +// Returns two host functions - one for each supported namespace: +// 1. "env" namespace for Go (TinyGo) policies +// 2. "extism:host/user" namespace for JavaScript policies +func CreateDiscoverHostFunctions(conn *grpc.ClientConn) []extism.HostFunction { discoverSvc := NewDiscoverService(conn) - return extism.NewHostFunctionWithStack( - "chainloop_discover", - func(ctx context.Context, plugin *extism.CurrentPlugin, stack []uint64) { - // Read digest from WASM memory - digestOffset := stack[0] - digest, err := plugin.ReadString(digestOffset) - if err != nil { - // Return 0 to signal error - stack[0] = 0 - return - } + // Shared implementation for the host function + impl := func(ctx context.Context, plugin *extism.CurrentPlugin, stack []uint64) { + // Read digest from WASM memory + digestOffset := stack[0] + digest, err := plugin.ReadString(digestOffset) + if err != nil { + // Return 0 to signal error + stack[0] = 0 + return + } - // Read kind from WASM memory (if provided) - var kind string - if len(stack) > 1 && stack[1] != 0 { - kindOffset := stack[1] - kind, _ = plugin.ReadString(kindOffset) - } + // Read kind from WASM memory (if provided) + var kind string + if len(stack) > 1 && stack[1] != 0 { + kindOffset := stack[1] + kind, _ = plugin.ReadString(kindOffset) + } - // Call shared discover service - resp, err := discoverSvc.Discover(ctx, digest, kind) - if err != nil { - // Return 0 to signal error - stack[0] = 0 - return - } + // Call shared discover service + resp, err := discoverSvc.Discover(ctx, digest, kind) + if err != nil || resp == nil { + // Return 0 to signal error (no connection or error) + stack[0] = 0 + return + } - // Serialize response to JSON - jsonData, err := json.Marshal(resp.Result) - if err != nil { - // Return 0 to signal error - stack[0] = 0 - return - } + // Serialize response to JSON + jsonData, err := json.Marshal(resp.Result) + if err != nil { + // Return 0 to signal error + stack[0] = 0 + return + } - // Write JSON to WASM memory and return offset - offset, err := plugin.WriteBytes(jsonData) - if err != nil { - // Return 0 to signal error - stack[0] = 0 - return - } + // Write JSON string to WASM memory and return offset + offset, err := plugin.WriteString(string(jsonData)) + if err != nil { + // Return 0 to signal error + stack[0] = 0 + return + } - stack[0] = offset - }, - // inputs: digest offset, kind offset - []extism.ValueType{extism.ValueTypeI64, extism.ValueTypeI64}, - // output: json result offset or 0 on error - []extism.ValueType{extism.ValueTypeI64}, - ) + stack[0] = offset + } + + // inputs: digest offset, kind offset + inputs := []extism.ValueType{extism.ValueTypeI64, extism.ValueTypeI64} + // output: json result offset or 0 on error + outputs := []extism.ValueType{extism.ValueTypeI64} + + // Create host function for "env" namespace (Go/TinyGo policies) + envFunc := extism.NewHostFunctionWithStack("chainloop_discover", impl, inputs, outputs) + envFunc.SetNamespace("env") + + // Create host function for "extism:host/user" namespace (JavaScript policies) + jsFunc := extism.NewHostFunctionWithStack("chainloop_discover", impl, inputs, outputs) + jsFunc.SetNamespace("extism:host/user") + + return []extism.HostFunction{envFunc, jsFunc} } diff --git a/pkg/policies/engine/wasm/engine.go b/pkg/policies/engine/wasm/engine.go index feac6f091..9b191971e 100644 --- a/pkg/policies/engine/wasm/engine.go +++ b/pkg/policies/engine/wasm/engine.go @@ -104,6 +104,7 @@ func (e *Engine) Verify(ctx context.Context, policy *engine.Policy, input []byte }, Config: configMap, AllowedHosts: e.AllowedHostnames, + Timeout: uint64(e.executionTimeout.Milliseconds()), } // Log allowed hosts configuration @@ -116,10 +117,8 @@ func (e *Engine) Verify(ctx context.Context, policy *engine.Policy, input []byte } // Register host functions - var hostFunctions []extism.HostFunction - if e.ControlPlaneConnection != nil { - hostFunctions = append(hostFunctions, builtins.CreateDiscoverHostFunction(e.ControlPlaneConnection)) - } + // Registers in both "env" (for Go/TinyGo) and "extism:host/user" (for JavaScript) namespaces + hostFunctions := builtins.CreateDiscoverHostFunctions(e.ControlPlaneConnection) // Create plugin with host functions plugin, err := extism.NewPlugin(ctx, manifest, config, hostFunctions) diff --git a/pkg/policies/engine/wasm/engine_test.go b/pkg/policies/engine/wasm/engine_test.go index 88e804fe3..068482a01 100644 --- a/pkg/policies/engine/wasm/engine_test.go +++ b/pkg/policies/engine/wasm/engine_test.go @@ -17,11 +17,14 @@ package wasm import ( "context" + "os" + "path/filepath" "testing" "time" "github.com/chainloop-dev/chainloop/pkg/policies/engine" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewEngine(t *testing.T) { @@ -109,3 +112,76 @@ func TestMatchesEvaluation(t *testing.T) { assert.NoError(t, err) assert.True(t, matches) } + +// TestSimpleWASMExecution verifies that basic WASM policy execution works +func TestSimpleWASMExecution(t *testing.T) { + // Load a simple test WASM policy + wasmPath := filepath.Join("testdata", "simple_test_policy.wasm") + wasmBytes, err := os.ReadFile(wasmPath) + require.NoError(t, err, "Failed to load simple test WASM policy") + + eng := NewEngine() + ctx := context.Background() + + policy := &engine.Policy{ + Name: "simple-test", + Source: wasmBytes, + } + input := []byte(`{}`) + + result, err := eng.Verify(ctx, policy, input, nil) + require.NoError(t, err, "Policy execution should not error") + require.NotNil(t, result) + + // Should have one violation: "test violation" + assert.Len(t, result.Violations, 1) + assert.Equal(t, "test violation", result.Violations[0].Violation) +} + +// TestFilesystemIsolation verifies that WASM policies CANNOT access the host filesystem +// +// IMPORTANT SECURITY VERIFICATION: +// This test confirms that the Extism runtime provides filesystem isolation by default +// when EnableWasi is true. Even without explicit AllowedPaths configuration, WASM policies +// are sandboxed and cannot access sensitive host filesystem paths like: +// - /etc/passwd, /etc/hosts (system files) +// - / (root directory) +// - . (current working directory) +// +// The test policy attempts to stat() these paths and reports violations if successful. +// A passing test (no violations) means filesystem isolation is working correctly. +func TestFilesystemIsolation(t *testing.T) { + // Load the compiled test WASM policy that attempts filesystem access + wasmPath := filepath.Join("testdata", "filesystem_test_policy.wasm") + wasmBytes, err := os.ReadFile(wasmPath) + require.NoError(t, err, "Failed to load test WASM policy - run 'make build-test-wasm' first") + + eng := NewEngine() + ctx := context.Background() + + policy := &engine.Policy{ + Name: "filesystem-security-test", + Source: wasmBytes, + } + input := []byte(`{}`) // Empty input, policy will try filesystem access + + t.Run("verify filesystem isolation is working", func(t *testing.T) { + result, err := eng.Verify(ctx, policy, input, nil) + require.NoError(t, err, "Policy execution should not error") + require.NotNil(t, result) + + // Check if the policy reported any security violations + // If there are violations, it means the policy was able to access host files (BAD) + // If there are no violations, it means filesystem access was blocked (GOOD) + if len(result.Violations) > 0 { + t.Logf("SECURITY WARNING: Policy accessed host filesystem!") + for _, violation := range result.Violations { + t.Logf(" - %s", violation.Violation) + } + require.FailNow(t, "SECURITY ISSUE: WASM policy was able to access host filesystem without isolation") + } else { + t.Log("Filesystem isolation is working correctly - policy was blocked from accessing host files") + t.Log("Verified: /etc/passwd, /etc/hosts, current directory, and root directory are all inaccessible") + } + }) +} diff --git a/pkg/policies/engine/wasm/testdata/filesystem_test_policy.go b/pkg/policies/engine/wasm/testdata/filesystem_test_policy.go new file mode 100644 index 000000000..6fec1c60c --- /dev/null +++ b/pkg/policies/engine/wasm/testdata/filesystem_test_policy.go @@ -0,0 +1,72 @@ +//go:build tinygo.wasm + +// Copyright 2024-2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "encoding/json" + "os" + + "github.com/extism/go-pdk" +) + +type Result struct { + Violations []string `json:"violations"` + Skipped bool `json:"skipped"` +} + +// Execute attempts to access various host filesystem paths +// +//export Execute +func Execute() int32 { + result := Result{Violations: []string{}, Skipped: false} + + // Attempt to stat /etc/passwd (common on Unix systems) + // Using Stat instead of ReadFile to avoid potential memory issues + _, err1 := os.Stat("/etc/passwd") + if err1 == nil { + result.Violations = append(result.Violations, "SECURITY VIOLATION: Successfully accessed /etc/passwd") + } + + // Attempt to stat /etc/hosts + _, err2 := os.Stat("/etc/hosts") + if err2 == nil { + result.Violations = append(result.Violations, "SECURITY VIOLATION: Successfully accessed /etc/hosts") + } + + // Attempt to stat current directory + _, err3 := os.Stat(".") + if err3 == nil { + result.Violations = append(result.Violations, "SECURITY VIOLATION: Successfully accessed current directory") + } + + // Attempt to stat root directory + _, err4 := os.Stat("/") + if err4 == nil { + result.Violations = append(result.Violations, "SECURITY VIOLATION: Successfully accessed root directory") + } + + // Output result + output, err := json.Marshal(result) + if err != nil { + return 1 + } + mem := pdk.AllocateBytes(output) + pdk.OutputMemory(mem) + return 0 +} + +func main() {} diff --git a/pkg/policies/engine/wasm/testdata/filesystem_test_policy.wasm b/pkg/policies/engine/wasm/testdata/filesystem_test_policy.wasm new file mode 100644 index 000000000..58f99729e Binary files /dev/null and b/pkg/policies/engine/wasm/testdata/filesystem_test_policy.wasm differ diff --git a/pkg/policies/engine/wasm/testdata/go.mod b/pkg/policies/engine/wasm/testdata/go.mod new file mode 100644 index 000000000..3cb234cbb --- /dev/null +++ b/pkg/policies/engine/wasm/testdata/go.mod @@ -0,0 +1,5 @@ +module filesystem_test_policy + +go 1.25 + +require github.com/extism/go-pdk v1.1.3 diff --git a/pkg/policies/engine/wasm/testdata/go.sum b/pkg/policies/engine/wasm/testdata/go.sum new file mode 100644 index 000000000..c15d38292 --- /dev/null +++ b/pkg/policies/engine/wasm/testdata/go.sum @@ -0,0 +1,2 @@ +github.com/extism/go-pdk v1.1.3 h1:hfViMPWrqjN6u67cIYRALZTZLk/enSPpNKa+rZ9X2SQ= +github.com/extism/go-pdk v1.1.3/go.mod h1:Gz+LIU/YCKnKXhgge8yo5Yu1F/lbv7KtKFkiCSzW/P4= diff --git a/pkg/policies/engine/wasm/testdata/simple_test_policy.go b/pkg/policies/engine/wasm/testdata/simple_test_policy.go new file mode 100644 index 000000000..6daf1055e --- /dev/null +++ b/pkg/policies/engine/wasm/testdata/simple_test_policy.go @@ -0,0 +1,38 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "encoding/json" + + "github.com/extism/go-pdk" +) + +//export Execute +func Execute() int32 { + // Create a simple result with one violation for testing + result := map[string]interface{}{ + "violations": []string{"test violation"}, + "skip_reasons": []string{}, + "skipped": false, + } + + resultJSON, _ := json.Marshal(result) + pdk.OutputString(string(resultJSON)) + return 0 +} + +func main() {} diff --git a/pkg/policies/engine/wasm/testdata/simple_test_policy.wasm b/pkg/policies/engine/wasm/testdata/simple_test_policy.wasm new file mode 100644 index 000000000..037f8f27b Binary files /dev/null and b/pkg/policies/engine/wasm/testdata/simple_test_policy.wasm differ diff --git a/policies/README.md b/policies/README.md new file mode 100644 index 000000000..9d343fffc --- /dev/null +++ b/policies/README.md @@ -0,0 +1,98 @@ +# Chainloop WASM Policy SDKs + +Official SDKs for writing [Chainloop](https://chainloop.dev) policies that compile to WebAssembly. + +## Overview + +Chainloop policies are validation rules that run automatically when artifacts (SBOMs, attestations, evidence files) are uploaded to Chainloop. These SDKs make it easy to write policies in your preferred language that compile to WASM and execute securely. + +## Available SDKs + +### Go SDK + +Write policies in Go that compile to WASM using TinyGo. + +- **Language:** Go +- **Compiler:** TinyGo +- **Documentation:** [go/README.md](./go/README.md) + +```go +import chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + var input Input + if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + result := chainlooppolicy.Success() + if input.Message == "" { + result.AddViolation("message cannot be empty") + } + + chainlooppolicy.OutputResult(result) + }) +} +``` + +### JavaScript SDK + +Write policies in JavaScript or TypeScript that compile to WASM using Extism. + +- **Language:** JavaScript/TypeScript +- **Compiler:** esbuild + extism-js +- **Documentation:** [js/README.md](./js/README.md) + +```javascript +const { getMaterialJSON, success, outputResult, run } = require('@chainloop-dev/policy-sdk'); + +function Execute() { + return run(() => { + const input = getMaterialJSON(); + + const result = success(); + if (input.message === "") { + result.addViolation("message cannot be empty"); + } + + outputResult(result); + }); +} +``` + +## Quick Start + +Choose your preferred language and follow the respective README: + +- [Go SDK Quick Start](./go/README.md#quick-start) +- [JavaScript SDK Quick Start](./js/README.md#quick-start) + +## Features + +Both SDKs provide: + +- **Simple API** - Minimal boilerplate, focus on validation logic +- **Material Access** - Parse and validate JSON, strings, or raw bytes +- **Policy Arguments** - Configurable validation rules +- **HTTP Support** - Make external API calls (with hostname restrictions) +- **Artifact Discovery** - Explore the artifact graph and related attestations +- **Logging** - Debug and trace policy execution +- **Result Building** - Success, failure, and skip states with violation messages +- **Examples** - Working examples for common use cases + +## Examples + +Each SDK includes working examples in the `examples/` directory: + +- **simple** - Basic validation with arguments +- **sbom** - CycloneDX SBOM validation +- **attestation** - in-toto attestation validation +- **http** - External API integration +- **discover** - Artifact graph exploration + +## License + +Apache License 2.0 diff --git a/policies/go/README.md b/policies/go/README.md new file mode 100644 index 000000000..d1f297bb4 --- /dev/null +++ b/policies/go/README.md @@ -0,0 +1,731 @@ +# Chainloop Go SDK for WASM Policies + +A Go SDK for writing Chainloop policies that compile to WebAssembly with TinyGo. + +## Features + +- Easy to use API with minimal boilerplate +- No generics required (TinyGo compatible) +- Type-safe material and argument extraction +- Built-in HTTP support with hostname restrictions +- Logging support +- Tested with real-world examples + +## Quick Start + +### 1. Create a Policy + +```go +package main + +import ( + chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" +) + +type Input struct { + Message string `json:"message"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + var input Input + if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + result := chainlooppolicy.Success() + if input.Message == "" { + result.AddViolation("message cannot be empty") + } + + chainlooppolicy.OutputResult(result) + }) +} + +func main() {} +``` + +### 2. Build with TinyGo + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +### 3. Test Locally + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material data.json \ + --kind STRING +``` + +## API Reference + +### Execution + +#### `Run(policyFn func())` + +Wraps policy execution and handles the WASM int32 return value. + +```go +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Your policy logic here + }) +} +``` + +### Material Extraction + +#### `GetMaterialJSON(target interface{}) error` + +Unmarshals the material input as JSON into the target struct. + +```go +var input MyInput +if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return +} +``` + +#### `GetMaterialBytes() []byte` + +Returns the raw material bytes from the input. + +```go +data := chainlooppolicy.GetMaterialBytes() +``` + +#### `GetMaterialString() string` + +Returns the material as a string. + +```go +message := chainlooppolicy.GetMaterialString() +``` + +### Arguments Extraction + +#### `GetArgs() (map[string]string, error)` + +Extracts policy arguments passed via the engine configuration. + +```go +args, err := chainlooppolicy.GetArgs() +if err != nil { + // Handle error +} +maxLength := args["max_length"] +``` + +#### `GetArgString(key string) (string, error)` + +Gets a specific argument value by key. + +```go +value, err := chainlooppolicy.GetArgString("expected_version") +``` + +#### `GetArgStringDefault(key, defaultValue string) string` + +Gets an argument value with a default fallback. + +```go +maxLength := chainlooppolicy.GetArgStringDefault("max_length", "100") +``` + +### Result Building + +#### `Success() Result` + +Creates a success result with no violations. + +```go +result := chainlooppolicy.Success() +chainlooppolicy.OutputResult(result) +``` + +#### `Fail(violations ...string) Result` + +Creates a failure result with one or more violations. + +```go +result := chainlooppolicy.Fail("validation failed", "missing required field") +chainlooppolicy.OutputResult(result) +``` + +#### `Skip(reason string) Result` + +Creates a skip result with a reason. + +```go +result := chainlooppolicy.Skip("not applicable for this material type") +chainlooppolicy.OutputResult(result) +``` + +#### `Skipf(format string, args ...interface{}) Result` + +Creates a skip result with formatted reason. + +```go +result := chainlooppolicy.Skipf("material version %s not supported", version) +chainlooppolicy.OutputResult(result) +``` + +### Result Methods + +#### `AddViolation(msg string)` + +Adds a violation message to a result. + +```go +result := chainlooppolicy.Success() +if len(components) == 0 { + result.AddViolation("SBOM must contain at least one component") +} +``` + +#### `AddViolationf(format string, args ...interface{})` + +Adds a formatted violation message. + +```go +result.AddViolationf("expected version %s, got %s", expected, actual) +``` + +#### `HasViolations() bool` + +Returns true if the result has any violations. + +```go +if result.HasViolations() { + chainlooppolicy.LogError("Policy failed with %d violations", len(result.Violations)) +} +``` + +#### `IsSuccess() bool` + +Returns true if the result has no violations and is not skipped. + +```go +if result.IsSuccess() { + chainlooppolicy.LogInfo("Policy passed") +} +``` + +### Output + +#### `OutputResult(result Result)` + +Outputs the result to the WASM host. + +```go +result := chainlooppolicy.Success() +chainlooppolicy.OutputResult(result) +``` + +### Logging + +#### `LogInfo(format string, args ...interface{})` + +Logs an informational message. + +```go +chainlooppolicy.LogInfo("Processing %d components", len(components)) +``` + +#### `LogDebug(format string, args ...interface{})` + +Logs a debug message. + +```go +chainlooppolicy.LogDebug("Component details: %+v", component) +``` + +#### `LogWarn(format string, args ...interface{})` + +Logs a warning message. + +```go +chainlooppolicy.LogWarn("Optional field missing: %s", fieldName) +``` + +#### `LogError(format string, args ...interface{})` + +Logs an error message. + +```go +chainlooppolicy.LogError("Validation failed: %v", err) +``` + +#### `LogTrace(format string, args ...interface{})` + +Logs a trace message. + +```go +chainlooppolicy.LogTrace("Entering validation function") +``` + +### HTTP Requests + +HTTP requests are restricted to hostnames configured in the policy engine's AllowedHosts. Requests to non-allowed hostnames will fail. + +#### `HTTPGet(url string) ([]byte, error)` + +Performs an HTTP GET request and returns the response body. + +```go +data, err := chainlooppolicy.HTTPGet("https://api.example.com/data") +if err != nil { + // Handle error (hostname not allowed or request failed) +} +``` + +#### `HTTPGetJSON(url string, target interface{}) error` + +Performs an HTTP GET request and unmarshals the JSON response. + +```go +var response APIResponse +err := chainlooppolicy.HTTPGetJSON("https://api.example.com/data", &response) +``` + +#### `HTTPGetString(url string) (string, error)` + +Performs an HTTP GET request and returns the response as a string. + +```go +body, err := chainlooppolicy.HTTPGetString("https://api.example.com/data") +``` + +### Artifact Discovery + +Explore the artifact graph to discover related artifacts. Requires a gRPC connection configured in the policy engine. + +#### `Discover(digest, kind string) (*DiscoverResult, error)` + +Discovers artifacts related to the given digest, optionally filtering by kind. + +```go +// Discover all references for a container image +digest := "sha256:abc123..." +result, err := chainlooppolicy.Discover(digest, "") +if err != nil { + // Handle error (no gRPC connection or discovery failed) + return +} + +// Check if any referenced attestations have policy violations +for _, ref := range result.References { + if ref.Kind == "ATTESTATION" { + if ref.Metadata["hasPolicyViolations"] == "true" { + chainlooppolicy.LogWarn(fmt.Sprintf("Attestation %s has policy violations", ref.Digest)) + } + } +} + +// Discover with kind filter +attestations, err := chainlooppolicy.Discover(digest, "ATTESTATION") +``` + +**Parameters:** +- `digest` (string): The artifact digest to discover (e.g., "sha256:abc123...") +- `kind` (string): Optional filter by material kind (e.g., "CONTAINER_IMAGE", "ATTESTATION") + +**Returns:** +```go +type DiscoverResult struct { + Digest string + Kind string + References []Reference +} + +type Reference struct { + Digest string + Kind string + Metadata map[string]string +} +``` + +#### `DiscoverByDigest(digest string) (*DiscoverResult, error)` + +Convenience function that calls Discover with no kind filter. + +```go +result, err := chainlooppolicy.DiscoverByDigest("sha256:abc123...") +``` + +## Common Patterns + +### Required Fields Validation + +```go +func validateRequiredFields(comp Component) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + if comp.Name == "" { + result.AddViolation("name is required") + } + if comp.Version == "" { + result.AddViolation("version is required") + } + + return result +} +``` + +### Allowlist/Blocklist Validation + +```go +func validateLicense(license string, approved, forbidden []string) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + // Check blocklist first + for _, blocked := range forbidden { + if license == blocked { + result.AddViolationf("%s is forbidden", license) + return result + } + } + + // Check allowlist + if len(approved) > 0 { + found := false + for _, allowed := range approved { + if license == allowed { + found = true + break + } + } + if !found { + result.AddViolationf("%s not approved", license) + } + } + + return result +} +``` + +### Nested Structure Validation + +```go +func validateComponents(components []Component) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + if len(components) == 0 { + result.AddViolation("must contain at least one component") + } + + for i, comp := range components { + if comp.Name == "" { + result.AddViolationf("component %d missing name", i) + } + if comp.Version == "" { + result.AddViolationf("component %d missing version", i) + } + } + + return result +} +``` + +### External API Validation + +```go +func validateWithAPI(name, version string) chainlooppolicy.Result { + var data RegistryResponse + err := chainlooppolicy.HTTPGetJSON(fmt.Sprintf("https://registry.npmjs.org/%s", name), &data) + if err != nil { + return chainlooppolicy.Skipf("API unavailable: %v", err) + } + + result := chainlooppolicy.Success() + if _, exists := data.Versions[version]; !exists { + result.AddViolationf("version %s not found", version) + } + + return result +} +``` + +## Examples + +Complete working examples are in the `examples/` directory. + +### Simple String Validation + +Location: `examples/simple/` + +**Build:** +```bash +cd examples/simple +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +**Test:** +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material data.json \ + --kind STRING +``` + +### SBOM Validation + +Location: `examples/sbom/` + +Validates CycloneDX SBOMs for required component fields. + +**Build:** +```bash +cd examples/sbom +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +### Attestation Validation + +Location: `examples/attestation/` + +Validates in-toto attestations for git commit subjects. + +**Build:** +```bash +cd examples/attestation +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +### HTTP Requests + +Location: `examples/http/` + +Makes HTTP requests to external APIs with hostname restrictions. + +**Build:** +```bash +cd examples/http +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +### Artifact Discovery + +Location: `examples/discover/` + +Explores the artifact graph to detect policy violations in related attestations. + +**Build:** +```bash +cd examples/discover +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +**Test:** +```bash +chainloop policy develop eval \ + --material ghcr.io/chainloop-dev/chainloop/control-plane:v1.57.0-amd64 \ + --policy policy.yaml +``` + +## Project Setup + +### go.mod + +```go +module myorganization.com/chainloop-policies/my-policy + +go 1.25 + +require ( + github.com/chainloop-dev/chainloop/sdks/go v0.0.0 + github.com/extism/go-pdk v1.1.3 +) + +replace github.com/chainloop-dev/chainloop/sdks/go => /path/to/chainloop/sdk/go +``` + +### policy.yaml + +```yaml +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: my-policy + description: My policy description +spec: + policies: + - kind: STRING # or SBOM_CYCLONEDX_JSON, ATTESTATION, etc. + path: policy.wasm +``` + +## TinyGo Compatibility + +This SDK works within TinyGo's limitations: + +**Supported**: +- Flat structs with simple types +- Slices and maps with string keys +- json.Unmarshal for parsing + +**Unsupported**: +- Generics (limited support) +- Complex nested types with interfaces +- Maps with any values + +**Recommended**: +```go +// Good: Simple struct +type Component struct { + Name string `json:"name"` + Version string `json:"version"` + Hashes []Hash `json:"hashes"` +} + +// Avoid: Complex types +type Complex struct { + Metadata any `json:"metadata"` + Data map[string]any `json:"data"` +} +``` + +## Build Configuration + +### Required Flags + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +- `-target=wasi` - WebAssembly System Interface +- `-buildmode=c-shared` - Minimal scheduler +- `-o policy.wasm` - Output file + +### Typical File Sizes + +- Simple policy: ~770KB +- SBOM policy: ~770KB +- Attestation policy: ~777KB +- HTTP policy: ~793KB + +## Testing + +Test policies locally before deployment: + +### Quick Test + +```bash +# Build policy +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go + +# Test with material +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE + +# Test with arguments +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE \ + --input max_length=100 + +# Test with debug +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE \ + --debug +``` + +### Test Cases + +Create test files for different scenarios: + +| Test Case | Expected | Violation | +|-----------|----------|-----------| +| Valid input | Success | - | +| Empty/missing fields | Fail | Field-specific | +| Wrong format | Skip | Not supported | +| API unavailable | Skip | API error | + +### Automated Testing + +Create a `test.sh` script: + +```bash +#!/bin/bash + +# Build policy +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go + +# Run tests +test_policy() { + local name=$1 + local material=$2 + local expect=$3 + + echo "Testing: $name" + output=$(chainloop policy develop eval \ + --policy policy.yaml \ + --material "$material" \ + --kind EVIDENCE 2>&1) + + if echo "$output" | grep -q "$expect"; then + echo "✓ PASSED" + else + echo "✗ FAILED" + echo "$output" + fi +} + +# Test cases +test_policy "Valid input" "test-data/valid.json" "violations\": \[\]" +test_policy "Invalid input" "test-data/invalid.json" "version is required" +test_policy "Wrong format" "test-data/wrong.json" "skipped\": true" +``` + +Make executable: +```bash +chmod +x test.sh +./test.sh +``` + +## Troubleshooting + +### Build Errors + +**Error: wasm error: unreachable** +- Cause: TinyGo reflection panic or unsupported operations +- Fix: Use simpler types, avoid reflection + +**Error: undefined reference** +- Cause: Missing import or SDK version mismatch +- Fix: Check SDK import path + +### Runtime Errors + +**HTTP request not allowed** +- Cause: Hostname not in allowed list +- Fix: Add `--allowed-hostnames` flag + +**Wrong material kind** +- Cause: policy.yaml kind doesn't match data type +- Fix: Use correct kind (SBOM_CYCLONEDX_JSON, STRING, etc.) + +## Best Practices + +1. Keep types simple - Flat structs work best +2. Validate early - Check input before complex logic +3. Return specific violations - Clear messages help users +4. Use skip for non-applicable cases +5. Test with real data - Use actual SBOMs/attestations +6. Log validation progress - Use logging for debugging +7. Handle errors gracefully - Always check returns + +## License + +Apache License 2.0 - See LICENSE file for details. diff --git a/policies/go/discover.go b/policies/go/discover.go new file mode 100644 index 000000000..a5261784f --- /dev/null +++ b/policies/go/discover.go @@ -0,0 +1,129 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import ( + "encoding/json" + "fmt" + + "github.com/extism/go-pdk" +) + +// Declare the host function provided by Chainloop +// The host function signature: (digestOffset: i64, kindOffset: i64) -> i64 +// +//go:wasmimport env chainloop_discover +func chainloop_discover(digestOffset, kindOffset uint64) uint64 + +// DiscoverResult represents the result of a discover operation. +// It contains information about the discovered artifact and its references. +type DiscoverResult struct { + // Digest is the artifact digest that was discovered + Digest string `json:"digest"` + // Kind is the material type of the discovered artifact + Kind string `json:"kind"` + // References contains the list of artifacts that reference or are referenced by this artifact + References []DiscoverReference `json:"references"` +} + +// DiscoverReference represents a reference to another artifact in the artifact graph. +type DiscoverReference struct { + // Digest is the digest of the referenced artifact + Digest string `json:"digest"` + // Kind is the material type of the referenced artifact + Kind string `json:"kind"` + // Metadata contains additional information about the referenced artifact + Metadata map[string]string `json:"metadata"` +} + +// Discover calls the Chainloop discover builtin to explore the artifact graph. +// It retrieves information about artifacts related to the given digest. +// +// Parameters: +// - digest: The artifact digest to discover (e.g., "sha256:abc123...") +// - kind: Optional filter by material kind (e.g., "CONTAINER_IMAGE", "ATTESTATION"). Use empty string for no filter. +// +// Returns: +// - *DiscoverResult: Information about the discovered artifact and its references +// - error: Error if the discovery fails +// +// Example: +// +// // Discover all references for a container image +// digest := "sha256:abc123..." +// result, err := chainlooppolicy.Discover(digest, "") +// if err != nil { +// chainlooppolicy.LogError("Discovery failed: %v", err) +// return +// } +// +// // Check if any referenced attestations have policy violations +// for _, ref := range result.References { +// if ref.Kind == "ATTESTATION" { +// if ref.Metadata["hasPolicyViolations"] == "true" { +// chainlooppolicy.LogWarn("Attestation %s has policy violations", ref.Digest) +// } +// } +// } +// +// Note: The discover functionality requires a gRPC connection to be configured +// in the policy engine. Only artifacts accessible to your organization will be returned. +func Discover(digest, kind string) (*DiscoverResult, error) { + // Allocate memory for digest string + digestMem := pdk.AllocateString(digest) + + // Allocate memory for kind string (empty string if not provided) + kindMem := pdk.AllocateString(kind) + + // Call the host function directly + resultOffset := chainloop_discover(digestMem.Offset(), kindMem.Offset()) + + // Check if result is zero (error from host function) + if resultOffset == 0 { + return nil, fmt.Errorf("discover returned error (check if gRPC connection is configured)") + } + + // Read the result JSON from memory + resultBytes := pdk.FindMemory(resultOffset) + if resultBytes.ReadBytes() == nil { + return nil, fmt.Errorf("failed to read discover result from memory") + } + + // Parse the JSON result + var result DiscoverResult + if err := json.Unmarshal(resultBytes.ReadBytes(), &result); err != nil { + return nil, fmt.Errorf("failed to parse discover result: %w", err) + } + + return &result, nil +} + +// DiscoverByDigest is a convenience function that calls Discover with no kind filter. +// It retrieves all artifacts related to the given digest regardless of their type. +// +// Parameters: +// - digest: The artifact digest to discover +// +// Returns: +// - *DiscoverResult: Information about the discovered artifact and its references +// - error: Error if the discovery fails +// +// Example: +// +// result, err := chainlooppolicy.DiscoverByDigest("sha256:abc123...") +func DiscoverByDigest(digest string) (*DiscoverResult, error) { + return Discover(digest, "") +} diff --git a/policies/go/examples/attestation/README.md b/policies/go/examples/attestation/README.md new file mode 100644 index 000000000..e9ded1a49 --- /dev/null +++ b/policies/go/examples/attestation/README.md @@ -0,0 +1,129 @@ +# Attestation Validation Policy Example + +Validates Sigstore bundles to ensure attestations reference signed git commits. + +## What This Policy Does + +Validates a Chainloop attestation (Sigstore bundle format) with these rules: + +1. Must contain a `git.head` subject (git commit reference) +2. The git commit must have a SHA-1 digest +3. The git commit must have a signature annotation + +## Building + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +## Testing + +This policy requires actual Chainloop attestation data. You can test it using: + +### With real attestation data: +```bash +# From Chainloop managed repo +chainloop policy develop eval \ + --policy policy.yaml \ + --material pkg/attestation/crafter/materials/testdata/attestation-bundle.json \ + --kind ATTESTATION \ + --debug +``` + +### Expected behavior: + +**Valid attestation** (with signed commit): +``` +Attestation validation passed +No violations +``` + +**Missing git commit**: +``` +Violation: "attestation must reference a git commit" +``` + +**Commit without signature**: +``` +Violation: "git commit must have a valid signature" +``` + +## Key Concepts Demonstrated + +1. **Sigstore bundle parsing**: Working with protobuf-based Sigstore bundles +2. **DSSE envelope handling**: Using `ParseDSSEPayloadFromBundle()` helper +3. **Attestation structure**: Understanding in-toto attestation subjects +4. **Subject lookups**: Using `FindSubjectByName()` helper +5. **Annotation access**: Reading metadata from subject annotations +6. **Type assertions**: Safely accessing `map[string]any` annotations + +## Understanding the Data Flow + +``` +Sigstore Bundle (protobuf) + ↓ +DSSEEnvelopeFromBundle() + ↓ +DSSE Envelope + ↓ +DecodeB64Payload() + ↓ +Attestation JSON + ↓ +ParseJSON() + ↓ +Attestation struct + ↓ +Access Subjects +``` + +The SDK handles all these conversions automatically with `ParseDSSEPayloadFromBundle()`. + +## File Structure + +``` +attestation/ +├── policy.go # Policy implementation +├── policy.yaml # Policy specification +├── policy.wasm # Compiled WASM module (after build) +└── README.md # This file +``` + +## Real-World Usage + +This policy ensures that all code changes in your supply chain are: +1. Associated with specific git commits +2. Signed by authorized developers + +```yaml +# workflow-contract.yaml +spec: + policies: + - ref: file://./git-commit-signature-policy.yaml + with: + name: signed-commits-required +``` + +This policy will automatically validate all attestations created by Chainloop workflows. + +## Advanced: Custom Signature Validation + +You can extend this policy to validate signature format or cryptographic properties: + +```go +func validateSignatureFormat(signature string) bool { + // PGP signature starts with -----BEGIN PGP SIGNATURE----- + return strings.HasPrefix(signature, "-----BEGIN PGP SIGNATURE-----") +} + +func hasCommitSignature(subjects []chainlooppolicy.Subject) bool { + for _, sub := range subjects { + if sub.Name == "git.head" { + if sig, ok := sub.Annotations["signature"].(string); ok { + return validateSignatureFormat(sig) + } + } + } + return false +} +``` diff --git a/policies/go/examples/attestation/attestation.json b/policies/go/examples/attestation/attestation.json new file mode 100644 index 000000000..0eeba5e9b --- /dev/null +++ b/policies/go/examples/attestation/attestation.json @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle+json;version=0.3", "verificationMaterial":{"certificate":{"rawBytes":"MIIB5DCCAWqgAwIBAgIUTkTpG5R6ygnHRqQmIK5IL+4ZqlcwCgYIKoZIzj0EAwMwLDEWMBQGA1UECgwNY2hhaW5sb29wLmRldjESMBAGA1UEAwwJY2hhaW5sb29wMB4XDTI1MTEyMDE4NDcwOVoXDTI1MTEyMDE4NTcwOVowLzEtMCsGA1UEChMkOTNkMDIyNzUtODUzYy00YWQ2LTlkNjAtOGY1NjJiMTIzZmQyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkNRakAMh48B8rJ3oF6IK5Xf7m7VqgH/TbXIh+du9+9/nwO1Q9xYZQs5kOUkwcwtJBHsJvKtzX4iLKqEvxjNxiKNnMGUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSKrfHt/x+Dq/qNpB6H6WKOE01TljAfBgNVHSMEGDAWgBTmzi6ht2KmAQFfrGvKtZDRGyR0hzAKBggqhkjOPQQDAwNoADBlAjEA6YL3S9XOQ7qT//wzLTnVrxo1TvZWXHLENfF5HDyalahN0/rRXTmg5e1NR041FWwgAjBwPw9ZFPriIFb1ivvPJ3KPRWjV0Si+5sYEsH0QaR5sO8005ggap6uSQ0Lmp7ihimw="}, "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIEKTADAgEAMIIEIAYJKoZIhvcNAQcCoIIEETCCBA0CAQMxDzANBglghkgBZQMEAgEFADB3BgsqhkiG9w0BCRABBKBoBGYwZAIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIMBtDKbWppVtbNLydsUnlB7/9QyuLFjW3rN1KpUEFb5YAhBDnvSIw2jx3d9mu0WrdCkvGA8yMDI1MTEyMDE4NDcwOVoxggN8MIIDeAIBATB9MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYgMjAyNSBDQTECEAqA7xhLjfEFgtHEdqeVdGgwDQYJYIZIAWUDBAIBBQCggdEwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNTExMjAxODQ3MDlaMCsGCyqGSIb3DQEJEAIMMRwwGjAYMBYEFN1iMKyGCi0wa9o4sWh5UjAH+0F+MC8GCSqGSIb3DQEJBDEiBCDAoMc1SHl0SHgyXxSBkJPzglyiN54J7Cgv6Cw9aL0t9jA3BgsqhkiG9w0BCRACLzEoMCYwJDAiBCBKoD+iLNdchMVck4+CjmdrnK7Ksz/jbSaaozTxRhEKMzANBgkqhkiG9w0BAQEFAASCAgB8UDN1N+H2/lj6x+8x1WYNJ7m8NUJ8JmgebR8fykkfWP9SKZJOTTjTzH2FRgjpD9y1YQm66iJrUgYrHWS/1wWlwSkbd0uZEiwytqnRmukfcNEb8IhYyoIFdjLit4uhjWtevPHdKV3nqqQR3wd1AXgw1BZ7xaA6Y01zUgf4fAEGAuRs8rQMrkAqs9p1QRrzow7EudVCt1Cd3D4/JhnTsN9y+vRVWRfx3yC4XkHxNIgudlw0drJLRabp3knU/MgsE5ShbbtEGDfRNdb11NZYLfA2mhcBmfPcjyvDXsAFd2/D0alpO5zwbqCKMmr2fD3b7CYBSqhz/fMWzyxDSfXa5LUNRINb8r0AF7MnvWWWImumUHT/aD4P7uU/KiQ8AckHgWB1pzctxHe65wxWj2FblAoNTwzi7K7sJYuLp07fZIoS0GTgMqUrNaNGhJK2glFwZYZlSS0pAFxTNF4wP7ZZKiuQaDdG/tuPpJ0H7zyAVmeDt/TVUQ2IWHzXXzWUQzNdj2OQa5loHtAvJ1cDgD0BlcuNGrsIUQmG3CQuPhTwTKYHAKTcjPDY1KJe6IvJYhwNfTL7ZfhUj0IhdFFb9w9CoAltDZUjJQnPQJgL8aoL7PuetEFo+GSPx8nbj6CqhcPZdSorxxn7RYbUFHtDfsW/9NAeEc2WorBvIV4BaOeCN4FViQ=="}]}}, "dsseEnvelope":{"payload":"eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCAic3ViamVjdCI6W3sibmFtZSI6ImNoYWlubG9vcC53b3JrZmxvdy5yZWxlYXNlIiwgImRpZ2VzdCI6eyJzaGEyNTYiOiJmM2FmMTFkMTRlYTk1MWYwNzYzMmYyZDY5ODY4YWZiNjdkOGJjMjJjNjlhN2FkMzVmMTkxYWRiMzRlODU2YzE4In19LCB7Im5hbWUiOiJnaXQuaGVhZCIsICJkaWdlc3QiOnsic2hhMSI6ImQ1ZmE0OGY1YzMxNDQzODQxOTVhMDE0MmQ2NDMwYzI1NDAxYjFiNzAifSwgImFubm90YXRpb25zIjp7ImF1dGhvci5lbWFpbCI6Im1pZ3VlbEBjaGFpbmxvb3AuZGV2IiwgImF1dGhvci5uYW1lIjoiTWlndWVsIE1hcnRpbmV6IFRyaXZpbm8iLCAiZGF0ZSI6IjIwMjUtMTEtMjBUMTg6MjQ6MDdaIiwgIm1lc3NhZ2UiOiJmZWF0OiBhZGQgc2tpcCBmaWVsZCB0byBwb2xpY3kgZ3JvdXAgYXR0YWNobWVudHMgKCMyNTY0KVxuXG5TaWduZWQtb2ZmLWJ5OiBNaWd1ZWwgTWFydGluZXogPG1pZ3VlbEBjaGFpbmxvb3AuZGV2PiIsICJyZW1vdGVzIjpbeyJuYW1lIjoib3JpZ2luIiwgInVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcCJ9XSwgInNpZ25hdHVyZSI6Ii0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXG5cbndzRmNCQUFCQ0FBUUJRSnBIMXpJQ1JDMWFRN3V1NVVobEFBQTVDRVFBSkgzZUl2cWRuUmQyOGdxK3NhaDB1bmhcbmIrS3JFVUhIajFmQm5JcFNkTjArYk94ellqbmRXUDk3andNVHpHL3BtaEZwMEtPaUJIdUFMamtEZm5yV1Q2UkFcbkRVSllLeHV3UHRkMkZocE9ERERjUW54SGJ0Yk1mTXZIRW1oaGZXZ2hDUjg1NkcxdG1DbjJqWWtzaG1BNXBzSndcbmUyc0NNUHdLRUdFeGNzS3hIRUJSY2dFTjFibk5HcEJsdEZxbjA1TFN6amRmSjZORGgwQlpmT1VtcUZZcnNINDdcbjI3eWZ4VTRvTWMyM3VqOHhFb3VsclRkblh3Y05UR2svVXI3OE1lSGZuWm9ReEI0SVB2NGNnOVE4ZENKQVZPaHFcbmREcEIwL0ZRRmFFNVhTQ3BtZjV2SnBuRUxIcWxSOVdTVHMzV1Rib1hmd20xK2FTVittUmpwM1JVUmsvUXpiaHpcbnZJOXh1M2cwVjZHZ21HaE1jY01ZMWhlMWxVWkZWT284eWxLY05rSmZORGhZTXZCWlJac0dmbEovWm5GQi9hWEhcbkZHeWc1ckt2akhKTkEyNGtqU1ZoQkN5VFJRY3R5RFI5TGo0L0x0Nyt2UzEyVXVDNlplZW5RRU1OS1NHTUpyUmNcbmdybTZSazNwQ0VySXFEU1BNbGx2RG9KMTNMNkFJb2hGSkFSSW0yd3Jzbmc4cGE3VDBGZmF2aHFkei9adG5wNlVcbmJsU1pCa3Vyak1DN1BXWEY5OEN0ZVU4RUNHTStMdmxSY1l6UlZtdmNXNEM5VytDdGZkY2FKUVQyc2N6VllvaWxcbjg4KzRIWjgzNjJNYWQyN2lBelU0Wmh0S0t2eVp1QlRYYXZIOW9OUG5LOXgvb09FTnR4N0NjbXVVejk1K1c4TkJcbk5KMExMemFZVy8zSi9uZS9nWkRoXG49UjNTYVxuLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tXG5cbiJ9fV0sICJwcmVkaWNhdGVUeXBlIjoiY2hhaW5sb29wLmRldi9hdHRlc3RhdGlvbi92MC4yIiwgInByZWRpY2F0ZSI6eyJhdXRoIjp7ImlkIjoiMzRiZjA5OWItNDFmZi00ODU3LTljZjYtNzY5ZDQzY2FkMzA1IiwgInR5cGUiOiJBVVRIX1RZUEVfQVBJX1RPS0VOIn0sICJidWlsZFR5cGUiOiJjaGFpbmxvb3AuZGV2L3dvcmtmbG93cnVuL3YwLjEiLCAiYnVpbGRlciI6eyJpZCI6ImNoYWlubG9vcC5kZXYvY2xpLzEuNjAuMEBzaGEyNTY6NjQxZjAwMmI5NDI0ZDMzOWZjOGJjZjc1NjAyNGQ0NDE0ZDQ0N2JlYjg2ZTJhZmVlMjU2ZjFmZjgyNzc1NzMxZiJ9LCAiZW52Ijp7IkdJVEhVQl9BQ1RPUiI6Im1pZ21hcnRyaSIsICJHSVRIVUJfUkVGIjoicmVmcy90YWdzL3YxLjYwLjAiLCAiR0lUSFVCX1JFUE9TSVRPUlkiOiJjaGFpbmxvb3AtZGV2L2NoYWlubG9vcCIsICJHSVRIVUJfUkVQT1NJVE9SWV9PV05FUiI6ImNoYWlubG9vcC1kZXYiLCAiR0lUSFVCX1JVTl9JRCI6IjE5NTQ3MjU3NjM3IiwgIkdJVEhVQl9TSEEiOiJkNWZhNDhmNWMzMTQ0Mzg0MTk1YTAxNDJkNjQzMGMyNTQwMWIxYjcwIiwgIlJVTk5FUl9OQU1FIjoiR2l0SHViIEFjdGlvbnMgMTAwMDA2ODgwNSIsICJSVU5ORVJfT1MiOiJMaW51eCJ9LCAibWF0ZXJpYWxzIjpbeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPalExTkRVd1ltVXhaV1ZrTkdZNFlqUXdZMkV5T0RZMk0yVmpNMlF4WXpNd1ptTTFZVFUyWkRFM1lqYzBaRGN3TXpWaE5HRTBNbVF4WldNME16WTRabUlpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzRaRGRqTldVd05XSTBaamd3TldOaFpESmhaVEl6WmpJek16bGtaalpsTVRWaFlUZGpOMlk0WVRkallqRXhNakpoTmprMU5qUXhPR1JoTWpNeE1UZzBJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlNIbGFUSEF4TkRsek9XNDNRM1ZsUkVnNVZVazNXV1IwUmxwc1JIWndkV0ZVYWxnMmMzaG9WVTQxYjBGcFJVRjJUM05KYlZwSVdVSllNR2RuYUdOaU0yazRZMmxvU1ZNNVVVVTViazFaUlRkUllqWmxiVGhtUTFCalBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpSMXBDZUZOTFMxZ3labEJMTmpGelREVldTa0YzTWpsVVF6azNhSHBIT0RCeWJEQldOVlpaTVRWcVNrRnBSVUU0U1hNclZVRTJVRTk2TlVwWWNVSnhaR3RMZVhwRE1tbzJkMVZaY3k5aGVUUm1jRzQ0VVVwUVlUQlZQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5GcEVaR3BPVjFWM1RsZEpNRnBxWjNkT1YwNW9Xa1JLYUZwVVNYcGFha2w2VFhwc2ExcHFXbXhOVkZab1dWUmthazR5V1RSWlZHUnFXV3BGZUUxcVNtaE9hbXN4VG1wUmVFOUhVbWhOYWsxNFRWUm5NRWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVMGhzWVZSSVFYaE9SR3g2VDFjME0xRXpWbXhTUldjMVZsVnJNMWRYVWpCU2JIQnpVa2hhZDJSWFJsVmhiR2N5WXpOb2IxWlZOREZpTUVad1VsVkdNbFF6VGtwaVZuQkpWMVZLV1UxSFpHNWhSMDVwVFRKck5Ga3liRzlUVmswMVZWVlZOV0pyTVZwU1ZHUlNXV3BhYkdKVWFHMVJNVUpxVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEEzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF5T1RrM056Y3NYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjozYTI0NjJlYjRiNGVjOTBlOTBlM2I2OTc1MzJmZjM2NzA0YmI1ZTM5OTRlNmVjNDQ4MmZjZmJkNzVjZDI1ZmE3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3NTdhZjYxNjNjMzc4ZjJmMzY0YTFkMWI2ZjlhODVjYWRlMDUzNWIxOWUyZmJhZGZkMGRmYjYzMDI3MmMwNDc2In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPbUkxWVdSaU56VmhPVE0zTlRkak9UQmxOamhqWWpreFlqbGhZems0WVdVMk16azFaamc1TnpRMU5USmpZVFV4Tm1FMVltTXlZakkxTkRCbU1EaGxZamdpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzRaR1F4WTJVd01qWmlZalUyWW1NM1pEaGhOamd3TTJSaU56UmxNVEZoTnpJd056QTRZV1kxWW1Sa016WXhPRFF6T1dJNU1tRmlZVEExTmpFd05XSTVJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlFtOVZRMXBOVEdWQ05IQndkVk5rYkcxbVZqQlZWemhNVjI4NGFrcHBWMnBDU2tFM1lXaEVRV3NyTkVGcFJVRXdiRzlYU2xaNGRsZ3dWMDFyUkRKcGRIQjBUbGh4YmxKV2NpOXNURGxIUTFBMFJUVXhhRkZXVDJGQlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5OTDFGclYzVTVkR0ZzVERKcFEzRXlVVlo2ZUZkek1IWTVaMlpNZGtkeldVZFNSVGRSU0V0VlRrRkJTV2RWWkhkblMxazFjMXAwZW1KRWVreHFOSEZVYUVoTVZFSlVTamRXVkRKWWEzcHBkbVp4YlhKdE9IbzRQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5GcEhVWGhaTWxWM1RXcGFhVmxxVlRKWmJVMHpXa1JvYUU1cVozZE5NbEpwVG5wU2JFMVVSbWhPZWtsM1RucEJORmxYV1RGWmJWSnJUWHBaZUU5RVVYcFBWMGsxVFcxR2FWbFVRVEZPYWtWM1RsZEpOVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVVzA1VmxFeGNFNVVSMVpEVGtoQ2QyUldUbXRpUnpGdFZtcENWbFo2YUUxV01qZzBZV3R3Y0ZZeWNFTlRhMFV6V1Zkb1JWRlhjM0pPUlVad1VsVkZkMkpIT1ZoVGJGbzBaR3huZDFZd01YSlNSRXB3WkVoQ01GUnNhSGhpYkVwWFkyazVjMVJFYkVoUk1VRXdVbFJWZUdGR1JsZFVNa1pDVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEEwTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF5T1RreU9UWXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1Njo4YmFlOGExMmQxM2YwMTg3MzVlMjA1ZTc0Y2NlNWQwYTFiNWJhMTMzYzcwOWVmMjBjMjMyODQxZWYwZDQ4NTIxIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4MzI0OTIwZDE3NzllYWFhN2ZmMGYyNTlkNTFlYTRjMzg4ODRjYzg1YmU2ZTc3ZGQ2MzhiNTZkMWQ3ZjVjZTMzIn0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC5uYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjBjMmQ2YTZhZjM1MzhmYzNlODM5ZGQ5OTJiZDlkNmI4MjUxNjliMGFjYTUwMWU5MTVjNDIyMWQ3NzBiOGFiMDgifSwgIm5hbWUiOiJzYm9tLWFydGlmYWN0LWNhczp2MS42MC4wLWFtZDY0LmN5Y2xvbmVkeC5qc29uIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvYXJ0aWZhY3QtY2FzIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJhYTU3NTQzMDBlYzI3MTYwM2I5NTZkZWU5NDQ0YzYxOWM0NGZmYWZiN2NjN2ViZmI4Nzc5Zjk1ZDNhNDE4YjNmIn0sICJuYW1lIjoic2JvbS1hcnRpZmFjdC1jYXM6djEuNjAuMC1hcm02NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvYXJ0aWZhY3QtY2FzIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJiOTFlNTIyM2E3ZjViZjU4MmIyMzVhNWNlYjQ1MjUzMmNlNGZkZWRmYzdhYzU5OTA5ZDYwOTdlZmQzOTYyYjAwIn0sICJuYW1lIjoic2JvbS1hcnRpZmFjdC1jYXM6djEuNjAuMC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJhcnRpZmFjdC1jYXMtdjEtNjAtMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qTTBNaXdpWkdsblpYTjBJam9pYzJoaE1qVTJPbVZtTURNeE1ETm1abVV6WW1KbU56WTNZamN3WXpVMlpEVmxOR0ZoWldRNE1XSTBaamczWVRaa1l6aGtOalF6TmpobE1URXdOekEwTnpWa09ESTFZbUlpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qcGpNMlUxTldSaE5ERXlNekEyWWpZeE5XTXpORFk0TmpWbU4yTTVOemN6WXpabU56aGtNRFJtTldSaFpEa3pPR0ppTjJJNU1HTTJNemhsTW1JMk5UaG1JaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlNDdEtUWE5IUTFsaGRsQjRSVWR2Vkdoc0szVmtjWEpTV21jNE1scHVlR3RuTTAxNldFOXJPWGhMTTBGcFJVRjZTV0pWYkVnNGQxSXhObGxCYUhKaFJHSTFLM2RRWTA1VFIxQjRSRGhMYnpaeVJtMVZSREJDV1dOdlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5UVkhsVk9XSjROVlZZV0dwMFUwWjFiMHRRY0VKMEwzQmtaR2x3VVM4NFRHbFNaVmN4U0hWUU5UTm5TV2RrV201MVFrWklNRkZLYzJvek56UXhXRzFYUzFoeFEyZzFjV0UyVHpWek1YRlpjbFpSVFdKblZuTkpQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsS2FrMHlWVEZPVjFKb1RrUkZlVTE2UVRKWmFsbDRUbGROZWs1RVdUUk9hbFp0VGpKTk5VNTZZM3BaZWxwdFRucG9hMDFFVW0xT1YxSm9Xa1JyZWs5SFNtbE9Na2sxVFVkTk1rMTZhR3hOYlVreVRsUm9iVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVME4wUzFSWVRraFJNV3hvWkd4Q05GSlZaSFpXUjJoelN6TldhMk5ZU2xOWGJXTTBUV3h3ZFdWSGRHNU5NREUyVjBVNWNrOVlhRXhOTUVad1VsVkdObE5YU2xaaVJXYzBaREZKZUU1c2JFSmhTRXBvVWtkSk1Vc3paRkZaTURWVVVqRkNORkpFYUV4aWVscDVVbTB4VmxKRVFrTlhWMDUyVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVE13TEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURNeU9EVXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDBzZXlKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdVpHVjJMbU52YzJsbmJpNXphVzF3YkdWemFXZHVhVzVuTG5ZeEsycHpiMjRpTENKemFYcGxJam95TmpBc0ltUnBaMlZ6ZENJNkluTm9ZVEkxTmpwak0yVTFOV1JoTkRFeU16QTJZall4TldNek5EWTROalZtTjJNNU56Y3pZelptTnpoa01EUm1OV1JoWkRrek9HSmlOMkk1TUdNMk16aGxNbUkyTlRobUlpd2lZVzV1YjNSaGRHbHZibk1pT25zaVpHVjJMbU52YzJsbmJuQnliMnBsWTNRdVkyOXphV2R1TDNOcFoyNWhkSFZ5WlNJNklrMUZWVU5KUmxsNk5VNTNjekZvWTBVek5IVmtlQzloYjIxeUsyOXNla1pPY21sbFMwTllla3MxZUhweFZrTnZVMEZwUlVGbmRDOTRWVVpxV21ST2VsQklaR1lyZWpSaGFrVXZUSEYxTjJ0UE5WVkdhM0o1T1doWmNFWnFRVGRuUFNJc0ltUmxkaTV6YVdkemRHOXlaUzVqYjNOcFoyNHZZblZ1Wkd4bElqb2llMXdpVTJsbmJtVmtSVzUwY25sVWFXMWxjM1JoYlhCY0lqcGNJazFGVVVOSlIwaHpRbHBtYjFORVNtVTVZbnAxZW1Wbk5IZDZXbTlTVDNabWJXdFFVbkpZVTFGRWNVNVBaVFpEUWtGcFFuZFFTV3BRT0hkeVUyTlJWR0pVY25vM1NEZG9hWGhqUVZWQk5FOXROM1ZKTDNGNVlXdEZibEE0YTFFOVBWd2lMRndpVUdGNWJHOWhaRndpT250Y0ltSnZaSGxjSWpwY0ltVjVTbWhqUjJ4WFdsaEtlbUZYT1hWSmFtOXBUVU0wZDB4cVJXbE1RMHB5WVZjMWEwbHFiMmxoUjBaNllVZFdhMk50Vm5KaU0wcHJTV2wzYVdNelFteFplVWsyWlhsS2ExbFlVbWhKYW5BM1NXMW9hR015WjJsUGJuTnBXVmQ0Ym1JelNuQmtSMmgwU1dwdmFXTXlhR2hOYWxVeVNXbDNhV1J0Um5Oa1YxVnBUMmxLYWsweVZURk9WMUpvVGtSRmVVMTZRVEpaYWxsNFRsZE5lazVFV1RST2FsWnRUakpOTlU1NlkzcFplbHB0VG5wb2EwMUVVbTFPVjFKb1drUnJlazlIU21sT01razFUVWROTWsxNmFHeE5iVWt5VGxSb2JVbHVNVGxNUTBwNllWZGtkVmxZVWpGamJWVnBUMjV6YVZreU9YVmtSMVoxWkVOSk5rbHJNVVpXVlU1S1VteHNOazVWTlROamVrWnZXVEJWZWs1SVZtdGxRemxvWWpJeGVVc3lPWE5sYTFwUFkyMXNiRk13VGxsbGEzTXhaVWh3ZUZaclRuWlZNRVp3VWxWR2JtUkRPVFJXVlZweFYyMVNUMlZzUWtsYVIxbHlaV3BTYUdGclZYWlVTRVl4VGpKMFVFNVdWa2RoTTBvMVQxZG9XbU5GV25GUlZHUnVVRk5KYzBsdVFqRlpiWGh3V1RCMGJHVlRTVFpsZVVwcVlqSTFNRnBYTlRCSmFtOXBWRVpOZDJSRmVGUk5WVTVUVmxkU1MxWkhiRU5WVmxwV1Uyc3hWRlpWTVc1VmVrSlhWMnQ0VkUxSVVrMVZla0pNVmtaV1lXTnRVWGRXYWs1WVZsZG9UVmxxUm5kVGJWWjBZak5rVWsxRldsTldNVlp6VkVkSmVHTkZjR3hpVnprelZXdFdSMVZzYTNkVmJFcGhUVVZhUjFaR1ZrdFdSazV5VW1wQ1ZsSnRVakpVYTJSdllqRmFTR0ZHVWxKaE0wSmFWVzF3YzJReGNIUmhSM2hXVWtWWk1GUnVaSGRUTVZaWFUydFdUbUpVUm5OYVZtUk9UbFV4Y2sxWGNGTmhlbWN4VkcxNGEyTXhWbkpUV0doc1ZtMU9ORlJXWkRCU1JURnhWVzAxVjJKV1NUQldSRTV6V1ZkU2NrOVVXa3hOTUZwNVZEQldUMVV3ZERWUFNHeFRUVEZhVTFZeFpEUmlSazE2Vkd4S1VWWkVRa3hVUmsxM1pFVjRWRTFWV2xWaE1VWnVWbFZhVjFFeFVrWmlSVkpLVWxoU1IxWXhUWGRrUlhoVVRVaFNSRnA2TURsSmJqRTVabGd3UFZ3aUxGd2lhVzUwWldkeVlYUmxaRlJwYldWY0lqb3hOell6TmpZME1UTXpMRndpYkc5blNXNWtaWGhjSWpvM01UQXpNRE0zT0Rrc1hDSnNiMmRKUkZ3aU9sd2lZekJrTWpOa05tRmtOREEyT1RjelpqazFOVGxtTTJKaE1tUXhZMkV3TVdZNE5ERTBOMlE0Wm1aak5XSTRORFExWXpJeU5HWTVPR0k1TlRreE9EQXhaRndpZlgwaWZYMWRmUT09IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUuZGlnZXN0Ijoic2hhMjU2OjE1NGVhZTUwODNlNTQ2NzhiNTE2OWQ5ZWZlOTU2MjQyMDYxZDg5YTZlYThmOWJkNjI0MDgwMDAxNTU5NmVhNjkiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5wcm92aWRlciI6ImNvc2lnbiIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImI2OGExZDlmNGJhNzUzNDQ0MWJlODZmZjE0YTQ2NTllOWIzOGQ4MDcwNjYxNjZjZmVkMzUwMjk2MDc2OTM3ZjQifSwgIm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2FydGlmYWN0LWNhcyJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNoYWlubG9vcC1kYXJ3aW4tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJBUlRJRkFDVCJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQyMGRhNmU0Mjc2MDA0YTZkOWQyYmMzYjU1YzBlNmFhYzI1ZTNkMzY0ODk1YThjZTU2MzBmMTBhMmEwOWNlMzEifSwgIm5hbWUiOiJjaGFpbmxvb3AifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjaGFpbmxvb3AtZGFyd2luLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjOWYxMmFjZGJmMTRhNmQzZWU0NmQ4ODc0NjRhMTU4Njk5ZDg3YzM4NjJlMjA4OTJkZmUyM2IwMTkxMTQyZjEyIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2hhaW5sb29wLWxpbnV4LWFtZDY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2NDFmMDAyYjk0MjRkMzM5ZmM4YmNmNzU2MDI0ZDQ0MTRkNDQ3YmViODZlMmFmZWUyNTZmMWZmODI3NzU3MzFmIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2hhaW5sb29wLWxpbnV4LWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZmNiODUyZjE5MWJjNTMzNjBmNDllYWEyY2MyNWJhMWVlNjY1NDQwZjZjZGIyNTMyNDUzMWZiZDNkNWVkNzVhIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJMk1tSm1ZVGcxWWpNNVpUQXlNR0ZrWWpJelpqZzNabU01Tm1Fd1kySmhaVEpqWXpGbE5EYzRZV05sTWpjd05qZ3hNamM1TkRWa1pUZGlNMlptWmpraWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam80WXpabFptTmhORGt6T1dJeE1qQmlPR1ZoTVRnNVlqZ3pOR1l4Tm1FeVlqWTJNamxpWWpneVlUZGhaalJoTVRNMFl6STROalV3TURNellXVXpOR1kwSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRldVTkpVVU13T1ZKc1dHZE1kMlJoVFVOMFRFbHlhbVI2SzFWcmIxcFZjV1JFV0dwVmN6ZERTR2t3TDI1NVNqWjNTV2hCVGtoV2IzQjFSMFozYVV0alNWazNLelpvV1ZSSlQzRkxSbHB2U0VFclJ6bFVaVUpaSzFac1kyeHlVaUlzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVOR1FuWllTRFZ3YTNSbldWTmxWbU5pZG00MlNFUnRhVzlXV25jMFpFVk9MMFpJVmxkWFp6aEJWa2RSU1doQlNscHdaekE1VURsR2FtNTNhbmxhZEhWd1p5OUVlR28wT0dOdVFXWklUVVJXYXpSeWJsSlhVV0ozY0Z3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpORmw2V214YWJVNW9Ua1JyZWs5WFNYaE5ha0pwVDBkV2FFMVVaelZaYW1kNlRrZFplRTV0UlhsWmFsa3lUV3BzYVZscVozbFpWR1JvV21wU2FFMVVUVEJaZWtrMFRtcFZkMDFFVFhwWlYxVjZUa2RaTUVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlhWVTVLVlZWTmQwOVdTbk5YUjJSTlpESlNhRlJWVGpCVVJXeDVZVzFTTmtzeFZuSmlNWEJXWTFkU1JWZEhjRlpqZW1SRVUwZHJkMHd5TlRWVGFsb3pVMWRvUWxScmFGZGlNMEl4VWpCYU0yRlZkR3BUVm1zelMzcGFiMWRXVWtwVU0wWk1VbXh3ZGxORlJYSlNlbXhWV2xWS1drc3hXbk5aTW5oNVZXbEpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRJd0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1ERTNOVEVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6Zjk2MWNhYmRmMGIzYjI2YmY2MjExZWM3OGI5MDM0NWYxMzFkYjRhMDYxOTE0ZDFlM2FkODdjYmI4Y2U3OWQxNSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMjgzYWUyMDBjYjE4ZmUwNThiMDJkY2VjYzA2MjI0ZWY3ZmU2YTM2ZmEyY2Y2Mzc5ZTViNzBmNjFhYTQ1NDI2ZSJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pGa01XVTFNbVZtTVRJMFlUUmlaVGN6WWpRNFptSTFPR1V3TlRZeU9HRTBNV0kxTURKbE16Y3pZek14TlRCalpqRmhPV1UyWmpJMVkyUTRNRFl4WVRNaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam94TjJOaE0yRXlNak14TlRCa01qZGtOR1kwWXpkaE1tVTBNVGN6TVdObE9ETTJNelUxTXprelpEaGhNelF5T1RkbVlqVTNNelppTW1OaVpEUmhZMlZoSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpRVmhPUW5oblpWcFJWR013TDBKSVIxZHdabkIwVUhZekswOVNOSFIyWVN0VlNtWnJNMmxFZWpWbVFrRnBRa0ZpUjNCck5WQmFSRTFTZVRWbk5GaDRhazB3UkVGV1VUVnJSSEZ3ZVZscFpWTjFTbXRKWVU5eGJHYzlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZWVU5KVVVSemVITmxjR2RQZEZGVGRtaFdTRWxsWlRSbGFWVjFVV3BQWVhCYWJIVjJWbFkzVG1zclJtVnRjbFIzU1dkTU5rdDFRVFJMTDNCeVRVdEJiVmMwYml0TVl6TkROREF5TTB0VFRuZE5VRk40UkcxbU5EbDFiVWRuUFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEplRTR5VG1oTk1rVjVUV3BOZUU1VVFtdE5hbVJyVGtkWk1GbDZaR2hOYlZVd1RWUmplazFYVG14UFJFMHlUWHBWTVUxNmEzcGFSR2hvVFhwUmVVOVVaRzFaYWxVelRYcGFhVTF0VG1sYVJGSm9XVEpXYUVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVVZab1QxRnVhRzVhVm5CU1ZrZE5kMHd3U2tsU01XUjNXbTVDTUZWSVdYcExNRGxUVGtoU01sbFRkRlpUYlZweVRUSnNSV1ZxVm0xUmEwWndVV3RHYVZJelFuSk9Wa0poVWtVeFUyVlVWbTVPUm1nMFlXc3dkMUpGUmxkVlZGWnlVa2hHZDJWV2JIQmFWazR4VTIxMFNsbFZPWGhpUjJNNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRFM0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1ERXlOakVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6NGRmZDYyOTI3MzVkYWU0NzQyN2ZhYjljZjcwMTg4MDFjYTQwNjQxMjBmYzBhZjJhMTJjZDc0YjkzNDcwOTgwMSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMGU5M2NiNGE0YTZjNTcwZjJjYzUzOTc5ZmU2MDYxNjU4YWZkNjg1MjRhMjYzZDIwOTVmM2RjZTdjZjdlMDkxMiJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2xpLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIyMzI0OWUzMzgzODg5ZjdiZjg2ZDk3MjM1ZDNkYTRjMmZiMjFlODFjNDM5MGJmYWMzYmZjODE2Y2M5YTMzNjExIn0sICJuYW1lIjoic2JvbS1jbGk6djEuNjAuMC1hbWQ2NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NsaSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNzU1N2EzZTEwYzFkZGVkNzAwMzJiY2FkNzg3YzY4OTQwZmNlY2ZlYjUxMmU4YmZmOGJkNjNjMTg3Y2E2ZjQxZCJ9LCAibmFtZSI6InNib20tY2xpOnYxLjYwLjAtYXJtNjQuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NsaSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzY2YjYzM2NmOGEwYWE4NzgzY2U5MThiYTUyZTI4MDA1Zjk1YTAxMWQxMzhjY2E2ODQyMjA0OWMxZWRlYzU3NyJ9LCAibmFtZSI6InNib20tY2xpOnYxLjYwLjAuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2xpLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21JME5XTXpOMk5qTVRWa05tSTRNMkl4WmpRNE1tRmhORFF5TVRGaFlqSTNZek16TVdNek1tSXpOakJrWkRKaE5UTTRNamMwTmpCaE5qSmhOalkwWkdRaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOanBtTUdRd05qWXpOV0k1T0RGbFltUTFPVGN6TnpjMFpUSTVObU5qTW1NNU4yUTRNR1ZtTmpjMk1EVXpabVE1TldReE5qZ3pOV0ppWm1NMlkySXhOVFZpSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpRbTFNTW14RU1pOTJVbk50VkhCTk1HVjNhRWR4WWxKUFYzbENjRVpCUjBzdlJHZ3JkRmxsYjBaalVrRnBRWEJCZVd3MVltaGlaMk55T0Vab0swWm9abXhSUTFOWk0weFNaVmR6SzNwb1puSm9abWx2VkRkc2EyYzlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5KUjJGNE9WVjRVamd2VmtweEszcHplVE5SYTJWeWJsQjJhVkpQZG1sMGRIQlFXREJLV1RkR0wwcFVla0ZwUVRsdVdWUmtWVTVqVW01dmRUQXZTMlIwVERJelkwSndUV1JYTlZSNGFUUkxaM05NVlVaNk9VaEZLMUU5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEtiVTFIVVhkT2FsbDZUbGRKTlU5RVJteFpiVkV4VDFSamVrNTZZekJhVkVrMVRtMU9hazF0VFRWT01sRTBUVWRXYlU1cVl6Sk5SRlY2V20xUk5VNVhVWGhPYW1kNlRsZEthVnB0VFRKWk1rbDRUbFJXYVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVVcweFRVMXRlRVZOYVRreVZXNU9kRlpJUWs1TlIxWXpZVVZrZUZsc1NsQldNMnhEWTBWYVFsSXdjM1pTUjJkeVpFWnNiR0l3V21wVmEwWndVVmhDUW1WWGR6RlpiV2hwV2pKT2VVOUZXbTlMTUZwdldtMTRVbEV4VGxwTk1IaFRXbFprZWtzemNHOWFia3B2V20xc2RsWkVaSE5oTW1NNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRRMExGd2liRzluU1c1a1pYaGNJam8zTVRBek1EVTBPRFlzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5URXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qcG1NR1F3TmpZek5XSTVPREZsWW1RMU9UY3pOemMwWlRJNU5tTmpNbU01TjJRNE1HVm1OamMyTURVelptUTVOV1F4Tmpnek5XSmlabU0yWTJJeE5UVmlJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGV1VOSlVVUm9SR2d3TTA1cFdYQmFXWGxSYTBkWmExVkdla1p0Y0dzdk1XVldhVlpoTUhWMGNVOW5WRVJ1V0VWUlNXaEJUakJKWTB4VU5XZHVOR2h2U1ZoM1VIb3ZiQzg1UW1GRWJIZHBhMVZwZVU4elkwTkdTa0ZUZDBsR01DSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRldVTkpVVVJZVFZWMFVVNVBNa1pGTkhNM1V6RTBWVTA0YnpCelNHZEhiMDlhUjBOUmNscGxhVTVEYUVkM1pUVm5TV2hCVHk5d1MzRlFiRkZwVkZsUVl6WnRWMWs0SzJka1FqVXpjME5LYTJKdFl6QXZRekZ3T1RsdFVXNUVlVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsS2JVMUhVWGRPYWxsNlRsZEpOVTlFUm14WmJWRXhUMVJqZWs1Nll6QmFWRWsxVG0xT2FrMXRUVFZPTWxFMFRVZFdiVTVxWXpKTlJGVjZXbTFSTlU1WFVYaE9hbWQ2VGxkS2FWcHRUVEpaTWtsNFRsUldhVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaWFZVNUtWVlZTYjFKSFozZE5NRFZ3VjFoQ1lWZFliRkpoTUdSYVlURldSMlZyV25SalIzTjJUVmRXVjJGV1dtaE5TRll3WTFVNWJsWkZVblZYUlZaU1UxZG9RbFJxUWtwWk1IaFZUbGRrZFU1SGFIWlRWbWd6VlVodmRtSkRPRFZSYlVaRllraGtjR0V4Vm5CbFZUaDZXVEJPUjFOclJsUmtNR3hIVFVOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVFEzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURZd05EWXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoxOGM0NTg4MTlkNWU5ZTNkZjkyM2MwN2NkZjU5ZTIyZjRkMTJjYWNiNDQ1ZWUyNjU1YTA4ODRjYmVhMWE3YzMyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlYmZmOTA0MzBjMDNhMmM3NGE3YzE4Zjk4NjczZTNkNGFjMTM2YWZjMjU0MTNlYjAxNTkwOGQzZDcxNzI2NzUzIn0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jbGkifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21FeE16bGtNalEyWldRMU5qUmtNV1ZoWTJNMk1qRTFZMk5oTlRWa1pHSXhOek0zWWpCaFlXTmtOV05oTkdSbE4yRTNOREV6TVRVellXUmxaRGsxTm1ZaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOakVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam8wWkRrMFlqUXdZamt6WmpoaU5qa3hORFpqWmpKa1pEWXpaVFk1WkdWa04yUmlaamhoWkRFMk1ETmxNelZtTURFMk16YzNORGxsTVRFeU5EY3dOakl5SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSRmMzVVZCYVEyRndUakV3SzJSNFptRjJZMVF3VVdsUGNWbFFUV0pWZDJGTlQyRkdUbEpyYzBOSVEwRnBSVUZzVEc5QksxaFlhSFZaWWtKMlQzVnVSVUpQZWtWWmNVaExNR1IyU1ZwWmFuaHdTekoxVmxBeWVUTnZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZWVU5KVVVOWlVHdENibEp6TTJNeFUwa3JUSHBHWmtSUlRHRlBORXhVVGl0d2EzbDRVVlEwVkZkUmIwOXNaMWRuU1dkamNFcG1lR0ZrUzJNd1MzcGxPV2R6WjBGTFdGQTJhVVZqVWpWd2IwOXhXa1l2YURNNGQzTXhSbkp6UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpNRnBFYXpCWmFsRjNXV3ByZWxwcWFHbE9hbXQ0VGtSYWFscHFTbXRhUkZsNldsUlpOVnBIVm10T01sSnBXbXBvYUZwRVJUSk5SRTVzVFhwV2JVMUVSVEpOZW1NelRrUnNiRTFVUlhsT1JHTjNUbXBKZVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWtaak0xVldRbUZSTWtaM1ZHcEZkMHN5VWpSYWJVWXlXVEZSZDFWWGJGQmpWbXhSVkZkS1ZtUXlSazVVTWtaSFZHeEtjbU13VGtsUk1FWndVbFZHYzFSSE9VSkxNV2haWVVoV1dsbHJTakpVTTFaMVVsVktVR1ZyVmxwalZXaE1UVWRTTWxOV2NGcGhibWgzVTNwS01WWnNRWGxsVkU1MlVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRFd0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1EQXlOakVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6ZjVlYmY5NGE5M2M4MTFiMmJiMGQ5ZWIwOTdlYzk2ZTMzOTlmYjc3YzgzMGM2ZmU5ZjlkMmRmZmI5MTg3NjIzMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMTEzNDE2ZjgyYWViNjk3ZWQ5ZDQ1Nzc5NDIxN2MyN2Q1NzI5NmY5MGEwOWMyNmRhZjM5M2ZkMzAwN2JhYWVjZiJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZSJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjpmYWxzZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPall5WWpNNE9XRTFaRE5sWVRrNE1XRmlNbVkxTnpjMFkyWmpZMk00TmpkbE1qY3hNREkxWkRNeU4yRTVPR1l3TlRNNVlUSTJaRGN6TldRNFltSTROakFpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qRXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzJZamsxTkRSaVkyRm1OakJtTXpjd1ltTmhaVGt6TXpZNE56WTFaVFE1T0Raak1UUTVPV1ptWVRBMU56RmpaVFU0WXprelkyTXhOV0kxWWpNM01qRXpJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVVVOSlFVdFpVazVVY2l0cGVUaG5kbVJwYTB4dWJsZE9NSGRIYzFsSE0wOXBLMGRhU1dNd2VsYzVTakJ0WTBGcFFrSlFRbGRCUW5aMGNVVlpVSFJVVTJZMlFXRm9XbVZGT1ZGcFVYcDJibVV4V0RRMFlrdE1UVVZHWTNjOVBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlVVTkpRWFpLUVRsR1VHdGFiMHhLUTJabVZrMWFla3BETkROWk0zRm5NMjQwVFRNd1VXVTBSMmxVY2s1V1pVRnBRazVQTkU1QlIwWkNVRFp2TjA4MVZHOXNabEEzT1cxblNtNVRSblZpWlVONlNEVjNTRTlIWVROVGFHYzlQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk1sbHFhekZPUkZKcFdUSkdiVTVxUW0xTmVtTjNXVzFPYUZwVWEzcE5lbGswVG5wWk1WcFVVVFZQUkZwcVRWUlJOVTlYV20xWlZFRXhUbnBHYWxwVVZUUlplbXQ2V1RKTmVFNVhTVEZaYWswelRXcEZla2x1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaVlZVNUtVVlYwV2xWck5WVmphWFJ3WlZSb2JtUnRVbkJoTUhoMVlteGtUMDFJWkVoak1XeElUVEE1Y0Vzd1pHRlRWMDEzWld4ak5WTnFRblJaTUVad1VXdEtVVkZzWkVKUmJsb3dZMVZXV2xWSVVsVlZNbGt5VVZkR2IxZHRWa1pQVmtad1ZWaHdNbUp0VlhoWFJGRXdXV3QwVFZSVlZrZFpNMk01VUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEUwTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURBM056UXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoyNTBkNDA2ZjE3MzA3ODdiMDVmMjUzZmRiODQyZGQxNjBmMzE2MDNjMjNhODI0OGY1YmMzNzdjZTBkYmUzMjg3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJiNmMyZTA1NjRlODdjMWU1MTdmNzNiOGM1MTc0Njc2MzdjNGI5NDRhY2ZlOTI4MzZiNTViOWE2NGMwZmI5YTM2In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21VeVl6RmxZMlUwTVRFM01XRTROV0UyWldZd1ptWmtOekE1WkdGaVpEYzNaVGMyTlRkak5qaGlaVFE0T1RkaU5UazRZMkZpTm1WaVl6Z3lNamd3WVRnaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam8yTmpRMU9HTTJZV00yTlRaaVlUWTJNMlV6WkdWaU16TXdOR0k1Wm1Ka016SmpOR05pWXpBMVpHUTVPVGxrTmpJMk9XVmlaR0UwTldNeE5ESXhOVGRpSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSMlJ4UjNacVNGZHJMMlJ2UjFONU9UYzRSa0ZhZDI0cmNtUlNSRWhHY1VwdGVsRlZUa1JYY1hwUFNVRnBSVUU1ZFhaMk0xRm1iMjVuWTFrNVNtTm1iMWg2VmxSVU1uWlRWR1IyZFc1UU1rZG9VM3BKYlZKRE9GRnZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVReFRtbHliVmx6WjJOeUwzVjJNSEZOYjJKSk9HVTNNUzlQUWtKWFYwZHJiRXg2TVdSUGFHZEdWa1ZCU1doQlRWVmhkblJuWW05cFlYUXZOV2RVZFdkbVUwMW1lams0V0ZCMk9VSnNVVmcyV201eGNXOU1aMnhUYUZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpNazVxVVRGUFIwMHlXVmROTWs1VVdtbFpWRmt5VFRKVmVscEhWbWxOZWsxM1RrZEpOVnB0U210TmVrcHFUa2RPYVZsNlFURmFSMUUxVDFSc2EwNXFTVEpQVjFacFdrZEZNRTVYVFhoT1JFbDRUbFJrYVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWpKU2VGSXpXbkZUUm1SeVRESlNkbEl4VGpWUFZHTTBVbXRHWVdReU5ISmpiVkpUVWtWb1IyTlZjSFJsYkVaV1ZHdFNXR05ZY0ZCVFZVWndVbFZGTldSWVdqSk5NVVp0WWpJMWJsa3hhelZUYlU1dFlqRm9ObFpzVWxWTmJscFVWa2RTTW1SWE5WRk5hMlJ2VlROd1NtSldTa1JQUmtaMlVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRBd0xGd2liRzluU1c1a1pYaGNJam8zTVRBeU9UZzNNemtzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6YWM0NDk3NTc4MTkyMzQxMTY1ZTA0ZWY0OTgwYWM2NGRhMjYyNzE3OGY5ODkzMzEyYTZhNjg5NjJmYmQyODE3OSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiOGUzYTMzMjNjMWVlN2M1YWJmNGMwYTQyZDRjOTM3MzE0MTRmN2M5ZDc2ODVhMzZlZTQ5YzcwY2NiM2VlZjY3YyJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJMlpqUmpaREUxTkdVNFptTTJPRFJqWVRsbE1tRmtZV1F5WlRJeE1XWTRPVEZtT0RFNE1ETmtORE5qWVdRM09UQTROMkk1TWpFNU56VXpZV0ZoTTJNaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOanBrTWpFd01UUTNaR1kxTWpReFlUQXlaV0ZoTmpNelpETTBOVGN5TnpsaFpXWTNNRFJpT1dNMllXSmxZelU0WWpJd1pUYzRPRGMyTjJNeVpqTTFPR000SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpSVTFoWWxWTlMwUTRaMDAyZGtSNk5Hb3lXVk5MTTBocFMxcHZlWGh3T0d4WmJtczVZalJSUVRWU1EwRnBRa1phYlZSWlVuVlpkVUkxU0RWRlREZEVSMnhMZUdORVRGWkVjbFk1YUZweWRYVlVjeTl0WWtSeVFrRTlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5KUW1kamNIbGpTa3RPZUZscVFWWjNNa2hoZFZaUVVsRXlWVTg1TVUxeVNqQjJOa1ZWV1RablFYaHpkRUZwUVhvdlV6TlNUbkpHVGpCV1R5dG9aRmhsYmxWWWIyMUpVRzlJVW5KV1RtSlZMM2hzWTFWSk5ETkdSbEU5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEthMDFxUlhkTlZGRXpXa2RaTVUxcVVYaFpWRUY1V2xkR2FFNXFUWHBhUkUwd1RsUmplVTU2YkdoYVYxa3pUVVJTYVU5WFRUSlpWMHBzV1hwVk5GbHFTWGRhVkdNMFQwUmpNazR5VFhsYWFrMHhUMGROTkVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVWxVeGFGbHNWazVUTUZFMFdqQXdNbVJyVWpaT1IyOTVWMVpPVEUwd2FIQlRNWEIyWlZob2QwOUhlRnBpYlhNMVdXcFNVbEZVVmxOUk1FWndVV3RhWVdKV1VscFZibFphWkZWSk1WTkVWa1pVUkdSRlVqSjRUR1ZIVGtWVVJscEZZMnhaTldGR2NIbGtXRlpWWTNrNWRGbHJVbmxSYTBVNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTURrM0xGd2liRzluU1c1a1pYaGNJam8zTVRBeU9UZ3lNREFzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6NmFkM2IwNzRhNDdjYTIwYmQ1OTNjZDBjMTdmZjIwNmU5NTdjMWQ2ZmY2YTMwMjMxYWU0MjgxZGJhNjQ1MDQ0MCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMjQ2MzA4ODdjMDhhMzI5MTczYTkwZjJjYjE3NzI0MDJkMzVjYzVjN2NmMWRhOTc2M2NmMmNmZGE1ODBkOTMxOCJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJhNjJhYzEwOWM1OTkyMzc2MTFkMDg4YTUwZDVhZjc4OTY1OTE2MzQ2YjMwMGQ0ZDQ1MmNmM2Q4OTcxZDFjMWY2In0sICJuYW1lIjoic2JvbS1jb250cm9sLXBsYW5lLW1pZ3JhdGlvbnM6djEuNjAuMC1hbWQ2NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUtbWlncmF0aW9ucyIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZjEyMDAxOGNlYmVlMDE3NzY1ZWMyYjIxOWI2NWU5OGUzZjBmZjg3MzU1OTFiNWRhNjI5Y2M0ZjQzNmIxYzJjZSJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZS1taWdyYXRpb25zOnYxLjYwLjAtYXJtNjQuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUtbWlncmF0aW9ucyIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNDk4OWFkNmJjMTBjOWI2NzhlNjVhNzFmMTgzMjkwYTc2NmJmMTQ0YzhiY2MyODg5Y2ViODg1YjE5YzhmZTY1ZiJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZS1taWdyYXRpb25zOnYxLjYwLjAuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21ZNE9UQTFZems0TldFelpXWmtNRFJoWTJVMFpXUTVaall6WWpSbVpqVTNZall4TldObU56TXdPVE5tTkRSaU1qTTFNVGRtTVRNMVpESXpZbVkwTldRaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam95T0dSaE5HRmtZV1JtTVdRNVpqQTBPR1E1WVdZNVptTmhaalEzTlRRM016YzVNbVJtT0dJNE16YzJZV0l4TmpReFl6STNaR1JoTkRGaU9HWmtPVFF3SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSMjV5UmxKNVExRlFTRlZVT0dWMVMyNWllSEpzTldkcFRHSmpkMFJNZFdzMVVIcDZObTVTTVdONVJrRnBSVUZ6V1hCR2RHcG9aVWxFWTJoVk1GaHFSbWczYURoRVNXRnFNMjByZFc1bGEyZG1LMkZ2ZEV4SUwxQlJQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5JTTNOUFdtdHdPWFJtYWxseWNrOW9URVpIZEZORVkwODVZbGR6TjFocVRtNXBibWhqZG1reWFsSnZRMGxSUkZwVlVqZzNXV3RFVlRsMVRHOXJiRloyVjBkR1RUSlNjbWgzU0M5VlJ5dGhTMUJzTXpFeGRUWTRSWGM5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEplVTlIVW1oT1IwWnJXVmRTYlUxWFVUVmFha0V3VDBkUk5WbFhXVFZhYlU1b1dtcFJNMDVVVVROTmVtTTFUVzFTYlU5SFNUUk5lbU15V1ZkSmVFNXFVWGhaZWtreldrZFNhRTVFUm1sUFIxcHJUMVJSZDBsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWpJMWVWSnNTalZSTVVaUlUwWldWVTlIVmpGVE1qVnBaVWhLYzA1WFpIQlVSMHBxWkRCU1RXUlhjekZWU0hBMlRtMDFVMDFYVGpWU2EwWndVbFZHZWxkWVFrZGtSM0J2V2xWc1JWa3lhRlpOUm1oeFVtMW5NMkZFYUVWVFYwWnhUVEl3Y21SWE5XeGhNbVJ0U3pKR2RtUkZlRWxNTVVKU1VGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRNM0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1EUXpOak1zWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU56SXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qb3lPR1JoTkdGa1lXUm1NV1E1WmpBME9HUTVZV1k1Wm1OaFpqUTNOVFEzTXpjNU1tUm1PR0k0TXpjMllXSXhOalF4WXpJM1pHUmhOREZpT0daa09UUXdJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlIwOUxVbVZQTlV3M0x6QTBjRk5wZDFWdVdqRm5ZMHR6YlUxVVozbDZjRkl6UkVsTE5HMVBSMUUzVjBGcFJVRXlNMVk1Y1RCNlJUbGpkMXBKVVVaRU1YVnZURFJoV25vcmJtOUdSak55YzBWUWMyOUZaWFIwVkhSQlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5MYTFsRGVsUjJObGN3YlZVM1ZrMHZkVzFWTkZGR2VrMVFZMDVQWVdacmFXaFBLM1EwYVcxV1pHOVJTV2RLZFdZdlZtNUxlbEp0V2pNdk1EQk9TVUpSY21JNVVESkZieTlVZDBOVk1XWlFSSEZOWmxRM1RsUjNQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSmVVOUhVbWhPUjBacldWZFNiVTFYVVRWYWFrRXdUMGRSTlZsWFdUVmFiVTVvV21wUk0wNVVVVE5OZW1NMVRXMVNiVTlIU1RSTmVtTXlXVmRKZUU1cVVYaFpla2t6V2tkU2FFNUVSbWxQUjFwclQxUlJkMGx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVakE1VEZWdFZsQk9WWGN6VEhwQk1HTkdUbkJrTVZaMVYycEdibGt3ZEhwaVZURlZXak5zTm1OR1NYcFNSV3hNVGtjeFVGSXhSVE5XTUVad1VsVkZlVTB4V1RWalZFSTJVbFJzYW1ReGNFcFZWVnBGVFZoV2RsUkVVbWhYYm05eVltMDVSMUpxVG5sak1GWlJZekk1UmxwWVVqQldTRkpDVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVFF3TEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURRNU1EY3NYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1Njo0YTJiOGQ4ZWNlNTFlZGI1MDNjNmE5YjNhM2YyODY5NzRkYjBlZjQwOTA0NDJlYWU4MDUyMzAyMjkyZDcyMTU3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI5NzU3YzM5NmMxM2M4YjAwYzUzNmE5OTk5YzFiYTIwZGI5ZDA3NjY0NTU5NTdlOGFlMDM1OWE0NmQyNGUwY2M3In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFtZDY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZTA2M2I0ZjAxYTdlMzgyZTFkOWU2ZTQ4ZGIyMmM2MGU3YWEzZGQ2YjRjMzk5OTY1NGE0OTI3NmIxNzI2MjE1MiJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZTp2MS42MC4wLWFtZDY0LmN5Y2xvbmVkeC5qc29uIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMC1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjY2MTBiNTQzZDEyZmFjMmUwMGQ4MWQ3NGUxZmE0YTcxY2NhMzM1NTcwYjVkYjAyZjA4NmU3ZjBmMTRlMTIwNGQifSwgIm5hbWUiOiJzYm9tLWNvbnRyb2wtcGxhbmU6djEuNjAuMC1hcm02NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjIwZDhmM2JkNTQ5MzNhYjBkNjc1ZmMyMzNjOGJjZjhmZmFkMGRkNDUwNDBkN2FjMGY0NDJhZThjZmZiNmUxODIifSwgIm5hbWUiOiJzYm9tLWNvbnRyb2wtcGxhbmU6djEuNjAuMC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJNE1HWmxOamMxWlRJeE1qVXpOMlF3WldRMU5UTmhNRFZtTURJd05qTXhObVZsTnpKbU5qWTVNak0xTkRsbVpUTXdaVEJrT0dKbVpUSTJOV1JrTkRnaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOakVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam81TkRFd01UVm1PR1l3WldFNE5tTXpORFl5TURjMk1HWTROVEJsWlRJNVl6a3pPR0V4TjJGaFlXVTBPRFUwWVRsa1pHVmpaV0V4TmpVM04yTTBOVE00SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSV1JzYzBkSWRsTk5SVGh5TDNaWlIxTkdja0YyYlhsR2JXNDRjRVJyYUVGWkx5dHdZbmw1Um1OMFIwRnBSVUZ0WjBGNmF6ZFVTMkZJZFhGeGFFMTVkVk5pZVU1NFVrUXJWMVl2YUdaUFRXRktaRzgyWld4Vk4wVkZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVOT1JHOUdNblJ1Y2pGcVUwdzVPRzlCVm1FME1uUmxRVXBETlhkRGIwbFNNR05YYjNwa1QwVm1ObVIzU1doQlRXSk1VM0J2U1ROR1VXSnRLMGN2VkhWb1MyMVpaVlpTTjFCMU1tMW9WbTkwUjNBeVMwbE9ZbTlhTmx3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpOVTVFUlhkTlZGWnRUMGRaZDFwWFJUUk9iVTE2VGtSWmVVMUVZekpOUjFrMFRsUkNiRnBVU1RWWmVtdDZUMGRGZUU0eVJtaFpWMVV3VDBSVk1GbFViR3RhUjFacVdsZEZlRTVxVlROT01rMHdUbFJOTkVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWxkU2MyTXdaRWxrYkU1T1VsUm9lVXd6V2xwU01VNUhZMnRHTW1KWWJFZGlWelEwWTBWU2NtRkZSbHBNZVhSM1dXNXNOVkp0VGpCU01FWndVbFZHZEZvd1JqWmhlbVJWVXpKR1NXUllSbmhoUlRFMVpGWk9hV1ZWTlRSVmExRnlWakZaZG1GSFdsQlVWMFpMV2tjNE1scFhlRlpPTUZaR1VGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRJekxGd2liRzluU1c1a1pYaGNJam8zTVRBek1ESXlOVFlzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qRXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzVOREV3TVRWbU9HWXdaV0U0Tm1Nek5EWXlNRGMyTUdZNE5UQmxaVEk1WXprek9HRXhOMkZoWVdVME9EVTBZVGxrWkdWalpXRXhOalUzTjJNME5UTTRJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlVVTlZZMGhYVERaUldYUlhPSFUwVVZkelZrOWlTMmcxZGpOclIyRXJOblV4V2t3eVlsQkpRekZaZUZOQlNXZE5hR05MV0dkdFVIRnhaa2N5Um5ReVoySjRia3BDVVVoRlVISkZkV1JvVUZWWU16aG9XVWRXUldWdlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVVIwVEcxeFMzTnFZa1JsY0VOcGFFbHRlVTFKUlhVclJEQkJVMDF1S3pOaGRrRnZZMlIxTTBaNFQweDNTV2REWkZOQ05tMVJibFF6VkZOTlIyeHFLMVpqVm1aUE9YbE5ZbXA1VWpaM1ZrVklVbGxYYVZKa1Mwa3dQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5VNUVSWGROVkZadFQwZFpkMXBYUlRST2JVMTZUa1JaZVUxRVl6Sk5SMWswVGxSQ2JGcFVTVFZaZW10NlQwZEZlRTR5Um1oWlYxVXdUMFJWTUZsVWJHdGFSMVpxV2xkRmVFNXFWVE5PTWswd1RsUk5ORWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtWVlZPVmxrd2FGaFVSRnBTVjFoU1dFOUlWVEJWVm1SNlZtczVhVk15WnpGa2FrNXlVakpGY2s1dVZYaFhhM2Q1V1d4Q1NsRjZSbHBsUms1Q1UxZGtUbUZIVGt4WFIyUjBWVWhHZUZwclkzbFNibEY1V2pKS05HSnJjRU5WVldoR1ZVaEtSbVJYVW05VlJsWlpUWHBvYjFkVlpGZFNWMVoyVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEkzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURJM016TXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoyNWM5ZTg4OTk0MmZjMmNhYTY0YzVlZDViMGQwMWU5YTFhYjc5Y2UyMWY5ODBhZTA5ZjY1YTRhMTI2YTI0NGE2IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkOTZiYmVkMDc0ZDA2OTlmYWJjNjZhYmM1OWFmNzYwYmY4OWFmNzllNTg2MzBiMzBjYWUxMGJmMDZjNjI3ZWI5In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoic291cmNlLWNvZGUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJBUlRJRkFDVCJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZhY2IyYTJjMDM3Njg3MTNhMDI0ZTI4ZTM0MTczYTY3YzY0YWNiZGNlYWNiNjI4OGJmYjRmMWRiMTlhMzRmYTQifSwgIm5hbWUiOiJzb3VyY2UtY29kZS50YXIuZ3oifV0sICJtZXRhZGF0YSI6eyJjb250cmFjdE5hbWUiOiJjaGFpbmxvb3AtdmF1bHQtcmVsZWFzZSIsICJjb250cmFjdFZlcnNpb24iOiIyMyIsICJmaW5pc2hlZEF0IjoiMjAyNS0xMS0yMFQxODo0NzowOS4yMjAyMTQ3MjhaIiwgImluaXRpYWxpemVkQXQiOiIyMDI1LTExLTIwVDE4OjMxOjI0LjUwODkyMzIwN1oiLCAibmFtZSI6InJlbGVhc2UiLCAib3JnYW5pemF0aW9uIjoiY2hhaW5sb29wIiwgInByb2plY3QiOiJjaGFpbmxvb3AiLCAicHJvamVjdFZlcnNpb24iOiJ2MS41OS4wK25leHQiLCAicHJvamVjdFZlcnNpb25QcmVyZWxlYXNlIjp0cnVlLCAidGVhbSI6ImNvcmUiLCAid29ya2Zsb3dJRCI6ImNhNmQ5NzE4LWZhNDktNGEyMC05ZGI5LWE4MjA4MGU3OTYzMiIsICJ3b3JrZmxvd05hbWUiOiJyZWxlYXNlIiwgIndvcmtmbG93UnVuSUQiOiI2MTk5NmZiZS1mNmVjLTRlZTItYjg5Yi1kMDRiNDQ2NDZkNjUifSwgInBvbGljeUF0dEJsb2NrZWQiOmZhbHNlLCAicG9saWN5QmxvY2tCeXBhc3NFbmFibGVkIjpmYWxzZSwgInBvbGljeUNoZWNrQmxvY2tpbmdTdHJhdGVneSI6IkFEVklTT1JZIiwgInBvbGljeUV2YWx1YXRpb25zIjp7IkNIQUlOTE9PUC5BVFRFU1RBVElPTiI6W3siZGVzY3JpcHRpb24iOiJWZXJpZmllcyB0aGF0IHRoZSBhdHRlc3RhdGlvbiBleHBsaWNpdGx5IHJlZmVyZW5jZXMgYSBzcGVjaWZpYyBHaXQgY29tbWl0IiwgIm5hbWUiOiJzb3VyY2UtY29tbWl0IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic291cmNlLWNvbW1pdCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIxNjRiYzMyMmJmMzUwZDZiYjQ1NzY4Yzg2ZGIxODBmNTMxNTA4NWM3OTFhZGViYWYwOTQ5MGY5Y2NlOTk1MjhjIn0sICJuYW1lIjoic291cmNlLWNvbW1pdCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3NvdXJjZS1jb21taXQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29tbWl0LXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04iLCAid2l0aCI6eyJjaGVja19zaWduYXR1cmUiOiJ5ZXMifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBjb250YWluZXIifSwgImRlc2NyaXB0aW9uIjoiRW5zdXJlcyBhbGwgT0NJIGNvbnRhaW5lciBpbWFnZXMgaGF2ZSBhbiBhc3NvY2lhdGVkIFNCT00gbWF0ZXJpYWwuIE9ubHkgdGhlIEN5Y2xvbmVEWCBTQk9NIGZvcm1hdCBpcyBzdXBwb3J0ZWQuIFNCT01zIGdlbmVyYXRlZCBieSBTeWZ0IHVzaW5nIHRoZSAnbGF0ZXN0JyB0YWcgYXJlIG5vdCByZWNvZ25pemVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhIHBvbGljeSB2aW9sYXRpb24uXG4iLCAibmFtZSI6ImNvbnRhaW5lcnMtd2l0aC1zYm9tIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiY29udGFpbmVycy13aXRoLXNib20iLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMGEwMDJkZmQzODM1YjljM2I5NmU5NDA4MTQyNDdlYTBlNjJkMDJmMjZkMDhlY2YzMmJkY2I0MDc0NGM4MWNmOSJ9LCAibmFtZSI6ImNvbnRhaW5lcnMtd2l0aC1zYm9tIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvY29udGFpbmVycy13aXRoLXNib20ifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkFUVEVTVEFUSU9OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IGVpdGhlciBhIFNQRFggb3IgQ3ljbG9uZURYIFNCT00gbWF0ZXJpYWwgaXMgcHJlc2VudCBpbiB0aGUgYXR0ZXN0YXRpb24iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJuYW1lIjoic2JvbS1wcmVzZW50IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1wcmVzZW50IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjQ2MzU0NjQzZmMxMTYyMzk2OGM0NmRiYzZjZTQ1MzlhN2FiNDU2Nzk2YjNjNTQ0NzQ4NzYyMjQxM2IwNWZmMjUifSwgIm5hbWUiOiJzYm9tLXByZXNlbnQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXByZXNlbnQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBTTFNBIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBDSSBydW5uZXIgaXMgdGhlIGV4cGVjdGVkIG9uZSBzdXBwb3J0aW5nIENoYWlubG9vcCBhdHRlc3RhdGlvbi4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNsc2EtY2hlY2tzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjVmZDBlY2EwOGE2ZTE5ODRhNzgyYjk5ZjEyMGE4NWZiMDEwNzAxZmU5ODY4NWYxZGE4MjcwMmU2ZjMyZDkxNzgifSwgIm5hbWUiOiJzbHNhLWNoZWNrcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nsc2EtY2hlY2tzIn0sICJuYW1lIjoicnVubmVyLWF1dG9tYXRlZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InJ1bm5lci1hdXRvbWF0ZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYTUxYTM2YTc5YzZhYjEyNjYwNmEyZTFjMmY0ZmM3NTJhNDg1MDQ4ZTUzNjM3Y2FhMGU1YzIxNmJjZmI1Yzg2MyJ9LCAibmFtZSI6InJ1bm5lci1hdXRvbWF0ZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9ydW5uZXItYXV0b21hdGVkIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJBVFRFU1RBVElPTiIsICJ3aXRoIjp7InJ1bm5lciI6IkdJVEhVQl9BQ1RJT04ifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgU0xTQSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCBydW5uZXIgaXMgYXV0aGVudGljYXRlZCBieSB1c2luZyB0aGUgT0lEQyB0b2tlbiBmcm9tIHRoZSBwcm92aWRlci4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNsc2EtY2hlY2tzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjVmZDBlY2EwOGE2ZTE5ODRhNzgyYjk5ZjEyMGE4NWZiMDEwNzAxZmU5ODY4NWYxZGE4MjcwMmU2ZjMyZDkxNzgifSwgIm5hbWUiOiJzbHNhLWNoZWNrcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nsc2EtY2hlY2tzIn0sICJuYW1lIjoicnVubmVyLWF1dGhlbnRpY2F0ZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJydW5uZXItYXV0aGVudGljYXRlZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlMmM1OTgyNWUzYTU0ZWJjNTUyNDVjZTcwNGM5OGMzMDE0ZDdmYjZhNmFhMzFhYTFmZDAxMDA1MjExYzVmZGQzIn0sICJuYW1lIjoicnVubmVyLWF1dGhlbnRpY2F0ZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9ydW5uZXItYXV0aGVudGljYXRlZCJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04iLCAid2l0aCI6eyJlbnZpcm9ubWVudCI6IiIsICJydW5uZXJfcmVxdWlyZWQiOiJmYWxzZSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBTTFNBIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IFNMU0EgcHJvdmVuYW5jZSBzaWduYXR1cmUgaXMgcG9zc2libHkgcHJlc2VudCBieSB2ZXJpZnlpbmcgdGhlIENBIGFuZCBUU0EgcHJlc2VuY2UuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzbHNhLWNoZWNrcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI1ZmQwZWNhMDhhNmUxOTg0YTc4MmI5OWYxMjBhODVmYjAxMDcwMWZlOTg2ODVmMWRhODI3MDJlNmYzMmQ5MTc4In0sICJuYW1lIjoic2xzYS1jaGVja3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zbHNhLWNoZWNrcyJ9LCAibmFtZSI6InNpZ25hdHVyZS1wcmVzZW50IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2lnbmF0dXJlLXByZXNlbnQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNjZjOWEyNzRlMDcyMWUxYWRmYzNhYjIzYTMyMmQ2M2VlMmQ3ODdiODBjODFlZDlkNGViNWE4NDQ5ZDljOGMzYiJ9LCAibmFtZSI6InNpZ25hdHVyZS1wcmVzZW50IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2lnbmF0dXJlLXByZXNlbnQifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkFUVEVTVEFUSU9OIiwgIndpdGgiOnsicmVxdWlyZV90c2EiOiJmYWxzZSJ9fV0sICJhcnRpZmFjdC1jYXMtYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1hbWQ2NCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiYXJ0aWZhY3QtY2FzLWFybTY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtYXJtNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImFydGlmYWN0LWNhcy1zYm9tLWFtZDY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGFuIFNCT00gcmVwb3J0IGZvciBjb21wb25lbnRzIHdpdGggYmFubmVkIGxpY2Vuc2VzLiBTdXBwb3J0cyBDeWNsb25lRFggMS41Ky5cblxuVGhpcyBwb2xpY3kgdmFsaWRhdGVzIHNvZnR3YXJlIGNvbXBvbmVudHMgYWdhaW5zdCBsaWNlbnNlIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzIGJ5OlxuLSBEZXRlY3Rpbmcgc3BlY2lmaWVkIGJhbm5lZCBTUERYIGxpY2Vuc2UgaWRlbnRpZmllcnNcbi0gRmxhZ2dpbmcgY3VzdG9tL3Byb3ByaWV0YXJ5IGxpY2Vuc2VzXG4tIEFsbG93aW5nIGV4Y2VwdGlvbnMgZm9yIHVzaW5nIHNwZWNpZmljIGN1c3RvbSBsaWNlbnNlc1xuXG5VU0FHRSBFWEFNUExFUzpcblxuMS4gQmFuIHNwZWNpZmljIGxpY2Vuc2VzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTC0zLjAsR1BMLTMuMC1vci1sYXRlclwiXG5cbjIuIEJhbiBsaWNlbnNlIGZhbWlsaWVzIHVzaW5nIHdpbGRjYXJkczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkdQTFwiICAjIG1hdGNoZXMgR1BMLTIuMCwgR1BMLTMuMCwgR1BMLTMuMC1vci1sYXRlciwgR1BMKi5cblxuMy4gQWxsb3cgc3BlY2lmaWMgY3VzdG9tL3Byb3ByaWV0YXJ5IGxpY2Vuc2VzIHdpdGggZXhjZXB0aW9uczpcbiAgIHdpdGg6XG4gICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQ29tbWVyY2lhbCBMaWNlbnNlLEVudGVycHJpc2UgTGljZW5zZVwiICMgbWF0Y2hlcyBjb21wb25lbnRzIHdpdGggXCJDb21tZXJjaWFsIExpY2Vuc2VcIiBhbmQgY29tcG9uZW50cyB3aXRoIFwiRW50ZXJwcmlzZSBMaWNlbnNlXCIgKGNhc2UtaW5zZW5zaXRpdmUpLlxuXG40LiBDb21wcmVoZW5zaXZlIGxpY2Vuc2UgY29udHJvbDpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwsR1BMLExHUExcIlxuICAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJBcHByb3ZlZCBQcm9wcmlldGFyeSBMaWNlbnNlXCJcblxuTElDRU5TRSBERVRFQ1RJT046XG4tIFdpbGRjYXJkIG1hdGNoIGZvciBsaWNlbnNlcyAocGF0dGVybiopIGluIGV4cHJlc3Npb25zIGFuZCBsaWNlbnNlLmlkLiBFeHByZXNzaW9uIHBhcnNpbmcgc3VwcG9ydHMgXCJNSVQgT1IgQXBhY2hlLTIuMFwiLCBcIihHUEwtMi4wIEFORCBCU0QtMy1DbGF1c2UpXCIsIGNvbXBsZXggbmVzdGVkIHBhcmVudGhlc2VzIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlxuLSBDdXN0b20gbGljZW5zZXMgKHVzZSBvZiBsaWNlbnNlLm5hbWUgZmllbGQpIGFyZSBmbGFnZ2VkIGJ5IGRlZmF1bHQuIFxuLSBGb3IgY3VzdG9tIGxpY2Vuc2UsIG9ubHkgZXhhY3QgbWF0Y2ggb2YgYWxsb3dlZF9jdXN0b21fbGljZW5zZXMgaW4gbGljZW5zZS5uYW1lIGFyZSBhY2NlcHRlZCBhbmQgZG9uJ3QgdGhyb3dzIGEgdmlvbGF0aW9uLiBcbi0gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBpcyBhcHBsaWVkIHRvIGFsbCBsaWNlbnNlIGNvbXBhcmlzb25zLlxuXG5cbkxJTUlUQVRJT05TOlxuLSBsaWNlbnNlcyBpbnB1dCB2YWx1ZXMgYXJlIG5vdCB2YWxpZGF0ZWQgYWdhaW5zdCBTUERYIGxpY2Vuc2UgbGlzdC4gVGhpcyBtZWFucyB0aGF0IGFueSBhcmJpdHJhcnkgc3RyaW5nIGNhbiBiZSB1c2VkIGFzIGEgbGljZW5zZSBpZGVudGlmaWVyLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGZhbHNlIHBvc2l0aXZlcyBvciBuZWdhdGl2ZXMgaW4gbGljZW5zZSBkZXRlY3Rpb24uIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIGFsbG93cyBmb3IgZmxleGliaWxpdHkgaW4gbGljZW5zZSBtYXRjaGluZy4gXG4tIFNQRFggZXhwcmVzc2lvbnMgd2l0aCBuZXN0ZWQgcGFyZW50aGVzZXMgKGUuZy4sICcoKE1JVCBPUiBCU0QpIEFORCBHUEwpJykgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIHdpbGwgY2F1c2UgdmlvbGF0aW9uc1xuLSBMaW1pdGVkIHN1cHBvcnQgZm9yIGV4Y2VwdGlvbnMgd2l0aCBXSVRIIGNsYXVzZXMgaW4gY29tcGxleCBleHByZXNzaW9ucy4gV2hpbGUgYmFubmVkIGxpY2Vuc2VzPVwiR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjBcIiB3aWxsIGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMCkgT1IgTUlUXCIsXG4gaXQgd2lsbCBub3QgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBPUiBNSVQpIFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjBcIi5cbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTI4ODc3MjM1N2Y5NTE4NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTNlNmVjNjYxMTk2OTlmMjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MmY2NTM3Y2NjNzkyYWU3MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPWUzZjNjNTZjMWUwYTViMDIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD00MTQ3ZDg4MmUyZTViMDcxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9OGQ4MTE0ZjBhNzE2NGQ5OCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD0wY2Y5MDRmNmViZGQyNGIxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD01ZGVmODQzYjNmMWI2NWY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTg2MjZlYzcxZTYyMzY0NjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYW1kNjQiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJhcnRpZmFjdC1jYXMtc2JvbS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NDk3ZmNkYjlmYWU1NTkyNGMxMmY1NWYwNWNiZTgzYTA5NjY2MmU1YzU5MWQ3OWI3NGU0YThmMjNiYWI1ZmZlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2NmcyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzQHYwLjE2LjE/cGFja2FnZS1pZD0yODg3NzIzNTdmOTUxODVhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZjcyZmU5NTdlZDRlMDRlN2VkZDI5ODAxNjVlMjUxNThiOGEyNmJiZTg3NTMyN2Q2Yjg5NjM3ZjZkYjYwZDUxIGZvciBnaXRodWIuY29tL2ltZGFyaW8vbWVyZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvQHYwLjMuMTY/cGFja2FnZS1pZD0zZTZlYzY2MTE5Njk5ZjI5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTJmNjUzN2NjYzc5MmFlNzMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1lM2YzYzU2YzFlMGE1YjAyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9NDE0N2Q4ODJlMmU1YjA3MSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPThkODExNGYwYTcxNjRkOTgpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9ODYyNmVjNzFlNjIzNjQ2OSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YThjODY5ZmJkYTgxOWFmYjhkODBlMGFjMTliYWM1MmU3NjZiYzZjMTljYjM4Y2Y5NGY1MmQ2NGM0YmUyYWFiNiBmb3IgZ2l0aHViLmNvbS9kb2NrZXIvY2xpIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZG9ja2VyL2NsaUB2MjcuNS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9MGNmOTA0ZjZlYmRkMjRiMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9NWRlZjg0M2IzZjFiNjVmNCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjE5ZDZhYWMzYTA2M2I0ZWE0MzE5NjQ3MjI0OGZmNjhlMjc3YjdjMmE5ZTBhMTkzNzk5MTM0Njc3ZDQ5NmNkYSBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTI4ODc3MjM1N2Y5NTE4NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTNlNmVjNjYxMTk2OTlmMjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MmY2NTM3Y2NjNzkyYWU3MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPWUzZjNjNTZjMWUwYTViMDIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD00MTQ3ZDg4MmUyZTViMDcxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9OGQ4MTE0ZjBhNzE2NGQ5OCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD0wY2Y5MDRmNmViZGQyNGIxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD01ZGVmODQzYjNmMWI2NWY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTg2MjZlYzcxZTYyMzY0NjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImFydGlmYWN0LWNhcy12MS02MC0wIjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtdjEtNjAtMCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiY2xpLWFtZDY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJjbGktYW1kNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNsaS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY2xpLWFybTY0IiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjbGktc2JvbS1hbWQ2NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MDgxOWVhODQ1OTdmMjA1MWY3MzgxYzI2YTY3ZDQxMTliZTA3NzBjNmVjOTc3ZmY2M2M1OWUyNjI1MWRiMmFjMCBmb3IgZGFyaW8uY2F0L21lcmdvIChwa2c6Z29sYW5nL2RhcmlvLmNhdC9tZXJnb0B2MS4wLjI/cGFja2FnZS1pZD1mODEyZGM5MmM2YmM1YjIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjowYzFiOTcwNmE5MWE2MGY3OGU5YmZhZDM5OTRkNjYwODAwNGJiNGViMDNkMGYyZDdmMDViY2YzYTkxODUxMDAyIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTEyODBkMzlmNzU5YzE1NzAyNmRkMGZhZDg3NDJkOTQ3ODE5MWYxNWRjOTgxYjM4ZDJkOWU2YTYwMjk4N2JiYSBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjE0NTVjMGYxYjA2YWVjNzkzY2Y5M2FiNWUyZWQ0MTA5MDgzNjFkMTgxNjhlNzY4MDlmMzk3ZWY2MTZhZDc3NGEgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MjdjODMxOTA3NTcwMjZmYTE2OWE3OTU2NDBmOTg5M2JhODU3MmQ3Y2QwNmFmNGU1YjVlOGQ2NzgwM2I4MWE3OSBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoyZTJhOGFmNTNmYzg4MWUyZjUzOTU0YTg4NjQzNjc0YmVjYWE2ZGJjODRiZTJiOTk3ZjU0Mjk1Zjg2Njg2OTE5IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MzNlMzgwNDU3MDEyNDg1N2M5ZDQ4NWRlNzE1ZjcyMGZiNzgzMGI2NmEzZjJlMjJmNGFjMjIzNmYwZjg0MmE5YyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjM3ZTkwZGQ2NWIzZjM4OTY3OGY0YjdmMjY2YTIxMDc4YzFlNjU4OGY0OTc2M2I0OGMyZTU2MGIwOTFlOTZkY2QgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2JjY2U3YTAwMTBjMjQ0NDJiZmY2M2FhZThhY2RiZGY0Y2NmYTBiOTZkNzQzNjRkOGVjZWJjMzMwYTNhMzc5MCBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTBjMWMzMjQ1M2ExMmJmYjApIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRlNWJjNjUxMjhhNzJmNDcwOTZlNTgzY2ZlNjM0ZGFhYWVlOTVmYmRlYzAwMWRlNjlkYjM1MDNjMTk0YmEyYjAgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9NzIwZjQ4N2FjMTIxNTgyZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NTcyYjE1OTYyNGYxODk4YjQwZTlmMDljOWU0Y2ZiNjVhNTk1MDQ0OTYwOTgyYWE5NTEyNmJjMjhmN2QxZTZjMCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tc2VtdmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlckB2MC4zLjE/cGFja2FnZS1pZD1jYmExNWIzZmY4ODM2YjIzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTk5MTRlYTE5YzZkYjJiM2MpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1mNmYxMzk4MWY3MTA3NTE3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2ZjU2YWRhY2Y2OTYzMTA5NzJjNDJjMTgyMGIwZDMwZTQ1ZWI1MGZlNDNiNjEzNWY0YjZmZDExM2JhNDg3ZmIyIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjU1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NTUuMC4wP3BhY2thZ2UtaWQ9Y2RjNDQ3MGYzYWM1NTkyNCN2NTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD1lYTcwZjg0MjNlOTc5NmY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3YjQyYWYxMjFhNTdkOGNhNWQ5MmFhY2NiNTJlYjcxNWM1Nzg0MGI4NDY0NzQ3NTFlM2VhOWU5ZjAyZTI4NDA1IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWMxYTBhZTlkNjkxNGRmZDMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9MDk4MzI0MTdkNTE4YzhjYSN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OTliOGNjNmJmMzU5MjZiNGNkZjAzM2UwMDNlNTI5NTdiYWFjOTFjOWZkNDUzNThkODE2ZjZiOGI5NzdlMWNjYiBmb3IgazhzLmlvL2t1YmUtb3BlbmFwaSAocGtnOmdvbGFuZy9rOHMuaW8va3ViZS1vcGVuYXBpQHYwLjAuMC0yMDIzMTAxMDE3NTk0MS0yZGQ2ODRhOTFmMDA/cGFja2FnZS1pZD02ZGZhM2FiNzg1YTQwOTE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9ODZlM2UzMjIyNTk5ZTRmZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTYyZTU3ODE0ZTRhZTA5NTkyMDM2ZmY5MWJlOTk5MWMzMjZjMzVmZmJmNzM3MTdiOWZjYTJjN2QzNWUyNjI1YyBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE4Yzg2OWZiZGE4MTlhZmI4ZDgwZTBhYzE5YmFjNTJlNzY2YmM2YzE5Y2IzOGNmOTRmNTJkNjRjNGJlMmFhYjYgZm9yIGdpdGh1Yi5jb20vZG9ja2VyL2NsaSAocGtnOmdvbGFuZy9naXRodWIuY29tL2RvY2tlci9jbGlAdjI3LjUuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPWEzOWJlMDgwODRjNDljYmIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmJlYTE5OGI2NDIxY2M4OTgwODRjMDNlYzZiMWJkMjQwMjAyMzg1ZThmMmUxODY5NzQ3MGVkZjgzZGUxZDBlNDkgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YzUzODlhOTNkZjEzZmNjNzJhYjdhNzQ3MGEyNTZkYjcxMDg5MmVkN2IyNGY1MmM5ZmVlY2ZjZjEzZmRjMDg0NyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM5N2E5NzE5Mzk1NThhNjYwZDQzODZlYWM5ZTdlMTFlZDM5NTUxZDI2ZGFmNWViNGQyMzdkYmFmMTQwYmZmYjEgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD05YTM2NDI2NGViOWIyMTFmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNjQ2NzhkYTUxMWNjM2M3NmUxYjIwY2Q3MDc0YzEwMmE2MmRlMDY4NWQ0ODZlYmExNDRlM2ZmN2IzZWU2MGYzIGZvciBnaXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYSAocGtnOmdvbGFuZy9naXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYUB2MS42LjA/cGFja2FnZS1pZD00Y2FhNDQzY2RkYWVlN2RjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkY2NkMjZjNmZkOWMyOTZkYWY0NGQwYmM1NmJiNGVmYzU2NmVkZDQ4ODAzODFiMzMzMWM5YTYzZTZlNDcxMzM4IGZvciBnaXRodWIuY29tL2NvcmVvcy9nby1vaWRjL3YzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGNAdjMuMTEuMD9wYWNrYWdlLWlkPTBhMTQ4Njg5N2I1NTFhMWIjdjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmYxOWQ2YWFjM2EwNjNiNGVhNDMxOTY0NzIyNDhmZjY4ZTI3N2I3YzJhOWUwYTE5Mzc5OTEzNDY3N2Q0OTZjZGEgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9YjhlMjdmMjY2NWM4NTMzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjllMjkwZjE5NzI4NGY2ZjM4OWRjMWZkM2FiNTA3NTU0NzFkNTY4NmZhM2IxNjBhZDBhM2UzZTM5NjkxMTUyOCBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gbGljZW5zZSBHUEwgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY2xpLXNib20tYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjA4MTllYTg0NTk3ZjIwNTFmNzM4MWMyNmE2N2Q0MTE5YmUwNzcwYzZlYzk3N2ZmNjNjNTllMjYyNTFkYjJhYzAgZm9yIGRhcmlvLmNhdC9tZXJnbyAocGtnOmdvbGFuZy9kYXJpby5jYXQvbWVyZ29AdjEuMC4yP3BhY2thZ2UtaWQ9ZjgxMmRjOTJjNmJjNWIyMCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MGMxYjk3MDZhOTFhNjBmNzhlOWJmYWQzOTk0ZDY2MDgwMDRiYjRlYjAzZDBmMmQ3ZjA1YmNmM2E5MTg1MTAwMiBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD04NmUzZTMyMjI1OTllNGZmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxNDU1YzBmMWIwNmFlYzc5M2NmOTNhYjVlMmVkNDEwOTA4MzYxZDE4MTY4ZTc2ODA5ZjM5N2VmNjE2YWQ3NzRhIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjY2IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NjYuMC4wP3BhY2thZ2UtaWQ9OTg3OTg2ZGI2YWIyYzE3OCN2NjYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjI3YzgzMTkwNzU3MDI2ZmExNjlhNzk1NjQwZjk4OTNiYTg1NzJkN2NkMDZhZjRlNWI1ZThkNjc4MDNiODFhNzkgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NTUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY1NS4wLjA/cGFja2FnZS1pZD1jZGM0NDcwZjNhYzU1OTI0I3Y1NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MmUyYThhZjUzZmM4ODFlMmY1Mzk1NGE4ODY0MzY3NGJlY2FhNmRiYzg0YmUyYjk5N2Y1NDI5NWY4NjY4NjkxOSBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjMzZTM4MDQ1NzAxMjQ4NTdjOWQ0ODVkZTcxNWY3MjBmYjc4MzBiNjZhM2YyZTIyZjRhYzIyMzZmMGY4NDJhOWMgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjozN2U5MGRkNjViM2YzODk2NzhmNGI3ZjI2NmEyMTA3OGMxZTY1ODhmNDk3NjNiNDhjMmU1NjBiMDkxZTk2ZGNkIGZvciBnaXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYiAocGtnOmdvbGFuZy9naXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYkB2MC4xMDkuMD9wYWNrYWdlLWlkPWVlNGQxZGI0Mjg3ZTIzZTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjNiY2NlN2EwMDEwYzI0NDQyYmZmNjNhYWU4YWNkYmRmNGNjZmEwYjk2ZDc0MzY0ZDhlY2ViYzMzMGEzYTM3OTAgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NDk3ZmNkYjlmYWU1NTkyNGMxMmY1NWYwNWNiZTgzYTA5NjY2MmU1YzU5MWQ3OWI3NGU0YThmMjNiYWI1ZmZlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2NmcyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzQHYwLjE2LjE/cGFja2FnZS1pZD0wYzFjMzI0NTNhMTJiZmIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZTViYzY1MTI4YTcyZjQ3MDk2ZTU4M2NmZTYzNGRhYWFlZTk1ZmJkZWMwMDFkZTY5ZGIzNTAzYzE5NGJhMmIwIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjY2IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NjYuMC4wP3BhY2thZ2UtaWQ9OTg3OTg2ZGI2YWIyYzE3OCN2NjYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTcyMGY0ODdhYzEyMTU4MmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjU3MmIxNTk2MjRmMTg5OGI0MGU5ZjA5YzllNGNmYjY1YTU5NTA0NDk2MDk4MmFhOTUxMjZiYzI4ZjdkMWU2YzAgZm9yIGdpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlciAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1zZW12ZXJAdjAuMy4xP3BhY2thZ2UtaWQ9Y2JhMTViM2ZmODgzNmIyMykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NjAwMjQ0YzgwNTJjOGMxZDMwNzA0M2ZhZmFjYmM4M2I0MjljMTcxZGQ4ZTA4ZjVhNTM3YzBhNTQwMTQ1ODVlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbiAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uQHYwLjYzLjA/cGFja2FnZS1pZD05OTE0ZWExOWM2ZGIyYjNjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2Yzc5ZmFhMTUxNjg4ODVmYjg4YTMxNmFlMGRmMThmNDg2ZGVhZmRkZWZkYzE2ODI2Y2RjNTZkZmJkNDIxZTI0IGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWxAdjAuNi4yP3BhY2thZ2UtaWQ9ZjZmMTM5ODFmNzEwNzUxNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmY1NmFkYWNmNjk2MzEwOTcyYzQyYzE4MjBiMGQzMGU0NWViNTBmZTQzYjYxMzVmNGI2ZmQxMTNiYTQ4N2ZiMiBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9ZWE3MGY4NDIzZTk3OTZmOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6N2I0MmFmMTIxYTU3ZDhjYTVkOTJhYWNjYjUyZWI3MTVjNTc4NDBiODQ2NDc0NzUxZTNlYTllOWYwMmUyODQwNSBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg1NDhiZmIyYmMxOTEzMzk2ZGYzOGM1NDhhNmVjNjBiOGRiY2FjM2IwODAwNDg1YTQwNTY5YzhiZGQxODQ0NzEgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nQHYxLjIyLjA/cGFja2FnZS1pZD1jMWEwYWU5ZDY5MTRkZmQzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NmNlNWUyYmI3MmY2MDNhODg0OWUwODU1MjQwMjJiZGFjNjY2OGRmNGYwYmFjYTUwNzAzMzYxMDIzNzM2NWYzIGZvciBnaXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWYvdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmQHYyLjAuMT9wYWNrYWdlLWlkPTA5ODMyNDE3ZDUxOGM4Y2EjdjIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojk5YjhjYzZiZjM1OTI2YjRjZGYwMzNlMDAzZTUyOTU3YmFhYzkxYzlmZDQ1MzU4ZDgxNmY2YjhiOTc3ZTFjY2IgZm9yIGs4cy5pby9rdWJlLW9wZW5hcGkgKHBrZzpnb2xhbmcvazhzLmlvL2t1YmUtb3BlbmFwaUB2MC4wLjAtMjAyMzEwMTAxNzU5NDEtMmRkNjg0YTkxZjAwP3BhY2thZ2UtaWQ9NmRmYTNhYjc4NWE0MDkxOCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OWJhMzZmNjZmYmE2ZjJlM2I3ZGNlOTVkOTQxM2E3Mzg2ODhhYmNmY2U4YzNkMzhjNTgxYjI3NmY5NDM3ZDFjNiBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2MmU1NzgxNGU0YWUwOTU5MjAzNmZmOTFiZTk5OTFjMzI2YzM1ZmZiZjczNzE3YjlmY2EyYzdkMzVlMjYyNWMgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD1iOGUyN2YyNjY1Yzg1MzNmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD1hMzliZTA4MDg0YzQ5Y2JiKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiZWExOThiNjQyMWNjODk4MDg0YzAzZWM2YjFiZDI0MDIwMjM4NWU4ZjJlMTg2OTc0NzBlZGY4M2RlMWQwZTQ5IGZvciBnaXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYiAocGtnOmdvbGFuZy9naXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYkB2MC4xMDkuMD9wYWNrYWdlLWlkPWVlNGQxZGI0Mjg3ZTIzZTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM1Mzg5YTkzZGYxM2ZjYzcyYWI3YTc0NzBhMjU2ZGI3MTA4OTJlZDdiMjRmNTJjOWZlZWNmY2YxM2ZkYzA4NDcgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpjOTdhOTcxOTM5NTU4YTY2MGQ0Mzg2ZWFjOWU3ZTExZWQzOTU1MWQyNmRhZjVlYjRkMjM3ZGJhZjE0MGJmZmIxIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9OWEzNjQyNjRlYjliMjExZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9NGNhYTQ0M2NkZGFlZTdkYykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD0wYTE0ODY4OTdiNTUxYTFiI3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmY5ZTI5MGYxOTcyODRmNmYzODlkYzFmZDNhYjUwNzU1NDcxZDU2ODZmYTNiMTYwYWQwYTNlM2UzOTY5MTE1MjggZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGxpY2Vuc2UgR1BMIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn1dLCAid2l0aCI6eyJhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyI6IiBBcGFjaGUgMi4wLCBzaGEyNTY6YjlhNmQ5MzIwYjhmMjY5M2U4ZDQxZTQ5NmNlNTZjYWFkYWNhZGRjY2E5YmUyYTY0YTYxNzQ5Mjc4ZjQyNWNmMiwgc2hhMjU2OmNkNjU3MjExNzZjZTVmZGJiMDU3NzNjMGIxMzQ5Zjk5M2I5NGNlNzdhNTEwNjJjZmE3YTc4YjM0Y2M4MmZjNzEiLCAibGljZW5zZXMiOiJHUEwsIEFHUEwifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBzZWN1cml0eSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBkb2Vzbid0IGhhdmUgYW55IGJhbm5lZCBjb21wb25lbnRzLlxuSXQgYWNjZXB0cyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29tcG9uZW50cy4gSWYgYSB2ZXJzaW9uIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBmYWlsIGZvciB2ZXJzaW9ucyBlcXVhbCBvciBsb3dlci5cbiAgd2l0aDpcbiAgICBjb21wb25lbnRzOiBsb2c0akAyLjE0LjEsIGJhbm5lZC1jb21wb25lbnQtbmFtZVwiXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLW50aWEiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLW50aWEiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzVmMDIyNDM0NzUxYzRjZDUzNDQ3NjU1NGRhOWNkYjdhYWNhNjU4ZDNmZTYxNGNjYWFlYWMzNjM0YzVhYTkzNiJ9LCAibmFtZSI6InNib20tbnRpYSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tbnRpYSJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiLCAiY3JhL2NyYS12dWxuZXJhYmlsaXR5LWhhbmRsaW5nLXJlcS0xIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBmb3IgY29tcG9uZW50cyB3aXRoIHVua25vd24gbGljZW5zZXMgaW4gdGhlIEN5Y2xvbmVEWCByZXBvcnQiLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImNsaS1zYm9tLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MDgxOWVhODQ1OTdmMjA1MWY3MzgxYzI2YTY3ZDQxMTliZTA3NzBjNmVjOTc3ZmY2M2M1OWUyNjI1MWRiMmFjMCBmb3IgZGFyaW8uY2F0L21lcmdvIChwa2c6Z29sYW5nL2RhcmlvLmNhdC9tZXJnb0B2MS4wLjI/cGFja2FnZS1pZD1mODEyZGM5MmM2YmM1YjIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjowYzFiOTcwNmE5MWE2MGY3OGU5YmZhZDM5OTRkNjYwODAwNGJiNGViMDNkMGYyZDdmMDViY2YzYTkxODUxMDAyIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTEyODBkMzlmNzU5YzE1NzAyNmRkMGZhZDg3NDJkOTQ3ODE5MWYxNWRjOTgxYjM4ZDJkOWU2YTYwMjk4N2JiYSBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjE0NTVjMGYxYjA2YWVjNzkzY2Y5M2FiNWUyZWQ0MTA5MDgzNjFkMTgxNjhlNzY4MDlmMzk3ZWY2MTZhZDc3NGEgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MjdjODMxOTA3NTcwMjZmYTE2OWE3OTU2NDBmOTg5M2JhODU3MmQ3Y2QwNmFmNGU1YjVlOGQ2NzgwM2I4MWE3OSBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoyZTJhOGFmNTNmYzg4MWUyZjUzOTU0YTg4NjQzNjc0YmVjYWE2ZGJjODRiZTJiOTk3ZjU0Mjk1Zjg2Njg2OTE5IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MzNlMzgwNDU3MDEyNDg1N2M5ZDQ4NWRlNzE1ZjcyMGZiNzgzMGI2NmEzZjJlMjJmNGFjMjIzNmYwZjg0MmE5YyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjM3ZTkwZGQ2NWIzZjM4OTY3OGY0YjdmMjY2YTIxMDc4YzFlNjU4OGY0OTc2M2I0OGMyZTU2MGIwOTFlOTZkY2QgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2JjY2U3YTAwMTBjMjQ0NDJiZmY2M2FhZThhY2RiZGY0Y2NmYTBiOTZkNzQzNjRkOGVjZWJjMzMwYTNhMzc5MCBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTBjMWMzMjQ1M2ExMmJmYjApIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRlNWJjNjUxMjhhNzJmNDcwOTZlNTgzY2ZlNjM0ZGFhYWVlOTVmYmRlYzAwMWRlNjlkYjM1MDNjMTk0YmEyYjAgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9NzIwZjQ4N2FjMTIxNTgyZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NTcyYjE1OTYyNGYxODk4YjQwZTlmMDljOWU0Y2ZiNjVhNTk1MDQ0OTYwOTgyYWE5NTEyNmJjMjhmN2QxZTZjMCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tc2VtdmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlckB2MC4zLjE/cGFja2FnZS1pZD1jYmExNWIzZmY4ODM2YjIzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTk5MTRlYTE5YzZkYjJiM2MpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1mNmYxMzk4MWY3MTA3NTE3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2ZjU2YWRhY2Y2OTYzMTA5NzJjNDJjMTgyMGIwZDMwZTQ1ZWI1MGZlNDNiNjEzNWY0YjZmZDExM2JhNDg3ZmIyIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjU1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NTUuMC4wP3BhY2thZ2UtaWQ9Y2RjNDQ3MGYzYWM1NTkyNCN2NTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD1lYTcwZjg0MjNlOTc5NmY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3YjQyYWYxMjFhNTdkOGNhNWQ5MmFhY2NiNTJlYjcxNWM1Nzg0MGI4NDY0NzQ3NTFlM2VhOWU5ZjAyZTI4NDA1IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWMxYTBhZTlkNjkxNGRmZDMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9MDk4MzI0MTdkNTE4YzhjYSN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OTliOGNjNmJmMzU5MjZiNGNkZjAzM2UwMDNlNTI5NTdiYWFjOTFjOWZkNDUzNThkODE2ZjZiOGI5NzdlMWNjYiBmb3IgazhzLmlvL2t1YmUtb3BlbmFwaSAocGtnOmdvbGFuZy9rOHMuaW8va3ViZS1vcGVuYXBpQHYwLjAuMC0yMDIzMTAxMDE3NTk0MS0yZGQ2ODRhOTFmMDA/cGFja2FnZS1pZD02ZGZhM2FiNzg1YTQwOTE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9ODZlM2UzMjIyNTk5ZTRmZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTYyZTU3ODE0ZTRhZTA5NTkyMDM2ZmY5MWJlOTk5MWMzMjZjMzVmZmJmNzM3MTdiOWZjYTJjN2QzNWUyNjI1YyBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE4Yzg2OWZiZGE4MTlhZmI4ZDgwZTBhYzE5YmFjNTJlNzY2YmM2YzE5Y2IzOGNmOTRmNTJkNjRjNGJlMmFhYjYgZm9yIGdpdGh1Yi5jb20vZG9ja2VyL2NsaSAocGtnOmdvbGFuZy9naXRodWIuY29tL2RvY2tlci9jbGlAdjI3LjUuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPWEzOWJlMDgwODRjNDljYmIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmJlYTE5OGI2NDIxY2M4OTgwODRjMDNlYzZiMWJkMjQwMjAyMzg1ZThmMmUxODY5NzQ3MGVkZjgzZGUxZDBlNDkgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YzUzODlhOTNkZjEzZmNjNzJhYjdhNzQ3MGEyNTZkYjcxMDg5MmVkN2IyNGY1MmM5ZmVlY2ZjZjEzZmRjMDg0NyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM5N2E5NzE5Mzk1NThhNjYwZDQzODZlYWM5ZTdlMTFlZDM5NTUxZDI2ZGFmNWViNGQyMzdkYmFmMTQwYmZmYjEgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD05YTM2NDI2NGViOWIyMTFmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNjQ2NzhkYTUxMWNjM2M3NmUxYjIwY2Q3MDc0YzEwMmE2MmRlMDY4NWQ0ODZlYmExNDRlM2ZmN2IzZWU2MGYzIGZvciBnaXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYSAocGtnOmdvbGFuZy9naXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYUB2MS42LjA/cGFja2FnZS1pZD00Y2FhNDQzY2RkYWVlN2RjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkY2NkMjZjNmZkOWMyOTZkYWY0NGQwYmM1NmJiNGVmYzU2NmVkZDQ4ODAzODFiMzMzMWM5YTYzZTZlNDcxMzM4IGZvciBnaXRodWIuY29tL2NvcmVvcy9nby1vaWRjL3YzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGNAdjMuMTEuMD9wYWNrYWdlLWlkPTBhMTQ4Njg5N2I1NTFhMWIjdjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmYxOWQ2YWFjM2EwNjNiNGVhNDMxOTY0NzIyNDhmZjY4ZTI3N2I3YzJhOWUwYTE5Mzc5OTEzNDY3N2Q0OTZjZGEgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9YjhlMjdmMjY2NWM4NTMzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjllMjkwZjE5NzI4NGY2ZjM4OWRjMWZkM2FiNTA3NTU0NzFkNTY4NmZhM2IxNjBhZDBhM2UzZTM5NjkxMTUyOCBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gbGljZW5zZSBHUEwgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJjbGktdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY2xpLXYxLTYwLTAiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtYW1kNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtYXJtNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1hbWQ2NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLWFtZDY0IiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1hcm02NCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjEzZjYwZTcxOTU2NDljMmI5MGJhNzAwMmM3MTQ4ODc0Y2E3OTljODMxNzM1MjE2ZGY1OGNmOGJiNzk0MDIzMjIgZm9yIGdpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWxAdjEuMS4wP3BhY2thZ2UtaWQ9OWI1ZGNkZmM4ZWU3ZWM2MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2VjZmMxMGUyMzgyYTgyYWQ5OThmMWRiN2M3NmJjOTExNGQyNmY1ZjQzZGExNDJlM2YzMjg1MzNjZjBjMWY3MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM2LjM/cGFja2FnZS1pZD1mYWQ0ZDE5NjM4ZjNkYjA3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZmM4NmE0ZTk0NDU2NWY2ZjQ5ZjA4ZGRkZjc4OGMzOGQ2ZTZhNGFhMzMyOTJkZmZhMmNiMTYxOWJhZTUxYmIxIGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPWMyN2Q4MjIxMWJhMmQwZDgpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42Ni4xP3BhY2thZ2UtaWQ9MGQyNzFiMmUwZjE3NTM4ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTRkZmQ3ZTM4MjgxMjA5NTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjdkMmJmNzA1Yjg3NzUzNmU1ZTQ2ZWQ1MjZjOTlkYTdiNzhhYTE2YmUyMWE0NzM5NjIzMmQzOWNkZTRjZGQzOTkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD03ZmNhODhkMWU3OGQyMjljKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ29AdjEuNTUuNj9wYWNrYWdlLWlkPTU1OGM2ZWJkN2Q3MGFjNWMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9ZmFkNGQxOTYzOGYzZGIwNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjUzZGNlOGNiMTJiY2UwYjk2ZmMzZTZjYzU5ZjlmYjY1ZjEwNGRkMDY3NWM2YTcxMDJlMTlkYTg5MDMwYjU3YyBmb3IgZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXJAdjEuMjMuMj9wYWNrYWdlLWlkPTNiYTE5YzFkMjE3YjgyNGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM3NWJmNDExMTAzY2Q3OWMxY2MxOTk2OGExZmNkZmRjNjgyNWRjMzM4YmEwNWMzNmQzYWNkZjk3OWU1ZTk2MjkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD03ZmNhODhkMWU3OGQyMjljKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIyLjM/cGFja2FnZS1pZD05NzY1MDFkMTJlZGIzYmE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjEzZjYwZTcxOTU2NDljMmI5MGJhNzAwMmM3MTQ4ODc0Y2E3OTljODMxNzM1MjE2ZGY1OGNmOGJiNzk0MDIzMjIgZm9yIGdpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWxAdjEuMS4wP3BhY2thZ2UtaWQ9MjYzMzU4MWJkNTZiMzVlYykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2VjZmMxMGUyMzgyYTgyYWQ5OThmMWRiN2M3NmJjOTExNGQyNmY1ZjQzZGExNDJlM2YzMjg1MzNjZjBjMWY3MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM2LjM/cGFja2FnZS1pZD03N2JjZGNmYzA1YTkzMTNmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZmM4NmE0ZTk0NDU2NWY2ZjQ5ZjA4ZGRkZjc4OGMzOGQ2ZTZhNGFhMzMyOTJkZmZhMmNiMTYxOWJhZTUxYmIxIGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9YzJkOTVlMTcwYjA0ODYxMCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPWMxZWFmN2YwY2JhYzQxYWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42Ni4xP3BhY2thZ2UtaWQ9ODZhZWUxZTM1M2QzZWZkMykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTk5NDM2MDBlZDJlNWQyMGEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjdkMmJmNzA1Yjg3NzUzNmU1ZTQ2ZWQ1MjZjOTlkYTdiNzhhYTE2YmUyMWE0NzM5NjIzMmQzOWNkZTRjZGQzOTkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD1jMmQ5NWUxNzBiMDQ4NjEwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ29AdjEuNTUuNj9wYWNrYWdlLWlkPWZkZGQ1YTNhYTM0MzljYTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9NzdiY2RjZmMwNWE5MzEzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjUzZGNlOGNiMTJiY2UwYjk2ZmMzZTZjYzU5ZjlmYjY1ZjEwNGRkMDY3NWM2YTcxMDJlMTlkYTg5MDMwYjU3YyBmb3IgZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXJAdjEuMjMuMj9wYWNrYWdlLWlkPWI0ZmZmNDA3N2RjZDYzMzkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM3NWJmNDExMTAzY2Q3OWMxY2MxOTk2OGExZmNkZmRjNjgyNWRjMzM4YmEwNWMzNmQzYWNkZjk3OWU1ZTk2MjkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD1jMmQ5NWUxNzBiMDQ4NjEwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIyLjM/cGFja2FnZS1pZD03MDk2ZDIxZTQ4OTBkZTE2KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTliNWRjZGZjOGVlN2VjNjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjNlY2ZjMTBlMjM4MmE4MmFkOTk4ZjFkYjdjNzZiYzkxMTRkMjZmNWY0M2RhMTQyZTNmMzI4NTMzY2YwYzFmNzAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9ZmFkNGQxOTYzOGYzZGIwNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGZjODZhNGU5NDQ1NjVmNmY0OWYwOGRkZGY3ODhjMzhkNmU2YTRhYTMzMjkyZGZmYTJjYjE2MTliYWU1MWJiMSBmb3IgZ2l0aHViLmNvbS9saWIvcHEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9saWIvcHFAdjEuMTAuOT9wYWNrYWdlLWlkPTdmY2E4OGQxZTc4ZDIyOWMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjVmOGNlYmM5YWFiM2NlNjlhZGU5MjFlZmIxNGNhZWM0NzJjMzRmMjI1NjZlMDE1ZGY5NTEyMTExZGNhY2FlMDYgZm9yIGdpdGh1Yi5jb20vYWdleHQvbGV2ZW5zaHRlaW4gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbkB2MS4yLjM/cGFja2FnZS1pZD1jMjdkODIyMTFiYTJkMGQ4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjYuMT9wYWNrYWdlLWlkPTBkMjcxYjJlMGYxNzUzOGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD00ZGZkN2UzODI4MTIwOTU5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3ZDJiZjcwNWI4Nzc1MzZlNWU0NmVkNTI2Yzk5ZGE3Yjc4YWExNmJlMjFhNDczOTYyMzJkMzljZGU0Y2RkMzk5IGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvQHYxLjU1LjY/cGFja2FnZS1pZD01NThjNmViZDdkNzBhYzVjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzYuMz9wYWNrYWdlLWlkPWZhZDRkMTk2MzhmM2RiMDcpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmI1M2RjZThjYjEyYmNlMGI5NmZjM2U2Y2M1OWY5ZmI2NWYxMDRkZDA2NzVjNmE3MTAyZTE5ZGE4OTAzMGI1N2MgZm9yIGdpdGh1Yi5jb20vYnJpYW5kb3ducy9zcGlubmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYnJpYW5kb3ducy9zcGlubmVyQHYxLjIzLjI/cGFja2FnZS1pZD0zYmExOWMxZDIxN2I4MjRlKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpjNzViZjQxMTEwM2NkNzljMWNjMTk5NjhhMWZjZGZkYzY4MjVkYzMzOGJhMDVjMzZkM2FjZGY5NzllNWU5NjI5IGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMi4zP3BhY2thZ2UtaWQ9OTc2NTAxZDEyZWRiM2JhOCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn1dLCAid2l0aCI6eyJhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyI6IiBBcGFjaGUgMi4wLCBzaGEyNTY6YjlhNmQ5MzIwYjhmMjY5M2U4ZDQxZTQ5NmNlNTZjYWFkYWNhZGRjY2E5YmUyYTY0YTYxNzQ5Mjc4ZjQyNWNmMiwgc2hhMjU2OmNkNjU3MjExNzZjZTVmZGJiMDU3NzNjMGIxMzQ5Zjk5M2I5NGNlNzdhNTEwNjJjZmE3YTc4YjM0Y2M4MmZjNzEiLCAibGljZW5zZXMiOiJHUEwsIEFHUEwifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBzZWN1cml0eSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBkb2Vzbid0IGhhdmUgYW55IGJhbm5lZCBjb21wb25lbnRzLlxuSXQgYWNjZXB0cyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29tcG9uZW50cy4gSWYgYSB2ZXJzaW9uIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBmYWlsIGZvciB2ZXJzaW9ucyBlcXVhbCBvciBsb3dlci5cbiAgd2l0aDpcbiAgICBjb21wb25lbnRzOiBsb2c0akAyLjE0LjEsIGJhbm5lZC1jb21wb25lbnQtbmFtZVwiXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLW50aWEiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLW50aWEiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzVmMDIyNDM0NzUxYzRjZDUzNDQ3NjU1NGRhOWNkYjdhYWNhNjU4ZDNmZTYxNGNjYWFlYWMzNjM0YzVhYTkzNiJ9LCAibmFtZSI6InNib20tbnRpYSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tbnRpYSJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiLCAiY3JhL2NyYS12dWxuZXJhYmlsaXR5LWhhbmRsaW5nLXJlcS0xIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBmb3IgY29tcG9uZW50cyB3aXRoIHVua25vd24gbGljZW5zZXMgaW4gdGhlIEN5Y2xvbmVEWCByZXBvcnQiLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy12MS02MC0wIiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxMTI4MGQzOWY3NTljMTU3MDI2ZGQwZmFkODc0MmQ5NDc4MTkxZjE1ZGM5ODFiMzhkMmQ5ZTZhNjAyOTg3YmJhIGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTNmNjBlNzE5NTY0OWMyYjkwYmE3MDAyYzcxNDg4NzRjYTc5OWM4MzE3MzUyMTZkZjU4Y2Y4YmI3OTQwMjMyMiBmb3IgZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbEB2MS4xLjA/cGFja2FnZS1pZD0zODc0YWMwMjcyZjliZWU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTRiYTQyMWM0MTU3YTA3NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRiOTA3MWRhZjVmOTk3NWViOTM2YzM3MDIwMDcwOWJiNzQzMzg2MmM1ZDRhMzJkMjFkYjY1NjIwMTMzZjRhOGUgZm9yIGdpdGh1Yi5jb20vamFja2MvcGd4L3Y1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vamFja2MvcGd4QHY1LjcuMj9wYWNrYWdlLWlkPTQ4YWM2ZGRmMzlhNzMyMTEjdjUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTJlYWM1OGU4OTUxMDc1MzEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjVmOGNlYmM5YWFiM2NlNjlhZGU5MjFlZmIxNGNhZWM0NzJjMzRmMjI1NjZlMDE1ZGY5NTEyMTExZGNhY2FlMDYgZm9yIGdpdGh1Yi5jb20vYWdleHQvbGV2ZW5zaHRlaW4gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbkB2MS4yLjM/cGFja2FnZS1pZD01NGYyMDBjYmEzZjNkZGQ1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTMzOTZjYmQ1ZWEzY2RkNWUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD0yOGQ1ODI4OTY1M2U2OGFhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9MWMwMWIzNTkxNjQyMmFjOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWJhNTllOGE0Mzc1YzY2NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9NzY3NjBhOTlmZmVkYmU2MiN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OWJhMzZmNjZmYmE2ZjJlM2I3ZGNlOTVkOTQxM2E3Mzg2ODhhYmNmY2U4YzNkMzhjNTgxYjI3NmY5NDM3ZDFjNiBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTE5NmYwYWZiZDRlN2JhNjQpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9N2M4ZjU4M2Y0NzViMjc5YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YThjODY5ZmJkYTgxOWFmYjhkODBlMGFjMTliYWM1MmU3NjZiYzZjMTljYjM4Y2Y5NGY1MmQ2NGM0YmUyYWFiNiBmb3IgZ2l0aHViLmNvbS9kb2NrZXIvY2xpIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZG9ja2VyL2NsaUB2MjcuNS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzNiNGIxYThmNWUzNGY1MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjQwZWM1YjE2MTgyMTAzZWYxY2Q2OWQ0MmEyMWM5ODM2OWUzNWJkNDgzYjM5NzM5MDJkYTQ4MDdjMDc1NTQ0NiBmb3IgZ2l0aHViLmNvbS9tb2J5L21vYnkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9tb2J5L21vYnlAdjI2LjEuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPTc1MWM0YTU0YzRkMDYxNTYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmQ0MjkwZWQ2NGMyZWRkMGZjZTFkODRlM2Y5ZGZiMjg4MTI0MGZlNTM0ZGVmNzZiOGNkMjllZDZhZjY4M2UyODcgZm9yIGdpdGh1Yi5jb20vYXdzL3NtaXRoeS1nbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9zbWl0aHktZ29AdjEuMjMuMT9wYWNrYWdlLWlkPTMwZjVjOGY5Mzc4YjFiMGIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmQ2NDY3OGRhNTExY2MzYzc2ZTFiMjBjZDcwNzRjMTAyYTYyZGUwNjg1ZDQ4NmViYTE0NGUzZmY3YjNlZTYwZjMgZm9yIGdpdGh1Yi5jb20vb3Blbi1wb2xpY3ktYWdlbnQvb3BhIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vb3Blbi1wb2xpY3ktYWdlbnQvb3BhQHYxLjYuMD9wYWNrYWdlLWlkPWZmZmJmNWY4YjUwNzJkZGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmRjY2QyNmM2ZmQ5YzI5NmRhZjQ0ZDBiYzU2YmI0ZWZjNTY2ZWRkNDg4MDM4MWIzMzMxYzlhNjNlNmU0NzEzMzggZm9yIGdpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGMvdjMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkY0B2My4xMS4wP3BhY2thZ2UtaWQ9YmRiNTg3N2RlZWVhN2VhNCN2MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjE5ZDZhYWMzYTA2M2I0ZWE0MzE5NjQ3MjI0OGZmNjhlMjc3YjdjMmE5ZTBhMTkzNzk5MTM0Njc3ZDQ5NmNkYSBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImNvbnRyb2wtcGxhbmUtc2JvbS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD0xOTZmMGFmYmQ0ZTdiYTY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTM4NzRhYzAyNzJmOWJlZTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjQ5N2ZjZGI5ZmFlNTU5MjRjMTJmNTVmMDVjYmU4M2EwOTY2NjJlNWM1OTFkNzliNzRlNGE4ZjIzYmFiNWZmZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2Nmc0B2MC4xNi4xP3BhY2thZ2UtaWQ9NGJhNDIxYzQxNTdhMDc1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGI5MDcxZGFmNWY5OTc1ZWI5MzZjMzcwMjAwNzA5YmI3NDMzODYyYzVkNGEzMmQyMWRiNjU2MjAxMzNmNGE4ZSBmb3IgZ2l0aHViLmNvbS9qYWNrYy9wZ3gvdjUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9qYWNrYy9wZ3hAdjUuNy4yP3BhY2thZ2UtaWQ9NDhhYzZkZGYzOWE3MzIxMSN2NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9MmVhYzU4ZTg5NTEwNzUzMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPTU0ZjIwMGNiYTNmM2RkZDUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MzM5NmNiZDVlYTNjZGQ1ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTI4ZDU4Mjg5NjUzZTY4YWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD0xYzAxYjM1OTE2NDIyYWM5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9YmE1OWU4YTQzNzVjNjY1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODZjZTVlMmJiNzJmNjAzYTg4NDllMDg1NTI0MDIyYmRhYzY2NjhkZjRmMGJhY2E1MDcwMzM2MTAyMzczNjVmMyBmb3IgZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmL3YyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1ZkB2Mi4wLjE/cGFja2FnZS1pZD03Njc2MGE5OWZmZWRiZTYyI3YyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD03M2I0YjFhOGY1ZTM0ZjUyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiNDBlYzViMTYxODIxMDNlZjFjZDY5ZDQyYTIxYzk4MzY5ZTM1YmQ0ODNiMzk3MzkwMmRhNDgwN2MwNzU1NDQ2IGZvciBnaXRodWIuY29tL21vYnkvbW9ieSAocGtnOmdvbGFuZy9naXRodWIuY29tL21vYnkvbW9ieUB2MjYuMS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzUxYzRhNTRjNGQwNjE1NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9MzBmNWM4ZjkzNzhiMWIwYikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9ZmZmYmY1ZjhiNTA3MmRkZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD1iZGI1ODc3ZGVlZWE3ZWE0I3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTdjOGY1ODNmNDc1YjI3OWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD0xOTZmMGFmYmQ0ZTdiYTY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTM4NzRhYzAyNzJmOWJlZTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjQ5N2ZjZGI5ZmFlNTU5MjRjMTJmNTVmMDVjYmU4M2EwOTY2NjJlNWM1OTFkNzliNzRlNGE4ZjIzYmFiNWZmZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2Nmc0B2MC4xNi4xP3BhY2thZ2UtaWQ9NGJhNDIxYzQxNTdhMDc1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGI5MDcxZGFmNWY5OTc1ZWI5MzZjMzcwMjAwNzA5YmI3NDMzODYyYzVkNGEzMmQyMWRiNjU2MjAxMzNmNGE4ZSBmb3IgZ2l0aHViLmNvbS9qYWNrYy9wZ3gvdjUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9qYWNrYy9wZ3hAdjUuNy4yP3BhY2thZ2UtaWQ9NDhhYzZkZGYzOWE3MzIxMSN2NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9MmVhYzU4ZTg5NTEwNzUzMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPTU0ZjIwMGNiYTNmM2RkZDUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MzM5NmNiZDVlYTNjZGQ1ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTI4ZDU4Mjg5NjUzZTY4YWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD0xYzAxYjM1OTE2NDIyYWM5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9YmE1OWU4YTQzNzVjNjY1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODZjZTVlMmJiNzJmNjAzYTg4NDllMDg1NTI0MDIyYmRhYzY2NjhkZjRmMGJhY2E1MDcwMzM2MTAyMzczNjVmMyBmb3IgZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmL3YyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1ZkB2Mi4wLjE/cGFja2FnZS1pZD03Njc2MGE5OWZmZWRiZTYyI3YyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD03M2I0YjFhOGY1ZTM0ZjUyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiNDBlYzViMTYxODIxMDNlZjFjZDY5ZDQyYTIxYzk4MzY5ZTM1YmQ0ODNiMzk3MzkwMmRhNDgwN2MwNzU1NDQ2IGZvciBnaXRodWIuY29tL21vYnkvbW9ieSAocGtnOmdvbGFuZy9naXRodWIuY29tL21vYnkvbW9ieUB2MjYuMS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzUxYzRhNTRjNGQwNjE1NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9MzBmNWM4ZjkzNzhiMWIwYikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9ZmZmYmY1ZjhiNTA3MmRkZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD1iZGI1ODc3ZGVlZWE3ZWE0I3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTdjOGY1ODNmNDc1YjI3OWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJjb250cm9sLXBsYW5lLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtdjEtNjAtMCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dfSwgInBvbGljeUhhc1Zpb2xhdGlvbnMiOnRydWUsICJydW5uZXJBdXRoZW50aWNhdGVkIjp0cnVlLCAicnVubmVyRW52aXJvbm1lbnQiOiJtYW5hZ2VkIiwgInJ1bm5lclR5cGUiOiJHSVRIVUJfQUNUSU9OIiwgInJ1bm5lclVSTCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hY3Rpb25zL3J1bnMvMTk1NDcyNTc2MzciLCAicnVubmVyV29ya2Zsb3dGaWxlUGF0aCI6ImNoYWlubG9vcC1kZXYvY2hhaW5sb29wLy5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2UueWFtbEByZWZzL3RhZ3MvdjEuNjAuMCIsICJzaWduaW5nQ0EiOiJmaWxlQ0EiLCAic2lnbmluZ1RTQSI6Imh0dHA6Ly90aW1lc3RhbXAuZGlnaWNlcnQuY29tIn19", "payloadType":"application/vnd.in-toto+json", "signatures":[{"sig":"MEUCIQCeb5+gI01JWW+KmECMt7XQjEEkDavNCKo6AdGxiZQ5HAIgUsVjiiFOtpgitMBuI/LlBWxXSInc9gj7aaVgNuMaUm8="}]}} \ No newline at end of file diff --git a/policies/go/examples/attestation/policy.go b/policies/go/examples/attestation/policy.go new file mode 100644 index 000000000..6d2b59e98 --- /dev/null +++ b/policies/go/examples/attestation/policy.go @@ -0,0 +1,143 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Attestation policy that validates in-toto attestations for git commits. +// +// This example demonstrates: +// - Using Run() wrapper for clean API +// - Parsing in-toto attestation materials +// - Complex validation logic with nested structs +// - Logging validation details +// +// Build: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// Test: +// +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material attestation.json \ +// --kind ATTESTATION +package main + +import ( + "strings" + + chainlooppolicy "github.com/chainloop-dev/chainloop/sdks/go" +) + +// Attestation represents an in-toto attestation. +type Attestation struct { + Type string `json:"_type"` + Subject []Subject `json:"subject"` + PredicateType string `json:"predicateType"` +} + +// Subject represents an attestation subject. +type Subject struct { + Name string `json:"name"` + Digest map[string]string `json:"digest"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Parse material + var attestation Attestation + if err := chainlooppolicy.GetMaterialJSON(&attestation); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + chainlooppolicy.LogInfo("Validating in-toto attestation with %d subjects", len(attestation.Subject)) + + // Skip if not in-toto attestation + if attestation.Type != "https://in-toto.io/Statement/v0.1" && + attestation.Type != "https://in-toto.io/Statement/v1" { + chainlooppolicy.OutputResult(chainlooppolicy.Skip("not an in-toto attestation")) + return + } + + // Validate + result := validateAttestation(attestation) + + if result.HasViolations() { + chainlooppolicy.LogError("Attestation validation failed with %d violations", len(result.Violations)) + } else { + chainlooppolicy.LogInfo("Attestation validation passed") + } + + // Output result + chainlooppolicy.OutputResult(result) + }) +} + +// validateAttestation checks the attestation for compliance. +func validateAttestation(attestation Attestation) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + // Check subjects exist + if len(attestation.Subject) == 0 { + result.AddViolation("attestation must contain at least one subject") + return result + } + + // Check for git commit subject + hasGitCommit := false + for _, subject := range attestation.Subject { + if subject.Name == "git.head" { + hasGitCommit = true + chainlooppolicy.LogDebug("Found git.head subject") + + // Check if git commit has SHA1 digest + sha1, hasSha1 := subject.Digest["sha1"] + if !hasSha1 { + result.AddViolation("git.head subject missing sha1 digest") + } else if sha1 == "" { + result.AddViolation("git.head subject has empty sha1 digest") + } else if len(sha1) != 40 { + result.AddViolationf("git.head sha1 digest has invalid length: %d (expected 40)", len(sha1)) + } else if !isValidHex(sha1) { + result.AddViolation("git.head sha1 digest contains invalid characters") + } else { + chainlooppolicy.LogDebug("Valid git commit SHA1: %s", sha1) + } + } + } + + if !hasGitCommit { + result.AddViolation("attestation must reference a git commit (git.head)") + } + + // Check predicate type is not empty + if attestation.PredicateType == "" { + result.AddViolation("attestation must have a predicateType") + } + + return result +} + +// isValidHex checks if a string contains only hexadecimal characters. +func isValidHex(s string) bool { + for _, c := range strings.ToLower(s) { + if !((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f')) { + return false + } + } + return true +} + +func main() {} diff --git a/policies/go/examples/attestation/policy.wasm b/policies/go/examples/attestation/policy.wasm new file mode 100644 index 000000000..e245ec623 Binary files /dev/null and b/policies/go/examples/attestation/policy.wasm differ diff --git a/policies/go/examples/attestation/policy.yaml b/policies/go/examples/attestation/policy.yaml new file mode 100644 index 000000000..ebe44a408 --- /dev/null +++ b/policies/go/examples/attestation/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: git-commit-signature + description: Verifies that attestations reference a signed git commit +spec: + policies: + - kind: ATTESTATION + path: policy.wasm diff --git a/policies/go/examples/discover/README.md b/policies/go/examples/discover/README.md new file mode 100644 index 000000000..833adde5d --- /dev/null +++ b/policies/go/examples/discover/README.md @@ -0,0 +1,91 @@ +# Discover Policy Example + +A policy that checks for policy violations in related attestations using the discover builtin function. + +## What This Policy Does + +Validates that container images do not have related attestations with policy violations: +1. Extracts the digest from container image metadata (`chainloop_metadata.digest.sha256`) +2. Uses the Discover() function to explore the artifact graph +3. Checks all related attestations for policy violations +4. Reports violations with detailed metadata (name, project, organization) + +This matches the logic of the reference Rego policy for the discover builtin. + +## Building + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +## Testing + +### Testing with container image: +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material docker://nginx:latest \ + --kind CONTAINER_IMAGE +``` + +Expected: **PASS** if no related attestations have policy violations, **FAIL** otherwise + +### Testing with local image: +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material docker://myorg/myapp:v1.0.0 \ + --kind CONTAINER_IMAGE +``` + +## Prerequisites + +- The policy engine must have a gRPC connection configured +- The digest must correspond to an artifact in your Chainloop organization +- You must have access permissions to view the artifact and its references + +## Key Concepts Demonstrated + +1. **Container image metadata**: Extracting digest from `chainloop_metadata.digest.sha256` +2. **Discover function**: `Discover(digest, kind)` to explore artifact graph +3. **Result processing**: Handling DiscoverResult with references +4. **Metadata access**: Reading attestation metadata (hasPolicyViolations, name, project, organization) +5. **Conditional logic**: Building violations only for attestations with violations +6. **Error handling**: Gracefully handling missing gRPC connections + +## File Structure + +``` +discover/ +├── policy.go # Policy implementation with discover +├── policy.yaml # Policy specification +├── policy.wasm # Compiled WASM module (after build) +├── go.mod # Go module definition +└── README.md # This file +``` + +## How Discover Works + +The discover function queries Chainloop's backend to find artifacts related to the input digest: + +```go +// Discover all references +result, err := chainlooppolicy.Discover(digest, "") + +// Or filter by kind +result, err := chainlooppolicy.Discover(digest, "ATTESTATION") +``` + +The result contains: +- `Digest`: The queried artifact digest +- `Kind`: The material type of the artifact +- `References`: Array of related artifacts with their metadata + +Each reference includes: +- `Digest`: The referenced artifact digest +- `Kind`: The material type +- `Metadata`: Key-value pairs with additional information + +Common metadata keys: +- `hasPolicyViolations`: "true" if the attestation has policy violations +- Additional fields depending on artifact type diff --git a/policies/go/examples/discover/go.mod b/policies/go/examples/discover/go.mod new file mode 100644 index 000000000..3bfa4c024 --- /dev/null +++ b/policies/go/examples/discover/go.mod @@ -0,0 +1,9 @@ +module chainloop-policy-discover + +go 1.25 + +require github.com/chainloop-dev/chainloop/sdks/go v0.0.0 + +require github.com/extism/go-pdk v1.1.3 // indirect + +replace github.com/chainloop-dev/chainloop/sdks/go => ../../ diff --git a/policies/go/examples/discover/go.sum b/policies/go/examples/discover/go.sum new file mode 100644 index 000000000..c15d38292 --- /dev/null +++ b/policies/go/examples/discover/go.sum @@ -0,0 +1,2 @@ +github.com/extism/go-pdk v1.1.3 h1:hfViMPWrqjN6u67cIYRALZTZLk/enSPpNKa+rZ9X2SQ= +github.com/extism/go-pdk v1.1.3/go.mod h1:Gz+LIU/YCKnKXhgge8yo5Yu1F/lbv7KtKFkiCSzW/P4= diff --git a/policies/go/examples/discover/policy.go b/policies/go/examples/discover/policy.go new file mode 100644 index 000000000..09617aa79 --- /dev/null +++ b/policies/go/examples/discover/policy.go @@ -0,0 +1,144 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Discover policy example that checks for policy violations in related attestations. +// +// This policy validates that container images do not have any related attestations +// with policy violations. It uses the discover builtin to explore the artifact graph +// and check attestation metadata. +// +// This example demonstrates: +// - Extracting digest from container image metadata +// - Using the Discover() function to explore artifact relationships +// - Checking for policy violations in related attestations +// - Processing attestation metadata (name, project, organization) +// +// Build: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// Test with container image: +// +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material docker://nginx:latest \ +// --kind CONTAINER_IMAGE +package main + +import ( + "fmt" + + chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" +) + +// ContainerImage represents the container image material structure. +type ContainerImage struct { + ChainloopMetadata ChainloopMetadata `json:"chainloop_metadata"` +} + +// ChainloopMetadata contains Chainloop-specific metadata. +type ChainloopMetadata struct { + Digest DigestInfo `json:"digest"` +} + +// DigestInfo contains digest information. +type DigestInfo struct { + SHA256 string `json:"sha256"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Parse container image material to get the digest + var input ContainerImage + if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + if input.ChainloopMetadata.Digest.SHA256 == "" { + chainlooppolicy.OutputResult(chainlooppolicy.Skip("no digest found in chainloop_metadata")) + return + } + + // Construct full digest with sha256 prefix + digest := fmt.Sprintf("sha256:%s", input.ChainloopMetadata.Digest.SHA256) + chainlooppolicy.LogInfo("Discovering artifacts related to: %s", digest) + + // Call the discover function to explore the artifact graph + discoverResult, err := chainlooppolicy.Discover(digest, "") + if err != nil { + chainlooppolicy.LogError("Discovery failed: %v", err) + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + if discoverResult == nil { + chainlooppolicy.LogWarn("No discover result returned (gRPC connection may not be configured)") + chainlooppolicy.OutputResult(chainlooppolicy.Skip("discover not available")) + return + } + + // Check for policy violations in related attestations + result := checkAttestationViolations(discoverResult) + + // Output result + chainlooppolicy.OutputResult(result) + }) +} + +// checkAttestationViolations checks if any related attestations have policy violations. +func checkAttestationViolations(dr *chainlooppolicy.DiscoverResult) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + chainlooppolicy.LogInfo("Found %d references for artifact %s", + len(dr.References), dr.Digest) + + // Check each reference for attestations with policy violations + for _, ref := range dr.References { + // Only check attestations + if ref.Kind != "ATTESTATION" { + continue + } + + chainlooppolicy.LogInfo("Checking attestation: %s", ref.Digest) + + // Check if this attestation has policy violations + if hasPolicyViolations, exists := ref.Metadata["hasPolicyViolations"]; exists && hasPolicyViolations == "true" { + // Extract metadata for detailed violation message + name := ref.Metadata["name"] + project := ref.Metadata["project"] + organization := ref.Metadata["organization"] + + msg := fmt.Sprintf( + "attestation with digest %s contains policy violations [name: %s, project: %s, org: %s]", + ref.Digest, name, project, organization, + ) + result.AddViolation(msg) + chainlooppolicy.LogError(msg) + } + } + + // Log summary + if result.HasViolations() { + chainlooppolicy.LogError("Validation failed: found attestations with policy violations") + } else { + chainlooppolicy.LogInfo("Validation passed: no related attestations have policy violations") + } + + return result +} + +func main() {} diff --git a/policies/go/examples/discover/policy.wasm b/policies/go/examples/discover/policy.wasm new file mode 100644 index 000000000..9a1bf6751 Binary files /dev/null and b/policies/go/examples/discover/policy.wasm differ diff --git a/policies/go/examples/discover/policy.yaml b/policies/go/examples/discover/policy.yaml new file mode 100644 index 000000000..08d33a285 --- /dev/null +++ b/policies/go/examples/discover/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: policy-builtins + description: Policy that checks for policy violations in related attestations +spec: + policies: + - kind: CONTAINER_IMAGE + path: policy.wasm diff --git a/policies/go/examples/http/README.md b/policies/go/examples/http/README.md new file mode 100644 index 000000000..131df0186 --- /dev/null +++ b/policies/go/examples/http/README.md @@ -0,0 +1,57 @@ +# HTTP Example Policy + +Demonstrates how policies can make HTTP requests to external APIs with hostname restrictions enforced by the policy engine. + +## What This Policy Does + +This policy demonstrates HTTP functionality by: +- Making an HTTP GET request to httpbin.org +- Logging the request progress +- Returning success if the request completes +- Failing if the hostname is not in the allowed list + +## Security + +HTTP requests are restricted by the policy engine's AllowedHosts configuration (Extism native feature). Only explicitly allowed hostnames can be accessed. Requests to non-allowed hostnames will fail. + +## Building + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +## Testing + +### Test with allowed hostname (success) + +```bash +echo "test" | chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind STRING \ + --allowed-hostnames httpbin.org +``` + +Expected output: Policy passes (no violations) + +### Test with blocked hostname (failure) + +```bash +echo "test" | chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind STRING \ + --allowed-hostnames www.example.com +``` + +Expected output: Policy execution fails with "HTTP request not allowed" + +## SDK Functions Used + +- `chainlooppolicy.Run()` - Wraps policy execution +- `chainlooppolicy.HTTPGet()` - Makes HTTP GET request +- `chainlooppolicy.LogInfo()` - Logs informational messages +- `chainlooppolicy.LogError()` - Logs error messages +- `chainlooppolicy.Success()` - Creates success result +- `chainlooppolicy.Fail()` - Creates failure result +- `chainlooppolicy.OutputResult()` - Outputs result to host diff --git a/policies/go/examples/http/data.json b/policies/go/examples/http/data.json new file mode 100644 index 000000000..67bedabd3 --- /dev/null +++ b/policies/go/examples/http/data.json @@ -0,0 +1,3 @@ +{ + "check_url": "https://dummyjson.com/awdaw" +} diff --git a/policies/go/examples/http/policy.go b/policies/go/examples/http/policy.go new file mode 100644 index 000000000..effcc44f4 --- /dev/null +++ b/policies/go/examples/http/policy.go @@ -0,0 +1,91 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// HTTP example demonstrating how policies can make external API calls +// with hostname restrictions enforced by the policy engine. +// +// This example shows: +// - HTTPGet() to fetch data from allowed hostnames +// - HTTPGetJSON() to parse JSON responses +// - Hostname blocking for security +// +// Build: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// Test with allowed hostname: +// +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material data.json \ +// --kind EVIDENCE \ +// --allowed-hostnames dummyjson.com +// +// Test with blocked hostname (will fail): +// +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material data.json \ +// --kind EVIDENCE \ +// --allowed-hostnames www.example.com +package main + +import ( + chainlooppolicy "github.com/chainloop-dev/chainloop/sdks/go" +) + +type Input struct { + CheckURL string `json:"check_url"` +} + +type APIResponse struct { + Products []Product `json:"products"` +} + +type Product struct { + ID int `json:"id"` + Title string `json:"title"` + Price float64 `json:"price"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Parse material + var input Input + if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + chainlooppolicy.LogInfo("Making HTTP request to: %s", input.CheckURL) + + // Attempt HTTP request (will be blocked if hostname not allowed) + var apiResp APIResponse + if err := chainlooppolicy.HTTPGetJSON(input.CheckURL, &apiResp); err != nil { + // This will fail if hostname is not in allowed list + chainlooppolicy.LogError("HTTP request failed: %v", err) + chainlooppolicy.OutputResult(chainlooppolicy.Fail( + "failed to fetch data: " + err.Error(), + )) + return + } + + chainlooppolicy.LogInfo("HTTP request succeeded") + chainlooppolicy.OutputResult(chainlooppolicy.Success()) + }) +} + +func main() {} diff --git a/policies/go/examples/http/policy.wasm b/policies/go/examples/http/policy.wasm new file mode 100644 index 000000000..71ab880df Binary files /dev/null and b/policies/go/examples/http/policy.wasm differ diff --git a/policies/go/examples/http/policy.yaml b/policies/go/examples/http/policy.yaml new file mode 100644 index 000000000..e8eecd68e --- /dev/null +++ b/policies/go/examples/http/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: http-example + description: Example policy demonstrating HTTP requests with hostname restrictions +spec: + policies: + - kind: EVIDENCE + path: policy.wasm diff --git a/policies/go/examples/sbom/README.md b/policies/go/examples/sbom/README.md new file mode 100644 index 000000000..d0376438b --- /dev/null +++ b/policies/go/examples/sbom/README.md @@ -0,0 +1,135 @@ +# SBOM Validation Policy Example + +Validates CycloneDX SBOM structure and ensures components have required metadata. + +## What This Policy Does + +Validates a CycloneDX SBOM with the following rules: + +**Hard Requirements** (violations): +1. Must be CycloneDX format (otherwise skips) +2. Must contain at least one component +3. Each component must have a name +4. Each component must have a version + +**Soft Requirements** (warnings only): +- Components should have purl (package URL) +- Components should have integrity hashes +- SBOM should have timestamp +- SBOM should list generation tools + +## Building + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +## Testing + +### Valid SBOM: +```bash +cat > sbom.json < sbom-invalid.json < sbom-spdx.json < ../../ diff --git a/policies/go/examples/sbom/go.sum b/policies/go/examples/sbom/go.sum new file mode 100644 index 000000000..c15d38292 --- /dev/null +++ b/policies/go/examples/sbom/go.sum @@ -0,0 +1,2 @@ +github.com/extism/go-pdk v1.1.3 h1:hfViMPWrqjN6u67cIYRALZTZLk/enSPpNKa+rZ9X2SQ= +github.com/extism/go-pdk v1.1.3/go.mod h1:Gz+LIU/YCKnKXhgge8yo5Yu1F/lbv7KtKFkiCSzW/P4= diff --git a/policies/go/examples/sbom/policy.go b/policies/go/examples/sbom/policy.go new file mode 100644 index 000000000..6861d5f32 --- /dev/null +++ b/policies/go/examples/sbom/policy.go @@ -0,0 +1,107 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// SBOM policy example that validates CycloneDX BOMs. +// +// This example demonstrates: +// - Using Run() wrapper for clean API +// - Parsing CycloneDX SBOM materials +// - Logging validation progress +// - Result building with violations +// +// Build: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// Test: +// +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material sbom.json \ +// --kind SBOM_CYCLONEDX_JSON +package main + +import ( + chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" +) + +// CycloneDXBOM represents a CycloneDX SBOM structure. +type CycloneDXBOM struct { + BOMFormat string `json:"bomFormat"` + Components []Component `json:"components"` +} + +// Component represents a software component in the SBOM. +type Component struct { + Name string `json:"name"` + Version string `json:"version"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Parse material + var sbom CycloneDXBOM + if err := chainlooppolicy.GetMaterialJSON(&sbom); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + chainlooppolicy.LogInfo("Validating CycloneDX SBOM with %d components", len(sbom.Components)) + + // Skip if not CycloneDX + if sbom.BOMFormat != "CycloneDX" { + chainlooppolicy.OutputResult(chainlooppolicy.Skip("not a CycloneDX SBOM")) + return + } + + // Validate + result := validateSBOM(sbom) + + if result.HasViolations() { + chainlooppolicy.LogError("SBOM validation failed with %d violations", len(result.Violations)) + } else { + chainlooppolicy.LogInfo("SBOM validation passed") + } + + // Output result + chainlooppolicy.OutputResult(result) + }) +} + +// validateSBOM checks the SBOM for compliance. +func validateSBOM(sbom CycloneDXBOM) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + // Check components exist + if len(sbom.Components) == 0 { + result.AddViolation("SBOM must contain at least one component") + return result + } + + // Validate each component + for i, comp := range sbom.Components { + if comp.Name == "" { + result.AddViolationf("component at index %d missing name", i) + } + if comp.Version == "" { + result.AddViolationf("component '%s' missing version", comp.Name) + } + } + + return result +} + +func main() {} diff --git a/policies/go/examples/sbom/policy.wasm b/policies/go/examples/sbom/policy.wasm new file mode 100644 index 000000000..3bf969f58 Binary files /dev/null and b/policies/go/examples/sbom/policy.wasm differ diff --git a/policies/go/examples/sbom/policy.yaml b/policies/go/examples/sbom/policy.yaml new file mode 100644 index 000000000..95c72a7e0 --- /dev/null +++ b/policies/go/examples/sbom/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: sbom-validation + description: Validates CycloneDX SBOM structure and component completeness +spec: + policies: + - kind: SBOM_CYCLONEDX_JSON + path: policy.wasm diff --git a/policies/go/examples/sbom/sbom.json b/policies/go/examples/sbom/sbom.json new file mode 100644 index 000000000..38c8f3462 --- /dev/null +++ b/policies/go/examples/sbom/sbom.json @@ -0,0 +1 @@ +{"$schema":"http://cyclonedx.org/schema/bom-1.6.schema.json","bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:8b9701e9-13ef-41d0-8c4b-43931744639f","version":1,"metadata":{"timestamp":"2025-11-20T18:44:24Z","tools":{"components":[{"type":"application","author":"anchore","name":"syft","version":"1.38.0"}]},"component":{"bom-ref":"5cdd1fefd958c6fb","type":"container","name":"ghcr.io/chainloop-dev/chainloop/control-plane","version":"v1.60.0-arm64"}},"components":[{"bom-ref":"pkg:golang/ariga.io/atlas@v0.36.1?package-id=1b9a814ec1cc7228","type":"library","name":"ariga.io/atlas","version":"v0.36.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/ariga.io/atlas/@v/v0.36.1.zip#ariga.io/atlas@v0.36.1/LICENSE"}}],"purl":"pkg:golang/ariga.io/atlas@v0.36.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:w0BGAHPkzxpx0n9QWUVbtu7vUUihs7cDCTPsnnw9nck="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=edd00aa4e8dbad5f#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=576a923b75b0414a#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=0cf7cbf749d1cb4e#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=c6c3f160ac2104ef#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cel.dev/expr@v0.20.0?package-id=3991a4c476f16614","type":"library","name":"cel.dev/expr","version":"v0.20.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cel.dev/expr/@v/v0.20.0.zip#cel.dev/expr@v0.20.0/LICENSE"}}],"purl":"pkg:golang/cel.dev/expr@v0.20.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go@v0.120.0?package-id=8dfc7d3fa8a812b2","type":"library","name":"cloud.google.com/go","version":"v0.120.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/@v/v0.120.0.zip#cloud.google.com/go@v0.120.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/cloud.google.com/go/@v/v0.120.0.zip#cloud.google.com/go@v0.120.0/third_party/pkgsite/LICENSE"}}],"purl":"pkg:golang/cloud.google.com/go@v0.120.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wc6bgG9DHyKqF5/vQvX1CiZrtHnxJjBlKUyF9nP6meA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/auth@v0.16.1?package-id=de95518c0a391d5a","type":"library","name":"cloud.google.com/go/auth","version":"v0.16.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/auth/@v/v0.16.1.zip#cloud.google.com/go/auth@v0.16.1/LICENSE"}}],"cpe":"cpe:2.3:a:go:auth:v0.16.1:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/auth@v0.16.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/auth@v0.2.8?package-id=4c87e6e404b0d7a5#oauth2adapt","type":"library","name":"cloud.google.com/go/auth/oauth2adapt","version":"v0.2.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/auth/oauth2adapt/@v/v0.2.8.zip#cloud.google.com/go/auth/oauth2adapt@v0.2.8/LICENSE"}}],"cpe":"cpe:2.3:a:go:auth\\/oauth2adapt:v0.2.8:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/auth@v0.2.8#oauth2adapt","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/compute@v0.6.0?package-id=dfeda2f435435c8d#metadata","type":"library","name":"cloud.google.com/go/compute/metadata","version":"v0.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/compute/metadata/@v/v0.6.0.zip#cloud.google.com/go/compute/metadata@v0.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:compute\\/metadata:v0.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/compute@v0.6.0#metadata","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/iam@v1.5.0?package-id=e13018493ce7a2fc","type":"library","name":"cloud.google.com/go/iam","version":"v1.5.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/iam/@v/v1.5.0.zip#cloud.google.com/go/iam@v1.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:iam:v1.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/iam@v1.5.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QlLcVMhbLGOjRcGe6VTGGTyQib8dRLK2B/kYNV0+2xs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/monitoring@v1.24.0?package-id=2a4c84bd5a378b2b","type":"library","name":"cloud.google.com/go/monitoring","version":"v1.24.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/monitoring/@v/v1.24.0.zip#cloud.google.com/go/monitoring@v1.24.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:monitoring:v1.24.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/monitoring@v1.24.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:csSKiCJ+WVRgNkRzzz3BPoGjFhjPY23ZTcaenToJxMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/secretmanager@v1.14.5?package-id=c263d49fdc3ef135","type":"library","name":"cloud.google.com/go/secretmanager","version":"v1.14.5","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/secretmanager/@v/v1.14.5.zip#cloud.google.com/go/secretmanager@v1.14.5/LICENSE"}}],"cpe":"cpe:2.3:a:go:secretmanager:v1.14.5:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/secretmanager@v1.14.5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:W++V0EL9iL6T2+ec24Dm++bIti0tI6Gx6sCosDBters="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/storage@v1.50.0?package-id=0634dfe0a1f7a05a","type":"library","name":"cloud.google.com/go/storage","version":"v1.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/storage/@v/v1.50.0.zip#cloud.google.com/go/storage@v1.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:storage:v1.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/storage@v1.50.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3TbVkzTooBvnZsk7WaAQfOsNrdoM8QHusXA1cpk6QJs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4?package-id=1c01b35916422ac9","type":"library","name":"code.cloudfoundry.org/bytefmt","version":"v0.0.0-20230612151507-41ef4d1f67a4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/code.cloudfoundry.org/bytefmt/@v/v0.0.0-20230612151507-41ef4d1f67a4.zip#code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4/LICENSE"}},{"license":{"name":"sha256:7158ca3ed9d0fd5f0714f0aef14236ea299f7015e87f43c3d3ca0ef73dbd3957","url":"https://proxy.golang.org/code.cloudfoundry.org/bytefmt/@v/v0.0.0-20230612151507-41ef4d1f67a4.zip#code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4/NOTICE"}}],"purl":"pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9G5F8zgma5v0GdDvNz6iZwwJp3RS/z0SY/aHGfVwvTo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cuelang.org/go@v0.9.2?package-id=29cc2b94fd47ac47","type":"library","name":"cuelang.org/go","version":"v0.9.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/NOTICE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/golangorgx/telemetry/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/LICENSE.libyaml"}}],"purl":"pkg:golang/cuelang.org/go@v0.9.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:pfNiry2PdRBr02G/aKm5k2vhzmqbAOoaB4WurmEbWvs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/entgo.io/ent@v0.14.4?package-id=5714b0c40e1cbe7f","type":"library","name":"entgo.io/ent","version":"v0.14.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/entgo.io/ent/@v/v0.14.4.zip#entgo.io/ent@v0.14.4/LICENSE"}}],"purl":"pkg:golang/entgo.io/ent@v0.14.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/DhDraSLXIkBhyiVoJeSshr4ZYi7femzhj6/TckzZuI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/filippo.io/edwards25519@v1.1.0?package-id=f5a626a34354491b","type":"library","name":"filippo.io/edwards25519","version":"v1.1.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/filippo.io/edwards25519/@v/v1.1.0.zip#filippo.io/edwards25519@v1.1.0/LICENSE"}}],"purl":"pkg:golang/filippo.io/edwards25519@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.18.0?package-id=7769c345e6a41e06#sdk/azcore","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/azcore","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/azcore/@v/v1.18.0.zip#github.com/azure/azure-sdk-for-go/sdk/azcore@v1.18.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/azcore:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.18.0#sdk/azcore","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/azcore:v1.18.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.10.0?package-id=9f947e5321b6e309#sdk/azidentity","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/azidentity","version":"v1.10.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/azidentity/@v/v1.10.0.zip#github.com/azure/azure-sdk-for-go/sdk/azidentity@v1.10.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/azidentity:v1.10.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.10.0#sdk/azidentity","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/azidentity:v1.10.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j8BorDEigD8UFOSZQiSqAMOOleyQOOQPnUAwV+Ls1gA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.11.1?package-id=1a21d9c63d2fd37c#sdk/internal","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/internal","version":"v1.11.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/internal/@v/v1.11.1.zip#github.com/azure/azure-sdk-for-go/sdk/internal@v1.11.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/internal:v1.11.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.11.1#sdk/internal","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/internal:v1.11.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v0.12.0?package-id=8ec1a5515064cc0f#sdk/keyvault/azsecrets","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets","version":"v0.12.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/keyvault/azsecrets/@v/v0.12.0.zip#github.com/azure/azure-sdk-for-go/sdk/keyvault/azsecrets@v0.12.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/keyvault\\/azsecrets:v0.12.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v0.12.0#sdk/keyvault/azsecrets","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/keyvault\\/azsecrets:v0.12.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xnO4sFyG8UH2fElBkcqLTOZsAajvKfnSlgBBW8dXYjw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v0.7.1?package-id=8790a26c853352e6#sdk/keyvault/internal","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal","version":"v0.7.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/keyvault/internal/@v/v0.7.1.zip#github.com/azure/azure-sdk-for-go/sdk/keyvault/internal@v0.7.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/keyvault\\/internal:v0.7.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v0.7.1#sdk/keyvault/internal","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/keyvault\\/internal:v0.7.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.3.1?package-id=dfd4cdfbd839595e#sdk/storage/azblob","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob","version":"v1.3.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/storage/azblob/@v/v1.3.1.zip#github.com/azure/azure-sdk-for-go/sdk/storage/azblob@v1.3.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/storage\\/azblob:v1.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.3.1#sdk/storage/azblob","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/storage\\/azblob:v1.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fXPMAmuh0gDuRDey0atC8cXBuKIlqCzCkL8sm1n9Ov0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azuread/microsoft-authentication-library-for-go@v1.4.2?package-id=e7582017408a48f8","type":"library","name":"github.com/AzureAD/microsoft-authentication-library-for-go","version":"v1.4.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azuread/microsoft-authentication-library-for-go/@v/v1.4.2.zip#github.com/azuread/microsoft-authentication-library-for-go@v1.4.2/LICENSE"}}],"cpe":"cpe:2.3:a:AzureAD:microsoft-authentication-library-for-go:v1.4.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.4.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:AzureAD:microsoft_authentication_library_for_go:v1.4.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v1.26.0?package-id=327d6284d3ae9a8c#detectors/gcp","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp","version":"v1.26.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/detectors/gcp/@v/v1.26.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/detectors/gcp@v1.26.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/detectors\\/gcp:v1.26.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v1.26.0#detectors/gcp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/detectors\\/gcp:v1.26.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=1a4431c12ff4b138#exporter/metric","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric","version":"v0.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/exporter/metric/@v/v0.50.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/exporter/metric@v0.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/exporter\\/metric:v0.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v0.50.0#exporter/metric","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/exporter\\/metric:v0.50.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5IT7xOdq17MtcdtL/vtl6mGfzhaq4m4vpollPRmlsBQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=662c5f3202aacc2e#internal/resourcemapping","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping","version":"v0.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/internal/resourcemapping/@v/v0.50.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/internal/resourcemapping@v0.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/internal\\/resourcemapping:v0.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v0.50.0#internal/resourcemapping","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/internal\\/resourcemapping:v0.50.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ig/FpDD2JofP/NExKQUbn7uOSZzJAQqogfqluZK4ed4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/agext/levenshtein@v1.2.3?package-id=54f200cba3f3ddd5","type":"library","name":"github.com/agext/levenshtein","version":"v1.2.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/agext/levenshtein/@v/v1.2.3.zip#github.com/agext/levenshtein@v1.2.3/LICENSE"}},{"license":{"name":"sha256:5f8cebc9aab3ce69ade921efb14caec472c34f22566e015df9512111dcacae06","url":"https://proxy.golang.org/github.com/agext/levenshtein/@v/v1.2.3.zip#github.com/agext/levenshtein@v1.2.3/NOTICE"}}],"cpe":"cpe:2.3:a:agext:levenshtein:v1.2.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/agext/levenshtein@v1.2.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/agnivade/levenshtein@v1.2.1?package-id=e7e9a5338c9a97b3","type":"library","name":"github.com/agnivade/levenshtein","version":"v1.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/agnivade/levenshtein/@v/v1.2.1.zip#github.com/agnivade/levenshtein@v1.2.1/License.txt"}}],"cpe":"cpe:2.3:a:agnivade:levenshtein:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/agnivade/levenshtein@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=e358fd7c8804e192#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9778da3f20bdc413#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9862b73e3588ea9c#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=7767baf99c2c72da#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0?package-id=3261f7b0bd4ec0ee#v15","type":"library","name":"github.com/apparentlymart/go-textseg/v15","version":"v15.0.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}},{"license":{"id":"Unicode-DFS-2016","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:apparentlymart:go-textseg\\/v15:v15.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0#v15","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:apparentlymart:go_textseg\\/v15:v15.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2?package-id=cf99884dade6c2fa","type":"library","name":"github.com/asaskevich/govalidator","version":"v0.0.0-20230301143203-a9d515a09cc2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/asaskevich/govalidator/@v/v0.0.0-20230301143203-a9d515a09cc2.zip#github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2/LICENSE"}}],"cpe":"cpe:2.3:a:asaskevich:govalidator:v0.0.0-20230301143203-a9d515a09cc2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4?package-id=7c8f583f475b279a","type":"library","name":"github.com/aws/aws-sdk-go-v2","version":"v1.39.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/LICENSE.txt"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/internal/sync/singleflight/LICENSE"}},{"license":{"name":"sha256:a6e830174d62dafad3a718384772ea1f4c0e27989f050932dc442a5e3ddad080","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/NOTICE.txt"}},{"license":{"name":"sha256:f19d6aac3a063b4ea43196472248ff68e277b7c2a9e0a193799134677d496cda","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/.github/workflows/license-check.yml"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2:v1.39.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2:v1.39.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:qTsQKcdQPHnfGYBBs+Btl8QwxJeoWcOcPcixK90mRhg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2?package-id=88f41ccaf0fcf0d2#aws/protocol/eventstream","type":"library","name":"github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream","version":"v1.7.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/@v/v1.7.2.zip#github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream@v1.7.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/aws\\/protocol\\/eventstream:v1.7.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2#aws/protocol/eventstream","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/aws\\/protocol\\/eventstream:v1.7.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:t9yYsydLYNBk9cJ73rgPhPWqOh/52fcWDQB5b1JsKSY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19?package-id=229a4160f6bd6fea#credentials","type":"library","name":"github.com/aws/aws-sdk-go-v2/credentials","version":"v1.18.19","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/credentials/@v/v1.18.19.zip#github.com/aws/aws-sdk-go-v2/credentials@v1.18.19/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/credentials:v1.18.19:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19#credentials","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/credentials:v1.18.19:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Jc1zzwkSY1QbkEcLujwqRTXOdvW8ppND3jRBb/VhBQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1?package-id=255c307a498c37fb#feature/s3/manager","type":"library","name":"github.com/aws/aws-sdk-go-v2/feature/s3/manager","version":"v1.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/feature/s3/manager/@v/v1.20.1.zip#github.com/aws/aws-sdk-go-v2/feature/s3/manager@v1.20.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/feature\\/s3\\/manager:v1.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1#feature/s3/manager","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/feature\\/s3\\/manager:v1.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EfS+tBgFwzrR/skkhKdyClU0pCx/VgSKSo8OIzMEiQM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=fd05241447fbad2a#internal/configsources","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/configsources","version":"v1.4.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/configsources/@v/v1.4.11.zip#github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/configsources:v1.4.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11#internal/configsources","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/configsources:v1.4.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:7AANQZkF3ihM8fbdftpjhken0TP9sBzFbV/Ze/Y4HXA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11?package-id=7fff74c6179c99c8#internal/endpoints/v2","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/endpoints/v2","version":"v2.7.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/@v/v2.7.11.zip#github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/endpoints\\/v2:v2.7.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11#internal/endpoints/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/endpoints\\/v2:v2.7.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ShdtWUZT37LCAA4Mw2kJAJtzaszfSHFb5n25sdcv4YE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=bf9073ca13d2633d#internal/v4a","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/v4a","version":"v1.4.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/v4a/@v/v1.4.11.zip#github.com/aws/aws-sdk-go-v2/internal/v4a@v1.4.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/v4a:v1.4.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11#internal/v4a","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/v4a:v1.4.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bKgSxk1TW//00PGQqYmrq83c+2myGidEclp+t9pPqVI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2?package-id=b6bf3c75b9158e55#service/internal/accept-encoding","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding","version":"v1.13.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/@v/v1.13.2.zip#github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/accept-encoding:v1.13.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2#service/internal/accept-encoding","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/accept_encoding:v1.13.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2?package-id=471dd6301d957ee5#service/internal/checksum","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/checksum","version":"v1.9.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/checksum/@v/v1.9.2.zip#github.com/aws/aws-sdk-go-v2/service/internal/checksum@v1.9.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/checksum:v1.9.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2#service/internal/checksum","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/checksum:v1.9.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DGFpGybmutVsCuF6vSuLZ25Vh55E3VmsnJmFfjeBx4M="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11?package-id=0850673146fa4015#service/internal/presigned-url","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/presigned-url","version":"v1.13.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/@v/v1.13.11.zip#github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/presigned-url:v1.13.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11#service/internal/presigned-url","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/presigned_url:v1.13.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GpMf3z2KJa4RnJ0ew3Hac+hRFYLZ9DDjfgXjuW+pB54="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11?package-id=bcfc4a1504bc9d1e#service/internal/s3shared","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/s3shared","version":"v1.19.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/@v/v1.19.11.zip#github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.19.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/s3shared:v1.19.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11#service/internal/s3shared","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/s3shared:v1.19.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:weapBOuuFIBEQ9OX/NVW3tFQCvSutyjZYk/ga5jDLPo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0?package-id=cb0a0f1ed8b5fcfb#service/s3","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/s3","version":"v1.89.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/s3/@v/v1.89.0.zip#github.com/aws/aws-sdk-go-v2/service/s3@v1.89.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/s3:v1.89.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0#service/s3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/s3:v1.89.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JbCUlVDEjmhpvpIgXP9QN+/jW61WWWj99cGmxMC49hM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6?package-id=944d656d4937b3d7#service/secretsmanager","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/secretsmanager","version":"v1.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/secretsmanager/@v/v1.28.6.zip#github.com/aws/aws-sdk-go-v2/service/secretsmanager@v1.28.6/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/secretsmanager:v1.28.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6#service/secretsmanager","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/secretsmanager:v1.28.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TIOEjw0i2yyhmhRry3Oeu9YtiiHWISZ6j/irS1W3gX4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8?package-id=ae03c469d9964d5f#service/sso","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/sso","version":"v1.29.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/sso/@v/v1.29.8.zip#github.com/aws/aws-sdk-go-v2/service/sso@v1.29.8/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/sso:v1.29.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8#service/sso","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/sso:v1.29.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:M5nimZmugcZUO9wG7iVtROxPhiqyZX6ejS1lxlDPbTU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/smithy-go@v1.23.1?package-id=30f5c8f9378b1b0b","type":"library","name":"github.com/aws/smithy-go","version":"v1.23.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/internal/sync/singleflight/LICENSE"}},{"license":{"name":"sha256:d4290ed64c2edd0fce1d84e3f9dfb2881240fe534def76b8cd29ed6af683e287","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/NOTICE"}}],"cpe":"cpe:2.3:a:aws:smithy-go:v1.23.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/smithy-go@v1.23.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:smithy_go:v1.23.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=4a504023edc43053","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=0107fda3b9a62652","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=f111cd0ff25be54b","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=851d702929c90d6b","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/beorn7/perks@v1.0.1?package-id=88b001c4d4d0b5f3","type":"library","name":"github.com/beorn7/perks","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/beorn7/perks/@v/v1.0.1.zip#github.com/beorn7/perks@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:beorn7:perks:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/beorn7/perks@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible?package-id=69b16326119c3de9","type":"library","name":"github.com/blang/semver","version":"v3.5.1+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/blang/semver/@v/v3.5.1+incompatible.zip#github.com/blang/semver@v3.5.1+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:blang:semver:v3.5.1\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bmatcuk/doublestar@v1.3.4?package-id=5bb1becc5084463d","type":"library","name":"github.com/bmatcuk/doublestar","version":"v1.3.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/bmatcuk/doublestar/@v/v1.3.4.zip#github.com/bmatcuk/doublestar@v1.3.4/LICENSE"}}],"cpe":"cpe:2.3:a:bmatcuk:doublestar:v1.3.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bmatcuk/doublestar@v1.3.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bmatcuk/doublestar@v4.8.1?package-id=bceca9a757c8b716#v4","type":"library","name":"github.com/bmatcuk/doublestar/v4","version":"v4.8.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/bmatcuk/doublestar/v4/@v/v4.8.1.zip#github.com/bmatcuk/doublestar/v4@v4.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:bmatcuk:doublestar\\/v4:v4.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bmatcuk/doublestar@v4.8.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=1548bdb64ee27afb","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7ce5bfe8a2d6da39","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7957d791a206fc3a","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=424dc008cddfac27","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11?package-id=44532fe0070003be","type":"library","name":"github.com/bufbuild/protoyaml-go","version":"v0.1.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protoyaml-go/@v/v0.1.11.zip#github.com/bufbuild/protoyaml-go@v0.1.11/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protoyaml-go:v0.1.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protoyaml_go:v0.1.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Iyixd6Y5dx6ws6Uh8APgC1lMyvXt710NayoY8cY0Vj8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=8feb6a0a369f06b4","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=6579eb971ced0e83","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=3611af2062999f69","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=063662c0e5be2d12","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/casbin/casbin@v2.103.0?package-id=398770942b4a4b45#v2","type":"library","name":"github.com/casbin/casbin/v2","version":"v2.103.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/casbin/casbin/v2/@v/v2.103.0.zip#github.com/casbin/casbin/v2@v2.103.0/LICENSE"}}],"cpe":"cpe:2.3:a:casbin:casbin\\/v2:v2.103.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/casbin/casbin@v2.103.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dHElatNXNrr8XcseUov0ZSiWjauwmZZE6YMV3eU1yic="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/casbin/govaluate@v1.3.0?package-id=ae0d6aa8b0fbf5ad","type":"library","name":"github.com/casbin/govaluate","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/casbin/govaluate/@v/v1.3.0.zip#github.com/casbin/govaluate@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:casbin:govaluate:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/casbin/govaluate@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:VA0eSY0M2lA86dYd5kPPuNZMUD9QkWnOCnavGrw9myc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cenkalti/backoff@v4.3.0?package-id=db2757ee2d4c3bd9#v4","type":"library","name":"github.com/cenkalti/backoff/v4","version":"v4.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/cenkalti/backoff/v4/@v/v4.3.0.zip#github.com/cenkalti/backoff/v4@v4.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:cenkalti:backoff\\/v4:v4.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cenkalti/backoff@v4.3.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cespare/xxhash@v2.3.0?package-id=9aa1e7125da5e681#v2","type":"library","name":"github.com/cespare/xxhash/v2","version":"v2.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/cespare/xxhash/v2/@v/v2.3.0.zip#github.com/cespare/xxhash/v2@v2.3.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:cespare:xxhash\\/v2:v2.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cespare/xxhash@v2.3.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7c759c1569fbe75d","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=54b2042dbb967bfb","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7082a29b4f621514","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=07be1822274ac6c2","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42?package-id=fd055dca9cd4684e#go","type":"library","name":"github.com/cncf/xds/go","version":"v0.0.0-20250121191232-2f005788dc42","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cncf/xds/go/@v/v0.0.0-20250121191232-2f005788dc42.zip#github.com/cncf/xds/go@v0.0.0-20250121191232-2f005788dc42/LICENSE"}}],"cpe":"cpe:2.3:a:cncf:xds\\/go:v0.0.0-20250121191232-2f005788dc42:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42#go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cockroachdb/apd@v3.2.1?package-id=a7e8dec354ec137e#v3","type":"library","name":"github.com/cockroachdb/apd/v3","version":"v3.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cockroachdb/apd/v3/@v/v3.2.1.zip#github.com/cockroachdb/apd/v3@v3.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:cockroachdb:apd\\/v3:v3.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cockroachdb/apd@v3.2.1#v3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3?package-id=ce2cc16c91eae9c8#estargz","type":"library","name":"github.com/containerd/stargz-snapshotter/estargz","version":"v0.16.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/containerd/stargz-snapshotter/estargz/@v/v0.16.3.zip#github.com/containerd/stargz-snapshotter/estargz@v0.16.3/LICENSE"}}],"cpe":"cpe:2.3:a:containerd:stargz-snapshotter\\/estargz:v0.16.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3#estargz","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:containerd:stargz_snapshotter\\/estargz:v0.16.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/coreos/go-oidc@v3.11.0?package-id=bdb5877deeea7ea4#v3","type":"library","name":"github.com/coreos/go-oidc/v3","version":"v3.11.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/coreos/go-oidc/v3/@v/v3.11.0.zip#github.com/coreos/go-oidc/v3@v3.11.0/LICENSE"}},{"license":{"name":"sha256:dccd26c6fd9c296daf44d0bc56bb4efc566edd4880381b3331c9a63e6e471338","url":"https://proxy.golang.org/github.com/coreos/go-oidc/v3/@v/v3.11.0.zip#github.com/coreos/go-oidc/v3@v3.11.0/NOTICE"}}],"cpe":"cpe:2.3:a:coreos:go-oidc\\/v3:v3.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/coreos/go-oidc@v3.11.0#v3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:coreos:go_oidc\\/v3:v3.11.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46?package-id=4395ed3109692990","type":"library","name":"github.com/cyberphone/json-canonicalization","version":"v0.0.0-20231011164504-785e29786b46","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cyberphone/json-canonicalization/@v/v0.0.0-20231011164504-785e29786b46.zip#github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46/LICENSE"}},{"license":{"name":"sha256:b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2","url":"https://proxy.golang.org/github.com/cyberphone/json-canonicalization/@v/v0.0.0-20231011164504-785e29786b46.zip#github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46/python3/src/org/webpki/json/LICENSE"}}],"cpe":"cpe:2.3:a:cyberphone:json-canonicalization:v0.0.0-20231011164504-785e29786b46:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:cyberphone:json_canonicalization:v0.0.0-20231011164504-785e29786b46:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2Dx4IHfC1yHWI12AxQDJM1QbRCDfk6M+blLzlZCXdrc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f?package-id=929f518e1a2c29f7","type":"library","name":"github.com/desertbit/timer","version":"v0.0.0-20180107155436-c41aec40b27f","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/desertbit/timer/@v/v0.0.0-20180107155436-c41aec40b27f.zip#github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f/LICENSE"}}],"cpe":"cpe:2.3:a:desertbit:timer:v0.0.0-20180107155436-c41aec40b27f:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352?package-id=4c6df587dc437bee","type":"library","name":"github.com/digitorus/pkcs7","version":"v0.0.0-20230818184609-3a137a874352","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/digitorus/pkcs7/@v/v0.0.0-20230818184609-3a137a874352.zip#github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352/LICENSE"}}],"cpe":"cpe:2.3:a:digitorus:pkcs7:v0.0.0-20230818184609-3a137a874352:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7?package-id=af6c3e471dd91674","type":"library","name":"github.com/digitorus/timestamp","version":"v0.0.0-20231217203849-220c5c2851b7","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/digitorus/timestamp/@v/v0.0.0-20231217203849-220c5c2851b7.zip#github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7/LICENSE"}}],"cpe":"cpe:2.3:a:digitorus:timestamp:v0.0.0-20231217203849-220c5c2851b7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible?package-id=73b4b1a8f5e34f52","type":"library","name":"github.com/docker/cli","version":"v27.5.0+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/docker/cli/@v/v27.5.0+incompatible.zip#github.com/docker/cli@v27.5.0+incompatible/LICENSE"}},{"license":{"name":"sha256:a8c869fbda819afb8d80e0ac19bac52e766bc6c19cb38cf94f52d64c4be2aab6","url":"https://proxy.golang.org/github.com/docker/cli/@v/v27.5.0+incompatible.zip#github.com/docker/cli@v27.5.0+incompatible/NOTICE"}}],"cpe":"cpe:2.3:a:docker:cli:v27.5.0\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible?package-id=78d5b6f50e970040","type":"library","name":"github.com/docker/distribution","version":"v2.8.3+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/docker/distribution/@v/v2.8.3+incompatible.zip#github.com/docker/distribution@v2.8.3+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:docker:distribution:v2.8.3\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2?package-id=b028d0936bd37abe","type":"library","name":"github.com/docker/docker-credential-helpers","version":"v0.8.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/docker/docker-credential-helpers/@v/v0.8.2.zip#github.com/docker/docker-credential-helpers@v0.8.2/LICENSE"}}],"cpe":"cpe:2.3:a:docker:docker-credential-helpers:v0.8.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:docker:docker_credential_helpers:v0.8.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/dustin/go-humanize@v1.0.1?package-id=1c8aeec87e8e24de","type":"library","name":"github.com/dustin/go-humanize","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/dustin/go-humanize/@v/v1.0.1.zip#github.com/dustin/go-humanize@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:dustin:go-humanize:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/dustin/go-humanize@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:dustin:go_humanize:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4?package-id=371937f3b334bbeb#envoy","type":"library","name":"github.com/envoyproxy/go-control-plane/envoy","version":"v1.32.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/envoyproxy/go-control-plane/envoy/@v/v1.32.4.zip#github.com/envoyproxy/go-control-plane/envoy@v1.32.4/LICENSE"}}],"cpe":"cpe:2.3:a:envoyproxy:go-control-plane\\/envoy:v1.32.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4#envoy","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:envoyproxy:go_control_plane\\/envoy:v1.32.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1?package-id=a0559b8fcb70cb2f","type":"library","name":"github.com/envoyproxy/protoc-gen-validate","version":"v1.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/envoyproxy/protoc-gen-validate/@v/v1.2.1.zip#github.com/envoyproxy/protoc-gen-validate@v1.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:envoyproxy:protoc-gen-validate:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:envoyproxy:protoc_gen_validate:v1.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=d5e6198899daee7e","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=62beb9f5b781efb1","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=1e02106cb6ebeea4","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=cb051690d181c233","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/felixge/httpsnoop@v1.0.4?package-id=c901d5e81f25b249","type":"library","name":"github.com/felixge/httpsnoop","version":"v1.0.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/felixge/httpsnoop/@v/v1.0.4.zip#github.com/felixge/httpsnoop@v1.0.4/LICENSE.txt"}}],"cpe":"cpe:2.3:a:felixge:httpsnoop:v1.0.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/felixge/httpsnoop@v1.0.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?package-id=80e8c41308342846","type":"library","name":"github.com/fsnotify/fsnotify","version":"v1.9.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/fsnotify/fsnotify/@v/v1.9.0.zip#github.com/fsnotify/fsnotify@v1.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:fsnotify:fsnotify:v1.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=831fe61af73b9147","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=2de66667dfa130f9","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=d5943fbe3beaa11d","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=1ad16a54ed2f28c5","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible?package-id=f93d251151171bc4","type":"library","name":"github.com/go-chi/chi","version":"v4.1.2+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-chi/chi/@v/v4.1.2+incompatible.zip#github.com/go-chi/chi@v4.1.2+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:go-chi:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_chi:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-ini/ini@v1.67.0?package-id=32115deda06adada","type":"library","name":"github.com/go-ini/ini","version":"v1.67.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-ini/ini/@v/v1.67.0.zip#github.com/go-ini/ini@v1.67.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-ini:ini:v1.67.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-ini/ini@v1.67.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_ini:ini:v1.67.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:ini:v1.67.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-jose/go-jose@v4.0.5?package-id=36b333231e79d98a#v4","type":"library","name":"github.com/go-jose/go-jose/v4","version":"v4.0.5","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-jose/go-jose/v4/@v/v4.0.5.zip#github.com/go-jose/go-jose/v4@v4.0.5/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/go-jose/go-jose/v4/@v/v4.0.5.zip#github.com/go-jose/go-jose/v4@v4.0.5/json/LICENSE"}}],"cpe":"cpe:2.3:a:go-jose:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-jose/go-jose@v4.0.5#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go-jose:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_jose:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_jose:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=bd1d3e5ba0e9bfb1","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=a2bbea604cfa7200","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=fda7ea06592dbc40","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=ee59c03e7d282beb","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=e5872d58195061ff#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=7f555049bfdb22ec#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=dd14cd1e530f3d81#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=bb81d2fa42aca450#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3656a52531615238#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1f298e5178f0f0a2#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3eb3682621d00528#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1c4c20be5a74352a#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-logr/logr@v1.4.3?package-id=90817d8d0fa3e94e","type":"library","name":"github.com/go-logr/logr","version":"v1.4.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-logr/logr/@v/v1.4.3.zip#github.com/go-logr/logr@v1.4.3/LICENSE"}}],"cpe":"cpe:2.3:a:go-logr:logr:v1.4.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-logr/logr@v1.4.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_logr:logr:v1.4.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:logr:v1.4.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-logr/stdr@v1.2.2?package-id=fb15d49009e571a5","type":"library","name":"github.com/go-logr/stdr","version":"v1.2.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-logr/stdr/@v/v1.2.2.zip#github.com/go-logr/stdr@v1.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:go-logr:stdr:v1.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-logr/stdr@v1.2.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_logr:stdr:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:stdr:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/analysis@v0.23.0?package-id=f9fdf5fc55590e97","type":"library","name":"github.com/go-openapi/analysis","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/analysis/@v/v0.23.0.zip#github.com/go-openapi/analysis@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:analysis:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/analysis@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:analysis:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:analysis:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/errors@v0.22.0?package-id=0f17926ab738cdf9","type":"library","name":"github.com/go-openapi/errors","version":"v0.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/errors/@v/v0.22.0.zip#github.com/go-openapi/errors@v0.22.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:errors:v0.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/errors@v0.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:errors:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:errors:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/inflect@v0.21.0?package-id=eb3a0d70b1b77c64","type":"library","name":"github.com/go-openapi/inflect","version":"v0.21.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-openapi/inflect/@v/v0.21.0.zip#github.com/go-openapi/inflect@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:inflect:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/inflect@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:inflect:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:inflect:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FoBjBTQEcbg2cJUWX6uwL9OyIW8eqc9k4KhN4lfbeYk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0?package-id=f06d5883d33095f4","type":"library","name":"github.com/go-openapi/jsonpointer","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/jsonpointer/@v/v0.21.0.zip#github.com/go-openapi/jsonpointer@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:jsonpointer:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:jsonpointer:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:jsonpointer:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/jsonreference@v0.21.0?package-id=6928ba45ffb2aa76","type":"library","name":"github.com/go-openapi/jsonreference","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/jsonreference/@v/v0.21.0.zip#github.com/go-openapi/jsonreference@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:jsonreference:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/jsonreference@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:jsonreference:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:jsonreference:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/loads@v0.22.0?package-id=3c34dcb636bcd4ee","type":"library","name":"github.com/go-openapi/loads","version":"v0.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/loads/@v/v0.22.0.zip#github.com/go-openapi/loads@v0.22.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:loads:v0.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/loads@v0.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:loads:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:loads:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/runtime@v0.28.0?package-id=dceb9829096d1353","type":"library","name":"github.com/go-openapi/runtime","version":"v0.28.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/runtime/@v/v0.28.0.zip#github.com/go-openapi/runtime@v0.28.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-openapi/runtime/@v/v0.28.0.zip#github.com/go-openapi/runtime@v0.28.0/middleware/denco/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:runtime:v0.28.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/runtime@v0.28.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:runtime:v0.28.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:runtime:v0.28.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/spec@v0.21.0?package-id=196f0afbd4e7ba64","type":"library","name":"github.com/go-openapi/spec","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/LICENSE"}},{"license":{"name":"sha256:11280d39f759c157026dd0fad8742d9478191f15dc981b38d2d9e6a602987bba","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/license_test.go"}},{"license":{"name":"sha256:9ba36f66fba6f2e3b7dce95d9413a738688abcfce8c3d38c581b276f9437d1c6","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/license.go"}}],"cpe":"cpe:2.3:a:go-openapi:spec:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/spec@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:spec:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:spec:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/strfmt@v0.23.0?package-id=0aeebfa7ab4224ee","type":"library","name":"github.com/go-openapi/strfmt","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/strfmt/@v/v0.23.0.zip#github.com/go-openapi/strfmt@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:strfmt:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/strfmt@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:strfmt:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:strfmt:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/swag@v0.23.0?package-id=f1d8a9eb475739f4","type":"library","name":"github.com/go-openapi/swag","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/swag/@v/v0.23.0.zip#github.com/go-openapi/swag@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:swag:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/swag@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:swag:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:swag:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/validate@v0.24.0?package-id=ec70f68d0a6875d0","type":"library","name":"github.com/go-openapi/validate","version":"v0.24.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/validate/@v/v0.24.0.zip#github.com/go-openapi/validate@v0.24.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:validate:v0.24.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/validate@v0.24.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:validate:v0.24.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:validate:v0.24.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=09580f4007c841fc#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=3e411e71b19b728c#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=b1a427e5d3abba3b#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=1ef9a86c0dba97da#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-viper/mapstructure@v2.4.0?package-id=e524e8add11aefe6#v2","type":"library","name":"github.com/go-viper/mapstructure/v2","version":"v2.4.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-viper/mapstructure/v2/@v/v2.4.0.zip#github.com/go-viper/mapstructure/v2@v2.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-viper:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-viper/mapstructure@v2.4.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_viper:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible?package-id=76ce5e210fee0918","type":"library","name":"github.com/goadesign/goa","version":"v2.2.5+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/goadesign/goa/@v/v2.2.5+incompatible.zip#github.com/goadesign/goa@v2.2.5+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:goadesign:goa:v2.2.5\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:SLgzk0V+QfFs7MVz9sbDHelbTDI9B/d4W7Hl5udTynY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gobwas/glob@v0.2.3?package-id=673637cb391153df","type":"library","name":"github.com/gobwas/glob","version":"v0.2.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/gobwas/glob/@v/v0.2.3.zip#github.com/gobwas/glob@v0.2.3/LICENSE"}}],"cpe":"cpe:2.3:a:gobwas:glob:v0.2.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gobwas/glob@v0.2.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang-jwt/jwt@v4.5.2?package-id=5ab2d6f620ff174b#v4","type":"library","name":"github.com/golang-jwt/jwt/v4","version":"v4.5.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/golang-jwt/jwt/v4/@v/v4.5.2.zip#github.com/golang-jwt/jwt/v4@v4.5.2/LICENSE"}}],"cpe":"cpe:2.3:a:golang-jwt:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang-jwt/jwt@v4.5.2#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang_jwt:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang-jwt/jwt@v5.2.2?package-id=e8c96702be6e043a#v5","type":"library","name":"github.com/golang-jwt/jwt/v5","version":"v5.2.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/golang-jwt/jwt/v5/@v/v5.2.2.zip#github.com/golang-jwt/jwt/v5@v5.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:golang-jwt:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang-jwt/jwt@v5.2.2#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang_jwt:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=a709ab10b7f70081","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=81ad5a7203a1d871","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=f5372c52b2fd34a5","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=1a32c40755e6569e","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/snappy@v0.0.4?package-id=dd5ef1bf3f5e04f9","type":"library","name":"github.com/golang/snappy","version":"v0.0.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/snappy/@v/v0.0.4.zip#github.com/golang/snappy@v0.0.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:snappy:v0.0.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/snappy@v0.0.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=c5b5cd84e974d96c","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=bd5968f2afcc0ac3","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=192004540d7108a8","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=a970d450c768e802","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/certificate-transparency-go@v1.2.1?package-id=9e5ccce5924b4341","type":"library","name":"github.com/google/certificate-transparency-go","version":"v1.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/certificate-transparency-go/@v/v1.2.1.zip#github.com/google/certificate-transparency-go@v1.2.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/certificate-transparency-go/@v/v1.2.1.zip#github.com/google/certificate-transparency-go@v1.2.1/third_party/prometheus/LICENSE"}}],"cpe":"cpe:2.3:a:google:certificate-transparency-go:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/certificate-transparency-go@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:certificate_transparency_go:v1.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:4iW/NwzqOqYEEoCBEFP+jPbBXbLqMpq3CifMyOnDUME="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-cmp@v0.7.0?package-id=c78b751d993e9fbe","type":"library","name":"github.com/google/go-cmp","version":"v0.7.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/go-cmp/@v/v0.7.0.zip#github.com/google/go-cmp@v0.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-cmp:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-cmp@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_cmp:v0.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=f218f28c514368a2","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=7b7615f9c732e196","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=a54ae79f7278ff5b","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=5e213c869c2dbf74","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/s2a-go@v0.1.9?package-id=7a1389864cd6d13f","type":"library","name":"github.com/google/s2a-go","version":"v0.1.9","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/s2a-go/@v/v0.1.9.zip#github.com/google/s2a-go@v0.1.9/LICENSE.md"}}],"cpe":"cpe:2.3:a:google:s2a-go:v0.1.9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/s2a-go@v0.1.9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:s2a_go:v0.1.9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=eb4089a97fc4b824","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=c078af9202eb67fb","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=e69639bf52e19d1c","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=ee10cf9fe598515a","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/wire@v0.6.0?package-id=7c2a8843a50dda97","type":"library","name":"github.com/google/wire","version":"v0.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/wire/@v/v0.6.0.zip#github.com/google/wire@v0.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:wire:v0.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/wire@v0.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6?package-id=f3ffb85c873e294c","type":"library","name":"github.com/googleapis/enterprise-certificate-proxy","version":"v0.3.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googleapis/enterprise-certificate-proxy/@v/v0.3.6.zip#github.com/googleapis/enterprise-certificate-proxy@v0.3.6/LICENSE"}}],"cpe":"cpe:2.3:a:googleapis:enterprise-certificate-proxy:v0.3.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:googleapis:enterprise_certificate_proxy:v0.3.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googleapis/gax-go@v2.14.1?package-id=b45d298b550bdf23#v2","type":"library","name":"github.com/googleapis/gax-go/v2","version":"v2.14.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/googleapis/gax-go/v2/@v/v2.14.1.zip#github.com/googleapis/gax-go/v2@v2.14.1/LICENSE"}}],"cpe":"cpe:2.3:a:googleapis:gax-go\\/v2:v2.14.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/googleapis/gax-go@v2.14.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:googleapis:gax_go\\/v2:v2.14.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=8aa5a15ae995870a","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=89a381c67bb09fcd","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=754a4646b8d5bfb0","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=f7c3c61f9541e3cc","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0?package-id=5ca59ab756b5d1df","type":"library","name":"github.com/grpc-ecosystem/go-grpc-middleware","version":"v1.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-middleware/@v/v1.4.0.zip#github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0?package-id=146e3303564149c1#v2","type":"library","name":"github.com/grpc-ecosystem/go-grpc-middleware/v2","version":"v2.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-middleware/v2/@v/v2.1.0.zip#github.com/grpc-ecosystem/go-grpc-middleware/v2@v2.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99?package-id=303abf1a07dde40f","type":"library","name":"github.com/grpc-ecosystem/go-grpc-prometheus","version":"v1.2.1-0.20210315223345-82c243799c99","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-prometheus/@v/v1.2.1-0.20210315223345-82c243799c99.zip#github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=5d0b50ea309daf7d#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=d8362605b5f7bba7#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=a1eebd635a0ec603#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=ff52797c54226f91#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/errwrap@v1.1.0?package-id=c8d193cf3d3d5208","type":"library","name":"github.com/hashicorp/errwrap","version":"v1.1.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/errwrap/@v/v1.1.0.zip#github.com/hashicorp/errwrap@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:errwrap:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/errwrap@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2?package-id=4403b5c086d6844d","type":"library","name":"github.com/hashicorp/go-cleanhttp","version":"v0.5.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-cleanhttp/@v/v0.5.2.zip#github.com/hashicorp/go-cleanhttp@v0.5.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-cleanhttp:v0.5.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_cleanhttp:v0.5.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=f0554539af1194c4","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=20deff1e7bad1eca","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=8e211380b05c4b06","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=e0d2948a5094766b","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-multierror@v1.1.1?package-id=bb7e66578f669275","type":"library","name":"github.com/hashicorp/go-multierror","version":"v1.1.1","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-multierror/@v/v1.1.1.zip#github.com/hashicorp/go-multierror@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-multierror:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-multierror@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_multierror:v1.1.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=519b9b87f98927ad","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=95985da18f5e22b1","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=cafa939434ad6849","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=e48b4da1770afa58","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7?package-id=81674d20af43830a","type":"library","name":"github.com/hashicorp/go-retryablehttp","version":"v0.7.7","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-retryablehttp/@v/v0.7.7.zip#github.com/hashicorp/go-retryablehttp@v0.7.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:retryablehttp:v0.7.7:*:*:*:*:go:*:*","purl":"pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2?package-id=d87cb63fecb47921","type":"library","name":"github.com/hashicorp/go-rootcerts","version":"v1.0.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-rootcerts/@v/v1.0.2.zip#github.com/hashicorp/go-rootcerts@v1.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-rootcerts:v1.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_rootcerts:v1.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7?package-id=56ba1a1c5da75fa7#parseutil","type":"library","name":"github.com/hashicorp/go-secure-stdlib/parseutil","version":"v0.1.7","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-secure-stdlib/parseutil/@v/v0.1.7.zip#github.com/hashicorp/go-secure-stdlib/parseutil@v0.1.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-secure-stdlib\\/parseutil:v0.1.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7#parseutil","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_secure_stdlib\\/parseutil:v0.1.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2?package-id=d4a726e4fd1d30d5#strutil","type":"library","name":"github.com/hashicorp/go-secure-stdlib/strutil","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-secure-stdlib/strutil/@v/v0.1.2.zip#github.com/hashicorp/go-secure-stdlib/strutil@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-secure-stdlib\\/strutil:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2#strutil","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_secure_stdlib\\/strutil:v0.1.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5?package-id=00472b1e17d8e4fc","type":"library","name":"github.com/hashicorp/go-sockaddr","version":"v1.0.5","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-sockaddr/@v/v1.0.5.zip#github.com/hashicorp/go-sockaddr@v1.0.5/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-sockaddr:v1.0.5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_sockaddr:v1.0.5:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?package-id=fe6ee6a5b4e61613","type":"library","name":"github.com/hashicorp/golang-lru","version":"v1.0.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/@v/v1.0.2.zip#github.com/hashicorp/golang-lru@v1.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:golang-lru:v1.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:golang_lru:v1.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/golang-lru@v2.0.7?package-id=c9a0b90fbeb554b5#v2","type":"library","name":"github.com/hashicorp/golang-lru/v2","version":"v2.0.7","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/v2/@v/v2.0.7.zip#github.com/hashicorp/golang-lru/v2@v2.0.7/simplelru/LICENSE_list"}},{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/v2/@v/v2.0.7.zip#github.com/hashicorp/golang-lru/v2@v2.0.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:golang-lru\\/v2:v2.0.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/golang-lru@v2.0.7#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:golang_lru\\/v2:v2.0.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5?package-id=b65d0cda66da588f","type":"library","name":"github.com/hashicorp/hcl","version":"v1.0.1-vault-5","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/hcl/@v/v1.0.1-vault-5.zip#github.com/hashicorp/hcl@v1.0.1-vault-5/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:hcl:v1.0.1-vault-5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/hcl@v2.23.0?package-id=86c28d7af5c7c329#v2","type":"library","name":"github.com/hashicorp/hcl/v2","version":"v2.23.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/hcl/v2/@v/v2.23.0.zip#github.com/hashicorp/hcl/v2@v2.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:hcl\\/v2:v2.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/hcl@v2.23.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/vault@v1.16.0?package-id=ffba91e4de2dce61#api","type":"library","name":"github.com/hashicorp/vault/api","version":"v1.16.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/vault/api/@v/v1.16.0.zip#github.com/hashicorp/vault/api@v1.16.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:vault\\/api:v1.16.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/vault@v1.16.0#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nbEYGJiAPGzT9U4oWgaaB0g+Rj8E59QuHKyA5LhwQN4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=c377430d817c17dd","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=80ec3347f65f9063","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=492646b6007e49ec","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=29fb43cd2962eb24","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/imdario/mergo@v0.3.16?package-id=2eac58e895107531","type":"library","name":"github.com/imdario/mergo","version":"v0.3.16","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/imdario/mergo/@v/v0.3.16.zip#github.com/imdario/mergo@v0.3.16/LICENSE"}},{"license":{"name":"sha256:4f72fe957ed4e04e7edd2980165e25158b8a26bbe875327d6b89637f6db60d51","url":"https://proxy.golang.org/github.com/imdario/mergo/@v/v0.3.16.zip#github.com/imdario/mergo@v0.3.16/testdata/license.yml"}}],"cpe":"cpe:2.3:a:imdario:mergo:v0.3.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/imdario/mergo@v0.3.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0?package-id=4fc2df847e89d183","type":"library","name":"github.com/improbable-eng/grpc-web","version":"v0.15.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/improbable-eng/grpc-web/@v/v0.15.0.zip#github.com/improbable-eng/grpc-web@v0.15.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:improbable-eng:grpc-web:v0.15.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable-eng:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable_eng:grpc-web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable_eng:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable:grpc-web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=2c63849bc3d02a56","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c672598b9b353d42","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=30f470de4bd763d3","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c943f48f28ff29c8","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0?package-id=d86f38a835568fce","type":"library","name":"github.com/in-toto/in-toto-golang","version":"v0.9.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/in-toto-golang/@v/v0.9.0.zip#github.com/in-toto/in-toto-golang@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:in-toto-golang:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in-toto:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:in-toto-golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:in-toto-golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=7f50552cc0f341bf","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=a5fb3cc1c46db20a","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=3821e4b956d84344","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=ea387fce7a195090","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgpassfile@v1.0.0?package-id=fc90a6dc24a94c10","type":"library","name":"github.com/jackc/pgpassfile","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgpassfile/@v/v1.0.0.zip#github.com/jackc/pgpassfile@v1.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:pgpassfile:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgpassfile@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761?package-id=d5bbbda9af0b5db7","type":"library","name":"github.com/jackc/pgservicefile","version":"v0.0.0-20240606120523-5a60cdf6a761","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgservicefile/@v/v0.0.0-20240606120523-5a60cdf6a761.zip#github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:pgservicefile:v0.0.0-20240606120523-5a60cdf6a761:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgx@v5.7.2?package-id=48ac6ddf39a73211#v5","type":"library","name":"github.com/jackc/pgx/v5","version":"v5.7.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgx/v5/@v/v5.7.2.zip#github.com/jackc/pgx/v5@v5.7.2/LICENSE"}},{"license":{"name":"sha256:4b9071daf5f9975eb936c370200709bb7433862c5d4a32d21db65620133f4a8e","url":"https://proxy.golang.org/github.com/jackc/pgx/v5/@v/v5.7.2.zip#github.com/jackc/pgx/v5@v5.7.2/pgproto3/notice_response.go"}}],"cpe":"cpe:2.3:a:jackc:pgx\\/v5:v5.7.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgx@v5.7.2#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/puddle@v2.2.2?package-id=5946bd50e2bafc70#v2","type":"library","name":"github.com/jackc/puddle/v2","version":"v2.2.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/puddle/v2/@v/v2.2.2.zip#github.com/jackc/puddle/v2@v2.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:puddle\\/v2:v2.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/puddle@v2.2.2#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=55ef3c2f98d458e7#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=9c061dcb97d86801#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=f6a92e444bcf1dba#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=831798331ec72ec1#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267?package-id=9146b36f53e18d22","type":"library","name":"github.com/jedisct1/go-minisign","version":"v0.0.0-20230811132847-661be99b8267","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedisct1/go-minisign/@v/v0.0.0-20230811132847-661be99b8267.zip#github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267/LICENSE"}}],"cpe":"cpe:2.3:a:jedisct1:go-minisign:v0.0.0-20230811132847-661be99b8267:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedisct1:go_minisign:v0.0.0-20230811132847-661be99b8267:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/josharian/intern@v1.0.0?package-id=375bd940772b5112","type":"library","name":"github.com/josharian/intern","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/josharian/intern/@v/v1.0.0.zip#github.com/josharian/intern@v1.0.0/license.md"}}],"cpe":"cpe:2.3:a:josharian:intern:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/josharian/intern@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=a51c1ed59ac235b6","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=2788587718847dd6","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=183b708ed190a6b3","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=34566d6d108b781c","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/klauspost/compress@v1.18.0?package-id=38fec71e4cde6246","type":"library","name":"github.com/klauspost/compress","version":"v1.18.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/gzhttp/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/internal/lz4ref/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/internal/snapref/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/snappy/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/cmd/internal/filepathx/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/cmd/internal/readahead/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/snappy/xerial/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/zstd/internal/xxhash/LICENSE.txt"}}],"cpe":"cpe:2.3:a:klauspost:compress:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/klauspost/compress@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/kylelemons/godebug@v1.1.0?package-id=4678812fa04f717d","type":"library","name":"github.com/kylelemons/godebug","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/kylelemons/godebug/@v/v1.1.0.zip#github.com/kylelemons/godebug@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:kylelemons:godebug:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/kylelemons/godebug@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec?package-id=8aa7b3357e7d0080","type":"library","name":"github.com/letsencrypt/boulder","version":"v0.0.0-20240620165639-de9c06129bec","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/letsencrypt/boulder/@v/v0.0.0-20240620165639-de9c06129bec.zip#github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec/ocsp/responder/testdata/LICENSE"}},{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/letsencrypt/boulder/@v/v0.0.0-20240620165639-de9c06129bec.zip#github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec/LICENSE.txt"}}],"cpe":"cpe:2.3:a:letsencrypt:boulder:v0.0.0-20240620165639-de9c06129bec:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=45f59cb2f9906c68","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=5c6a32993694b68b","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677d378fed89cec5","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677a2b71f97847ad","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=4efdc889817fde22","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=a7015c7c03cd0220","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=afd2afa2d25e0b2f","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=23537ff564074bad","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=82811dc235b0ea9a","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=892879401868db3e","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=3a2f5fdaa8b76a2a","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=251fa42070b8e1f5","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=e2e8eef85cf14e1b","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=cdb9a8aad36b1428","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=28efaff8a0bb5995","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=1a05c8cd3eddba93","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?package-id=ffb0e9892861fe1d","type":"library","name":"github.com/mitchellh/go-homedir","version":"v1.1.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/go-homedir/@v/v1.1.0.zip#github.com/mitchellh/go-homedir@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:mitchellh:go-homedir:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/go-homedir@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mitchellh:go_homedir:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1?package-id=46269e7f390a7e59","type":"library","name":"github.com/mitchellh/go-wordwrap","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/go-wordwrap/@v/v1.0.1.zip#github.com/mitchellh/go-wordwrap@v1.0.1/LICENSE.md"}}],"cpe":"cpe:2.3:a:mitchellh:go-wordwrap:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mitchellh:go_wordwrap:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/mapstructure@v1.5.0?package-id=e454360c4c30677e","type":"library","name":"github.com/mitchellh/mapstructure","version":"v1.5.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/mapstructure/@v/v1.5.0.zip#github.com/mitchellh/mapstructure@v1.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:mitchellh:mapstructure:v1.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/mapstructure@v1.5.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible?package-id=751c4a54c4d06156","type":"library","name":"github.com/moby/moby","version":"v26.1.0+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/contrib/busybox/LICENSE"}},{"license":{"name":"sha256:b40ec5b16182103ef1cd69d42a21c98369e35bd483b3973902da4807c0755446","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/NOTICE"}}],"cpe":"cpe:2.3:a:moby:moby:v26.1.0\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mjepCwMH0KpCgPvrXjqqyCeTCHgzO7p9TwZ2nQMI2qU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=d199848386663b2a","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=fcf034275fb92db5","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=f4bc6aa705a417e3","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=6977296306a736dc","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?package-id=2e8a67d0a37c0c11","type":"library","name":"github.com/munnerz/goautoneg","version":"v0.0.0-20191010083416-a7dc8b61c822","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/munnerz/goautoneg/@v/v0.0.0-20191010083416-a7dc8b61c822.zip#github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822/LICENSE"}}],"cpe":"cpe:2.3:a:munnerz:goautoneg:v0.0.0-20191010083416-a7dc8b61c822:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nats.go@v1.34.0?package-id=e54b42463787b0dc","type":"library","name":"github.com/nats-io/nats.go","version":"v1.34.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nats.go/@v/v1.34.0.zip#github.com/nats-io/nats.go@v1.34.0/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nats.go:v1.34.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nats.go@v1.34.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nats.go:v1.34.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nats.go:v1.34.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fnxnPCNiwIG5w08rlMcEKTUw4AV/nKyGCOJE8TdhSPk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nkeys@v0.4.7?package-id=584bd6116fde734b","type":"library","name":"github.com/nats-io/nkeys","version":"v0.4.7","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nkeys/@v/v0.4.7.zip#github.com/nats-io/nkeys@v0.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nkeys:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nkeys@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nkeys:v0.4.7:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nkeys:v0.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nuid@v1.0.1?package-id=11f0db942d14c258","type":"library","name":"github.com/nats-io/nuid","version":"v1.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nuid/@v/v1.0.1.zip#github.com/nats-io/nuid@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nuid:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nuid@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nuid:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nuid:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481?package-id=73b7c1bb1efbc9f2","type":"library","name":"github.com/nozzle/throttler","version":"v0.0.0-20180817012639-2ea982251481","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nozzle/throttler/@v/v0.0.0-20180817012639-2ea982251481.zip#github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481/LICENSE"}}],"cpe":"cpe:2.3:a:nozzle:throttler:v0.0.0-20180817012639-2ea982251481:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=f9716f8bbd6a86d3","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=8e270da511dcf471","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=bc2cb77a3c64fb1d","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=504a7581f5de0d8a","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/ulid@v1.3.1?package-id=3ed6fb0e0b250709","type":"library","name":"github.com/oklog/ulid","version":"v1.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/ulid/@v/v1.3.1.zip#github.com/oklog/ulid@v1.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:ulid:v1.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/ulid@v1.3.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/open-policy-agent/opa@v1.6.0?package-id=fffbf5f8b5072dde","type":"library","name":"github.com/open-policy-agent/opa","version":"v1.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/gojsonschema/LICENSE-APACHE-2.0.txt"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/semver/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/edittree/bitvector/license.txt"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/jwx/LICENSE"}},{"license":{"name":"sha256:d64678da511cc3c76e1b20cd7074c102a62de0685d486eba144e3ff7b3ee60f3","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/providers/aws/NOTICE.txt"}}],"cpe":"cpe:2.3:a:open-policy-agent:opa:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/open-policy-agent/opa@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:open_policy_agent:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open-policy:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open_policy:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/S/cnNQJ2MUMNzizHPbisTWBHowmLkPrugY5jjkPlRQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opencontainers/go-digest@v1.0.0?package-id=6c70f6c5d8943923","type":"library","name":"github.com/opencontainers/go-digest","version":"v1.0.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opencontainers/go-digest/@v/v1.0.0.zip#github.com/opencontainers/go-digest@v1.0.0/LICENSE"}},{"license":{"id":"CC-BY-SA-4.0","url":"https://proxy.golang.org/github.com/opencontainers/go-digest/@v/v1.0.0.zip#github.com/opencontainers/go-digest@v1.0.0/LICENSE.docs"}}],"cpe":"cpe:2.3:a:opencontainers:go-digest:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opencontainers/go-digest@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opencontainers:go_digest:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opencontainers/image-spec@v1.1.1?package-id=49cd6c2b271fe64c","type":"library","name":"github.com/opencontainers/image-spec","version":"v1.1.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opencontainers/image-spec/@v/v1.1.1.zip#github.com/opencontainers/image-spec@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:opencontainers:image-spec:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opencontainers/image-spec@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opencontainers:image_spec:v1.1.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?package-id=fec1bf6deefcda93","type":"library","name":"github.com/opentracing/opentracing-go","version":"v1.2.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opentracing/opentracing-go/@v/v1.2.0.zip#github.com/opentracing/opentracing-go@v1.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:opentracing:opentracing-go:v1.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opentracing:opentracing_go:v1.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pelletier/go-toml@v2.2.4?package-id=413c3223db6885b6#v2","type":"library","name":"github.com/pelletier/go-toml/v2","version":"v2.2.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/pelletier/go-toml/v2/@v/v2.2.4.zip#github.com/pelletier/go-toml/v2@v2.2.4/LICENSE"}}],"cpe":"cpe:2.3:a:pelletier:go-toml\\/v2:v2.2.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pelletier/go-toml@v2.2.4#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:pelletier:go_toml\\/v2:v2.2.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?package-id=37fb8712c1644376","type":"library","name":"github.com/pkg/browser","version":"v0.0.0-20240102092130-5ac0b6a4141c","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/pkg/browser/@v/v0.0.0-20240102092130-5ac0b6a4141c.zip#github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c/LICENSE"}}],"cpe":"cpe:2.3:a:pkg:browser:v0.0.0-20240102092130-5ac0b6a4141c:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pkg/errors@v0.9.1?package-id=2360ee24db547993","type":"library","name":"github.com/pkg/errors","version":"v0.9.1","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/pkg/errors/@v/v0.9.1.zip#github.com/pkg/errors@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:pkg:errors:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pkg/errors@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/client_golang@v1.22.0?package-id=ba59e8a4375c665a","type":"library","name":"github.com/prometheus/client_golang","version":"v1.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/internal/github.com/golang/gddo/LICENSE"}},{"license":{"name":"sha256:8548bfb2bc1913396df38c548a6ec60b8dbcac3b0800485a40569c8bdd184471","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:client-golang:v1.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/client_golang@v1.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:prometheus:client_golang:v1.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/client_model@v0.6.2?package-id=28d58289653e68aa","type":"library","name":"github.com/prometheus/client_model","version":"v0.6.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/client_model/@v/v0.6.2.zip#github.com/prometheus/client_model@v0.6.2/LICENSE"}},{"license":{"name":"sha256:6c79faa15168885fb88a316ae0df18f486deafddefdc16826cdc56dfbd421e24","url":"https://proxy.golang.org/github.com/prometheus/client_model/@v/v0.6.2.zip#github.com/prometheus/client_model@v0.6.2/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:client-model:v0.6.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/client_model@v0.6.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:prometheus:client_model:v0.6.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/common@v0.63.0?package-id=3396cbd5ea3cdd5e","type":"library","name":"github.com/prometheus/common","version":"v0.63.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/common/@v/v0.63.0.zip#github.com/prometheus/common@v0.63.0/LICENSE"}},{"license":{"name":"sha256:600244c8052c8c1d307043fafacbc83b429c171dd8e08f5a537c0a54014585ee","url":"https://proxy.golang.org/github.com/prometheus/common/@v/v0.63.0.zip#github.com/prometheus/common@v0.63.0/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:common:v0.63.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/common@v0.63.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/procfs@v0.16.1?package-id=4ba421c4157a075a","type":"library","name":"github.com/prometheus/procfs","version":"v0.16.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/procfs/@v/v0.16.1.zip#github.com/prometheus/procfs@v0.16.1/LICENSE"}},{"license":{"name":"sha256:497fcdb9fae55924c12f55f05cbe83a096662e5c591d79b74e4a8f23bab5ffee","url":"https://proxy.golang.org/github.com/prometheus/procfs/@v/v0.16.1.zip#github.com/prometheus/procfs@v0.16.1/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:procfs:v0.16.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/procfs@v0.16.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9?package-id=d68b41c72972f980","type":"library","name":"github.com/rcrowley/go-metrics","version":"v0.0.0-20250401214520-65e299d6c5c9","licenses":[{"license":{"id":"BSD-2-Clause-Views","url":"https://proxy.golang.org/github.com/rcrowley/go-metrics/@v/v0.0.0-20250401214520-65e299d6c5c9.zip#github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9/LICENSE"}}],"cpe":"cpe:2.3:a:rcrowley:go-metrics:v0.0.0-20250401214520-65e299d6c5c9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:rcrowley:go_metrics:v0.0.0-20250401214520-65e299d6c5c9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=26670e6d26c61375","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=46c6a48df530e826","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=7a3e880a3ff477b6","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=c4f0d3acc64e8a84","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/cors@v1.11.0?package-id=75b9b988256ae5dc","type":"library","name":"github.com/rs/cors","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/cors/@v/v1.11.0.zip#github.com/rs/cors@v1.11.0/LICENSE"}}],"cpe":"cpe:2.3:a:rs:cors:v1.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/cors@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ba121567cc067a37","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ec57861ae0738879","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=5a7c2d2cc0752498","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=a6567b0f41d46330","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/ryanuber/go-glob@v1.0.0?package-id=a496fe059de8f7d2","type":"library","name":"github.com/ryanuber/go-glob","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/ryanuber/go-glob/@v/v1.0.0.zip#github.com/ryanuber/go-glob@v1.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:ryanuber:go-glob:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/ryanuber/go-glob@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:ryanuber:go_glob:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sagikazarmark/locafero@v0.7.0?package-id=8fda646d7df9e7a9","type":"library","name":"github.com/sagikazarmark/locafero","version":"v0.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sagikazarmark/locafero/@v/v0.7.0.zip#github.com/sagikazarmark/locafero@v0.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:sagikazarmark:locafero:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sagikazarmark/locafero@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=3ebe647b2b7a0fd2#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=312080e827250f9f#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=6ffdbec30efea770#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=b6cae4a0031d28c9#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible?package-id=57d48b6338ba4447","type":"library","name":"github.com/sassoftware/relic","version":"v7.2.1+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sassoftware/relic/@v/v7.2.1+incompatible.zip#github.com/sassoftware/relic@v7.2.1+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:sassoftware:relic:v7.2.1\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=5e815f65fbbededf","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=831ff9a8f3c979eb","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=84270e0cb713b341","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=d758de4faa5efa02","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/shibumi/go-pathspec@v1.3.0?package-id=d67d872c4177113d","type":"library","name":"github.com/shibumi/go-pathspec","version":"v1.3.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/shibumi/go-pathspec/@v/v1.3.0.zip#github.com/shibumi/go-pathspec@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:shibumi:go-pathspec:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/shibumi/go-pathspec@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:shibumi:go_pathspec:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/cosign@v2.4.1?package-id=03cfd2c433da4add#v2","type":"library","name":"github.com/sigstore/cosign/v2","version":"v2.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/cosign/v2/@v/v2.4.1.zip#github.com/sigstore/cosign/v2@v2.4.1/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:cosign\\/v2:v2.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/cosign@v2.4.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:b8UXEfJFks3hmTwyxrRNrn6racpmccUycBHxDMkEPvU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/fulcio@v1.6.3?package-id=f8baa9f2ffac0f22","type":"library","name":"github.com/sigstore/fulcio","version":"v1.6.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/fulcio/@v/v1.6.3.zip#github.com/sigstore/fulcio@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:fulcio:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/fulcio@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mvm/bP6ELHgazqZehL8TANS1maAkRoM23CRAdkM4xQI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=9e39a559192d9d43","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=05c1d24775970882","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=fd17d0d46e4be5f0","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=0f62165063737ef3","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/rekor@v1.3.6?package-id=c3584927ec4886b0","type":"library","name":"github.com/sigstore/rekor","version":"v1.3.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/rekor/@v/v1.3.6.zip#github.com/sigstore/rekor@v1.3.6/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:rekor:v1.3.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/rekor@v1.3.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QvpMMJVWAp69a3CHzdrLelqEqpTM3ByQRt5B5Kspbi8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/sigstore@v1.8.9?package-id=d7c5e2057451495d","type":"library","name":"github.com/sigstore/sigstore","version":"v1.8.9","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/sigstore/@v/v1.8.9.zip#github.com/sigstore/sigstore@v1.8.9/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:sigstore:v1.8.9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/sigstore@v1.8.9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NiUZIVWywgYuVTxXmRoTT4O4QAGiTEKup4N1wdxFadk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/sigstore-go@v0.6.1?package-id=a192b09bb8ac2b12","type":"library","name":"github.com/sigstore/sigstore-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/sigstore-go/@v/v0.6.1.zip#github.com/sigstore/sigstore-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:sigstore-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/sigstore-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:sigstore_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:tGkkv1oDIER+QYU5MrjqlttQOVDWfSkmYwMqkJhB/cg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2?package-id=363ab614c878c9aa","type":"library","name":"github.com/sigstore/timestamp-authority","version":"v1.2.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/timestamp-authority/@v/v1.2.2.zip#github.com/sigstore/timestamp-authority@v1.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:timestamp-authority:v1.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:timestamp_authority:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:X4qyutnCQqJ0apMewFyx+3t7Tws00JQ/JonBiu3QvLE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sirupsen/logrus@v1.9.3?package-id=9fe179472ead2c12","type":"library","name":"github.com/sirupsen/logrus","version":"v1.9.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sirupsen/logrus/@v/v1.9.3.zip#github.com/sirupsen/logrus@v1.9.3/LICENSE"}}],"cpe":"cpe:2.3:a:sirupsen:logrus:v1.9.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sirupsen/logrus@v1.9.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sourcegraph/conc@v0.3.0?package-id=a67352f726c85707","type":"library","name":"github.com/sourcegraph/conc","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sourcegraph/conc/@v/v0.3.0.zip#github.com/sourcegraph/conc@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:sourcegraph:conc:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sourcegraph/conc@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/afero@v1.12.0?package-id=a51fa46d067f2f92","type":"library","name":"github.com/spf13/afero","version":"v1.12.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spf13/afero/@v/v1.12.0.zip#github.com/spf13/afero@v1.12.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:spf13:afero:v1.12.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/afero@v1.12.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/cast@v1.7.1?package-id=041498db4977f256","type":"library","name":"github.com/spf13/cast","version":"v1.7.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/spf13/cast/@v/v1.7.1.zip#github.com/spf13/cast@v1.7.1/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:cast:v1.7.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/cast@v1.7.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/cobra@v1.9.1?package-id=fcc4bdd1cadd331a","type":"library","name":"github.com/spf13/cobra","version":"v1.9.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spf13/cobra/@v/v1.9.1.zip#github.com/spf13/cobra@v1.9.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:spf13:cobra:v1.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/cobra@v1.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/pflag@v1.0.6?package-id=f97be186276d93aa","type":"library","name":"github.com/spf13/pflag","version":"v1.0.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/spf13/pflag/@v/v1.0.6.zip#github.com/spf13/pflag@v1.0.6/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:pflag:v1.0.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/pflag@v1.0.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/viper@v1.20.1?package-id=ab3bcc5d5ff8530f","type":"library","name":"github.com/spf13/viper","version":"v1.20.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/spf13/viper/@v/v1.20.1.zip#github.com/spf13/viper@v1.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:viper:v1.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/viper@v1.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spiffe/go-spiffe@v2.5.0?package-id=85d997951c37d5c3#v2","type":"library","name":"github.com/spiffe/go-spiffe/v2","version":"v2.5.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spiffe/go-spiffe/v2/@v/v2.5.0.zip#github.com/spiffe/go-spiffe/v2@v2.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:spiffe:go-spiffe\\/v2:v2.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spiffe/go-spiffe@v2.5.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:spiffe:go_spiffe\\/v2:v2.5.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=e6afe4f522ea6683","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=3817cc426cfb808c","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=0ee1a83a49b4c64b","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=02686d6216219020","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/subosito/gotenv@v1.6.0?package-id=4a8f33d4149fa817","type":"library","name":"github.com/subosito/gotenv","version":"v1.6.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/subosito/gotenv/@v/v1.6.0.zip#github.com/subosito/gotenv@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:subosito:gotenv:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/subosito/gotenv@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d?package-id=5ef412fac3cbf7e9","type":"library","name":"github.com/syndtr/goleveldb","version":"v1.0.1-0.20220721030215-126854af5e6d","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/syndtr/goleveldb/@v/v1.0.1-0.20220721030215-126854af5e6d.zip#github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d/LICENSE"}}],"cpe":"cpe:2.3:a:syndtr:goleveldb:v1.0.1-0.20220721030215-126854af5e6d:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/tchap/go-patricia@v2.3.2?package-id=076464ff44d0c48b#v2","type":"library","name":"github.com/tchap/go-patricia/v2","version":"v2.3.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/tchap/go-patricia/v2/@v/v2.3.2.zip#github.com/tchap/go-patricia/v2@v2.3.2/LICENSE"}}],"cpe":"cpe:2.3:a:tchap:go-patricia\\/v2:v2.3.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/tchap/go-patricia@v2.3.2#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:tchap:go_patricia\\/v2:v2.3.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0?package-id=07913fd074f4bb4e","type":"library","name":"github.com/theupdateframework/go-tuf","version":"v0.7.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/@v/v0.7.0.zip#github.com/theupdateframework/go-tuf@v0.7.0/LICENSE"}},{"license":{"name":"sha256:cd65721176ce5fdbb05773c0b1349f993b94ce77a51062cfa7a78b34cc82fc71","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/@v/v0.7.0.zip#github.com/theupdateframework/go-tuf@v0.7.0/client/python_interop/testdata/LICENSE.txt"}}],"cpe":"cpe:2.3:a:theupdateframework:go-tuf:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:theupdateframework:go_tuf:v0.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1?package-id=76760a99ffedbe62#v2","type":"library","name":"github.com/theupdateframework/go-tuf/v2","version":"v2.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/v2/@v/v2.0.1.zip#github.com/theupdateframework/go-tuf/v2@v2.0.1/LICENSE"}},{"license":{"name":"sha256:86ce5e2bb72f603a8849e085524022bdac6668df4f0baca507033610237365f3","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/v2/@v/v2.0.1.zip#github.com/theupdateframework/go-tuf/v2@v2.0.1/NOTICE"}}],"cpe":"cpe:2.3:a:theupdateframework:go-tuf\\/v2:v2.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:theupdateframework:go_tuf\\/v2:v2.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:11p9tXpq10KQEujxjcIjDSivMKCMLguls7erXHZnxJQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399?package-id=d1ef9fdb1b0b7d43","type":"library","name":"github.com/titanous/rocacheck","version":"v0.0.0-20171023193734-afe73141d399","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/titanous/rocacheck/@v/v0.0.0-20171023193734-afe73141d399.zip#github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399/LICENSE"}}],"cpe":"cpe:2.3:a:titanous:rocacheck:v0.0.0-20171023193734-afe73141d399:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/transparency-dev/merkle@v0.0.2?package-id=ad385bf50623e9b9","type":"library","name":"github.com/transparency-dev/merkle","version":"v0.0.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/transparency-dev/merkle/@v/v0.0.2.zip#github.com/transparency-dev/merkle@v0.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:transparency-dev:merkle:v0.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/transparency-dev/merkle@v0.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:transparency_dev:merkle:v0.0.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:transparency:merkle:v0.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/vbatts/tar-split@v0.11.6?package-id=4a9e94de8b24b30f","type":"library","name":"github.com/vbatts/tar-split","version":"v0.11.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/vbatts/tar-split/@v/v0.11.6.zip#github.com/vbatts/tar-split@v0.11.6/LICENSE"}}],"cpe":"cpe:2.3:a:vbatts:tar-split:v0.11.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/vbatts/tar-split@v0.11.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:vbatts:tar_split:v0.11.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/vektah/gqlparser@v2.5.28?package-id=904b164e13443ce7#v2","type":"library","name":"github.com/vektah/gqlparser/v2","version":"v2.5.28","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/vektah/gqlparser/v2/@v/v2.5.28.zip#github.com/vektah/gqlparser/v2@v2.5.28/validator/imported/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/vektah/gqlparser/v2/@v/v2.5.28.zip#github.com/vektah/gqlparser/v2@v2.5.28/LICENSE"}}],"cpe":"cpe:2.3:a:vektah:gqlparser\\/v2:v2.5.28:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/vektah/gqlparser@v2.5.28#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bIulcl3LF69ba6EiZVGD88y4MkM+Jxrf3P2MX8xLRkY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=1afeb7fa0c88e9b6#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=c486262f6d6f8d4e#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=9d063d199f36b49a#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=91eff46e7d1353aa#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb?package-id=bb70c229bf71cc4f","type":"library","name":"github.com/xeipuuv/gojsonpointer","version":"v0.0.0-20190905194746-02993c407bfb","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/xeipuuv/gojsonpointer/@v/v0.0.0-20190905194746-02993c407bfb.zip#github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb/LICENSE-APACHE-2.0.txt"}}],"cpe":"cpe:2.3:a:xeipuuv:gojsonpointer:v0.0.0-20190905194746-02993c407bfb:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415?package-id=99db612f912a11c5","type":"library","name":"github.com/xeipuuv/gojsonreference","version":"v0.0.0-20180127040603-bd5ef7bd5415","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/xeipuuv/gojsonreference/@v/v0.0.0-20180127040603-bd5ef7bd5415.zip#github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415/LICENSE-APACHE-2.0.txt"}}],"cpe":"cpe:2.3:a:xeipuuv:gojsonreference:v0.0.0-20180127040603-bd5ef7bd5415:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0?package-id=282f35c4b1f6d2bd","type":"library","name":"github.com/yashtewari/glob-intersection","version":"v0.2.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/yashtewari/glob-intersection/@v/v0.2.0.zip#github.com/yashtewari/glob-intersection@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:yashtewari:glob-intersection:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:yashtewari:glob_intersection:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zclconf/go-cty@v1.16.2?package-id=f20005539e6795e9","type":"library","name":"github.com/zclconf/go-cty","version":"v1.16.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zclconf/go-cty/@v/v1.16.2.zip#github.com/zclconf/go-cty@v1.16.2/LICENSE"}}],"cpe":"cpe:2.3:a:zclconf:go-cty:v1.16.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zclconf/go-cty@v1.16.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:zclconf:go_cty:v1.16.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0?package-id=3874ac0272f9bee5","type":"library","name":"github.com/zclconf/go-cty-yaml","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/LICENSE.libyaml"}},{"license":{"name":"sha256:13f60e7195649c2b90ba7002c7148874ca799c831735216df58cf8bb79402322","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/NOTICE"}}],"cpe":"cpe:2.3:a:zclconf:go-cty-yaml:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:zclconf:go_cty_yaml:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nP+jp0qPHv2IhUVqmQSzjvqAWcObN0KBkUl2rWBdig0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zeebo/errs@v1.4.0?package-id=50865a0ab5462184","type":"library","name":"github.com/zeebo/errs","version":"v1.4.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zeebo/errs/@v/v1.4.0.zip#github.com/zeebo/errs@v1.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:zeebo:errs:v1.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zeebo/errs@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.mongodb.org/mongo-driver@v1.14.0?package-id=79335c76ac742872","type":"library","name":"go.mongodb.org/mongo-driver","version":"v1.14.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.mongodb.org/mongo-driver/@v/v1.14.0.zip#go.mongodb.org/mongo-driver@v1.14.0/LICENSE"}}],"purl":"pkg:golang/go.mongodb.org/mongo-driver@v1.14.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0?package-id=2389f138092105a7","type":"library","name":"go.opentelemetry.io/auto/sdk","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/auto/sdk/@v/v1.1.0.zip#go.opentelemetry.io/auto/sdk@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:auto:sdk:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0?package-id=947897b6c35d0bea#gcp","type":"library","name":"go.opentelemetry.io/contrib/detectors/gcp","version":"v1.34.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/detectors/gcp/@v/v1.34.0.zip#go.opentelemetry.io/contrib/detectors/gcp@v1.34.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:detectors\\/gcp:v1.34.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0#gcp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0?package-id=d17d8ef0b84597f1#google.golang.org/grpc/otelgrpc","type":"library","name":"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc","version":"v0.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/@v/v0.60.0.zip#go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc@v0.60.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:instrumentation\\/google.golang.org\\/grpc\\/otelgrpc:v0.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0#google.golang.org/grpc/otelgrpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0?package-id=e659c3247ca4ea17#net/http/otelhttp","type":"library","name":"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp","version":"v0.61.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/@v/v0.61.0.zip#go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.61.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:instrumentation\\/net\\/http\\/otelhttp:v0.61.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0#net/http/otelhttp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel@v1.36.0?package-id=750c8cdf1e715b3d","type":"library","name":"go.opentelemetry.io/otel","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/@v/v1.36.0.zip#go.opentelemetry.io/otel@v1.36.0/LICENSE"}}],"purl":"pkg:golang/go.opentelemetry.io/otel@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0?package-id=f5280a8e73526779","type":"library","name":"go.opentelemetry.io/otel/metric","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/metric/@v/v1.36.0.zip#go.opentelemetry.io/otel/metric@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:metric:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=dbe4622886a7eb23","type":"library","name":"go.opentelemetry.io/otel/sdk","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/sdk/@v/v1.36.0.zip#go.opentelemetry.io/otel/sdk@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:sdk:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=2f79f854422b4e6b#metric","type":"library","name":"go.opentelemetry.io/otel/sdk/metric","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/sdk/metric/@v/v1.36.0.zip#go.opentelemetry.io/otel/sdk/metric@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:sdk\\/metric:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0#metric","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0?package-id=8e6777f9e3937c9a","type":"library","name":"go.opentelemetry.io/otel/trace","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/trace/@v/v1.36.0.zip#go.opentelemetry.io/otel/trace@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:trace:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.step.sm/crypto@v0.51.2?package-id=0b7ba6230440bae9","type":"library","name":"go.step.sm/crypto","version":"v0.51.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/internal/utils/utfbom/LICENSE"}},{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/internal/bcrypt_pbkdf/LICENSE"}}],"purl":"pkg:golang/go.step.sm/crypto@v0.51.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5EiCGIMg7IvQTGmJrwRosbXeprtT80OhoS/PJarg60o="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=3616c5a233680802","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=ae5c7aef61b60ede","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=f280d904397a39ce","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=aba8aea3b9fb97ec","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=ea2962d9f09e39f6","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=a21da72ed70aaf0e","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=c86a603927e0ee21","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=89b56947df944587","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/goa.design/goa@v2.2.5%2Bincompatible?package-id=8ec7a6ac6a99e82d","type":"library","name":"goa.design/goa","version":"v2.2.5+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/goa.design/goa/@v/v2.2.5+incompatible.zip#goa.design/goa@v2.2.5+incompatible/LICENSE"}}],"purl":"pkg:golang/goa.design/goa@v2.2.5%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mjAtiy7ZdZIkj974hpFxCR6bL69qprfV00Veu3Vybts="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=ba6a2ecacf7e5510","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=1acb772cccf69586","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=31a548c3ace1a87e","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=55c317c948b27d75","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=37c6a231ba3db4c5","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=449c43c79ddffda6","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=e29946d1fbabc7c6","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=08de3f7d19d06529","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/mod@v0.29.0?package-id=7f41366fb70070b3","type":"library","name":"golang.org/x/mod","version":"v0.29.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/mod/@v/v0.29.0.zip#golang.org/x/mod@v0.29.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/mod:v0.29.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/mod@v0.29.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=6b3b1afdab5bff0c","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=f7ecedbec1f16008","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=e8c099d5a1f3d773","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=e9404f5605699c07","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/oauth2@v0.30.0?package-id=b00071d52c186fdc","type":"library","name":"golang.org/x/oauth2","version":"v0.30.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/oauth2/@v/v0.30.0.zip#golang.org/x/oauth2@v0.30.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/oauth2:v0.30.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/oauth2@v0.30.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sync@v0.18.0?package-id=b9eebbfdeabf6835","type":"library","name":"golang.org/x/sync","version":"v0.18.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sync/@v/v0.18.0.zip#golang.org/x/sync@v0.18.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sync:v0.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sync@v0.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=8ed33a3fa34b3bad","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=fd59895cdad1b945","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=5878c8eb708573fe","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=fc6de1d47d31929c","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/term@v0.37.0?package-id=67f320a45385d632","type":"library","name":"golang.org/x/term","version":"v0.37.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/term/@v/v0.37.0.zip#golang.org/x/term@v0.37.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/term:v0.37.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/term@v0.37.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=9f93033556a3e7c6","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=6c5c5d29f81fa5c6","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=e013e22bd88d997d","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=d93788a4490de800","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/time@v0.11.0?package-id=b71333688b641fdb","type":"library","name":"golang.org/x/time","version":"v0.11.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/time/@v/v0.11.0.zip#golang.org/x/time@v0.11.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/time:v0.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/time@v0.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/api@v0.233.0?package-id=53ece5b247645b00","type":"library","name":"google.golang.org/api","version":"v0.233.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/api/@v/v0.233.0.zip#google.golang.org/api@v0.233.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/api/@v/v0.233.0.zip#google.golang.org/api@v0.233.0/internal/third_party/uritemplates/LICENSE"}}],"cpe":"cpe:2.3:a:google:api:v0.233.0:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/api@v0.233.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iGZfjXAJiUFSSaekVB7LzXl6tRfEKhUN7FkZN++07tI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb?package-id=0e616ace83e4891b","type":"library","name":"google.golang.org/genproto","version":"v0.0.0-20250303144028-a0af3efb3deb","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/@v/v0.0.0-20250303144028-a0af3efb3deb.zip#google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250303144028-a0af3efb3deb:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=c99e85a81cdb82c8#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=929a0a0b01ae1148#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=b7f068e4fee3d9ae#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=9a4ddc6747229345#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2?package-id=643149bbba8adf45#bytestream","type":"library","name":"google.golang.org/genproto/googleapis/bytestream","version":"v0.0.0-20250505200425-f936aa4a68b2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/bytestream/@v/v0.0.0-20250505200425-f936aa4a68b2.zip#google.golang.org/genproto/googleapis/bytestream@v0.0.0-20250505200425-f936aa4a68b2/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250505200425-f936aa4a68b2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2#bytestream","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DbpkGFGRkd4GORg+IWQW2EhxUaa/My/PM8d1CGyTDMY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=2425b3dd1423c423#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=8e28b2fbdf57da53#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=5d9d6c1b1a9a5f87#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=970a97e1cfafadd3#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=4f2f5da79d52f9ac","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=2091eecfa7eb4b1f","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=1dd8f9a88116e8b2","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=9d7ce4ac8ec41338","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=b2f2ed000f228add","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=14a90e9027eb6aba","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=da57caf889d11b40","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=953eadb614af7da9","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v2@v2.4.0?package-id=a2b03ddc6fa94e5f","type":"library","name":"gopkg.in/yaml.v2","version":"v2.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/LICENSE.libyaml"}}],"purl":"pkg:golang/gopkg.in/yaml.v2@v2.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=7fbe175931da9944","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=c5a23787b8526cc2","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1514a584b70e13ce","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=a02c8cc4dd1588ac","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=de533d8c18fe73e6","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=29c719ea8826697d","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=23c20b13799cbd61","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=adbffd440580540e","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/klog/v2@v2.120.1?package-id=c154b07c875996b9","type":"library","name":"k8s.io/klog/v2","version":"v2.120.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/klog/v2/@v/v2.120.1.zip#k8s.io/klog/v2@v2.120.1/LICENSE"}}],"cpe":"cpe:2.3:a:klog:v2:v2.120.1:*:*:*:*:*:*:*","purl":"pkg:golang/k8s.io/klog/v2@v2.120.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=ca6764c0602ab7ea","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=4e83502b30cbeac1","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=7f6d282b21b57645","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=96e0da6c18f8895a","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/nhooyr.io/websocket@v1.8.10?package-id=0f4456df679cfa47","type":"library","name":"nhooyr.io/websocket","version":"v1.8.10","licenses":[{"license":{"id":"ISC","url":"https://proxy.golang.org/nhooyr.io/websocket/@v/v1.8.10.zip#nhooyr.io/websocket@v1.8.10/LICENSE.txt"}}],"purl":"pkg:golang/nhooyr.io/websocket@v1.8.10","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/sigs.k8s.io/yaml@v1.4.0?package-id=6a1c0b030cc12f11","type":"library","name":"sigs.k8s.io/yaml","version":"v1.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/NOTICE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/NOTICE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/LICENSE.libyaml"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/LICENSE"}}],"purl":"pkg:golang/sigs.k8s.io/yaml@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=32e9973a0467da41","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=4544fe6d1a31dc26","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=d7129e05ab4c678a","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=6120b838505e29a8","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"83b862befcdcb449","type":"file","name":"/control-plane","hashes":[{"alg":"SHA-1","content":"e52b5a42c9007d86c4716426baa5b013977c159a"},{"alg":"SHA-256","content":"8644bbae888cc0dea0707334abd9fa7755dce0f5024475ce6c2d24ce3f62dc33"}]},{"bom-ref":"8cddf93201a11996","type":"file","name":"/plugins/chainloop-plugin-discord-webhook","hashes":[{"alg":"SHA-1","content":"8ed5e3ba74a0b898d6e38de7eabc8de7a765ea15"},{"alg":"SHA-256","content":"5a6b7b416b162c25156a244bab13c55896b61a6ae9756fea7e534ccca67e0fb8"}]},{"bom-ref":"3204fd42f76e7368","type":"file","name":"/plugins/chainloop-plugin-dependency-track","hashes":[{"alg":"SHA-1","content":"73d95d6f158f47f110227bb2998c5f050cf259cd"},{"alg":"SHA-256","content":"44a58bcb25ab72b9ae47584f9a00b1f69de0452aebb719c4b19c745f0eee2784"}]},{"bom-ref":"1b4647ea29d7931f","type":"file","name":"/plugins/chainloop-plugin-smtp","hashes":[{"alg":"SHA-1","content":"60f6e9977c0a3ad9cbf3f784f3c5618f293fcdec"},{"alg":"SHA-256","content":"f722f2594fea1dfc6cbab4aa9ec182aad7134500ea3c427a2f4f2ec7b22fca77"}]}],"dependencies":[{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=07be1822274ac6c2","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=c6c3f160ac2104ef#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=7767baf99c2c72da#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=851d702929c90d6b","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=424dc008cddfac27","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=063662c0e5be2d12","pkg:golang/github.com/fatih/color@v1.18.0?package-id=cb051690d181c233","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=1ad16a54ed2f28c5","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=ee59c03e7d282beb","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=bb81d2fa42aca450#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1c4c20be5a74352a#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=1ef9a86c0dba97da#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=1a32c40755e6569e","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=a970d450c768e802","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=5e213c869c2dbf74","pkg:golang/github.com/google/uuid@v1.6.0?package-id=ee10cf9fe598515a","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=f7c3c61f9541e3cc","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=ff52797c54226f91#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=e0d2948a5094766b","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=e48b4da1770afa58","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=29fb43cd2962eb24","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c943f48f28ff29c8","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=ea387fce7a195090","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=831798331ec72ec1#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=34566d6d108b781c","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677a2b71f97847ad","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=23537ff564074bad","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=251fa42070b8e1f5","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=1a05c8cd3eddba93","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=6977296306a736dc","pkg:golang/github.com/oklog/run@v1.1.0?package-id=504a7581f5de0d8a","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=c4f0d3acc64e8a84","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=a6567b0f41d46330","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=b6cae4a0031d28c9#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=d758de4faa5efa02","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=0f62165063737ef3","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=02686d6216219020","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=91eff46e7d1353aa#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=aba8aea3b9fb97ec","pkg:golang/go.uber.org/zap@v1.27.0?package-id=89b56947df944587","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=55c317c948b27d75","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=08de3f7d19d06529","pkg:golang/golang.org/x/net@v0.47.0?package-id=e9404f5605699c07","pkg:golang/golang.org/x/sys@v0.38.0?package-id=fc6de1d47d31929c","pkg:golang/golang.org/x/text@v0.31.0?package-id=d93788a4490de800","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=970a97e1cfafadd3#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=9a4ddc6747229345#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=9d7ce4ac8ec41338","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=953eadb614af7da9","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=a02c8cc4dd1588ac","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=adbffd440580540e","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=96e0da6c18f8895a","pkg:golang/stdlib@1.25.3?package-id=6120b838505e29a8"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=54b2042dbb967bfb","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=576a923b75b0414a#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9778da3f20bdc413#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=0107fda3b9a62652","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7ce5bfe8a2d6da39","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=6579eb971ced0e83","pkg:golang/github.com/fatih/color@v1.18.0?package-id=62beb9f5b781efb1","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=2de66667dfa130f9","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=a2bbea604cfa7200","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=7f555049bfdb22ec#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1f298e5178f0f0a2#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=3e411e71b19b728c#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=81ad5a7203a1d871","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=bd5968f2afcc0ac3","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=7b7615f9c732e196","pkg:golang/github.com/google/uuid@v1.6.0?package-id=c078af9202eb67fb","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=89a381c67bb09fcd","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=d8362605b5f7bba7#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=20deff1e7bad1eca","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=95985da18f5e22b1","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=80ec3347f65f9063","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c672598b9b353d42","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=a5fb3cc1c46db20a","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=9c061dcb97d86801#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=2788587718847dd6","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=5c6a32993694b68b","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=a7015c7c03cd0220","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=892879401868db3e","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=cdb9a8aad36b1428","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=fcf034275fb92db5","pkg:golang/github.com/oklog/run@v1.1.0?package-id=8e270da511dcf471","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=46c6a48df530e826","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ec57861ae0738879","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=312080e827250f9f#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=831ff9a8f3c979eb","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=05c1d24775970882","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=3817cc426cfb808c","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=c486262f6d6f8d4e#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=ae5c7aef61b60ede","pkg:golang/go.uber.org/zap@v1.27.0?package-id=a21da72ed70aaf0e","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=1acb772cccf69586","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=449c43c79ddffda6","pkg:golang/golang.org/x/net@v0.47.0?package-id=f7ecedbec1f16008","pkg:golang/golang.org/x/sys@v0.38.0?package-id=fd59895cdad1b945","pkg:golang/golang.org/x/text@v0.31.0?package-id=6c5c5d29f81fa5c6","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=8e28b2fbdf57da53#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=929a0a0b01ae1148#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=2091eecfa7eb4b1f","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=14a90e9027eb6aba","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=c5a23787b8526cc2","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=29c719ea8826697d","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=4e83502b30cbeac1","pkg:golang/stdlib@1.25.3?package-id=4544fe6d1a31dc26"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7082a29b4f621514","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=0cf7cbf749d1cb4e#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9862b73e3588ea9c#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=f111cd0ff25be54b","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7957d791a206fc3a","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=3611af2062999f69","pkg:golang/github.com/fatih/color@v1.18.0?package-id=1e02106cb6ebeea4","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=d5943fbe3beaa11d","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=fda7ea06592dbc40","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=dd14cd1e530f3d81#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3eb3682621d00528#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=b1a427e5d3abba3b#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=f5372c52b2fd34a5","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=192004540d7108a8","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=a54ae79f7278ff5b","pkg:golang/github.com/google/uuid@v1.6.0?package-id=e69639bf52e19d1c","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=754a4646b8d5bfb0","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=a1eebd635a0ec603#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=8e211380b05c4b06","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=cafa939434ad6849","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=492646b6007e49ec","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=30f470de4bd763d3","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=3821e4b956d84344","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=f6a92e444bcf1dba#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=183b708ed190a6b3","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677d378fed89cec5","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=afd2afa2d25e0b2f","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=3a2f5fdaa8b76a2a","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=28efaff8a0bb5995","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=f4bc6aa705a417e3","pkg:golang/github.com/oklog/run@v1.1.0?package-id=bc2cb77a3c64fb1d","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=7a3e880a3ff477b6","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=5a7c2d2cc0752498","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=6ffdbec30efea770#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=84270e0cb713b341","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=fd17d0d46e4be5f0","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=0ee1a83a49b4c64b","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=9d063d199f36b49a#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=f280d904397a39ce","pkg:golang/go.uber.org/zap@v1.27.0?package-id=c86a603927e0ee21","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=31a548c3ace1a87e","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=e29946d1fbabc7c6","pkg:golang/golang.org/x/net@v0.47.0?package-id=e8c099d5a1f3d773","pkg:golang/golang.org/x/sys@v0.38.0?package-id=5878c8eb708573fe","pkg:golang/golang.org/x/text@v0.31.0?package-id=e013e22bd88d997d","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=5d9d6c1b1a9a5f87#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=b7f068e4fee3d9ae#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=1dd8f9a88116e8b2","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=da57caf889d11b40","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1514a584b70e13ce","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=23c20b13799cbd61","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=7f6d282b21b57645","pkg:golang/stdlib@1.25.3?package-id=d7129e05ab4c678a"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7c759c1569fbe75d","dependsOn":["pkg:golang/ariga.io/atlas@v0.36.1?package-id=1b9a814ec1cc7228","pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=edd00aa4e8dbad5f#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/cel.dev/expr@v0.20.0?package-id=3991a4c476f16614","pkg:golang/cloud.google.com/go/auth@v0.16.1?package-id=de95518c0a391d5a","pkg:golang/cloud.google.com/go/auth@v0.2.8?package-id=4c87e6e404b0d7a5#oauth2adapt","pkg:golang/cloud.google.com/go/compute@v0.6.0?package-id=dfeda2f435435c8d#metadata","pkg:golang/cloud.google.com/go/iam@v1.5.0?package-id=e13018493ce7a2fc","pkg:golang/cloud.google.com/go/monitoring@v1.24.0?package-id=2a4c84bd5a378b2b","pkg:golang/cloud.google.com/go/secretmanager@v1.14.5?package-id=c263d49fdc3ef135","pkg:golang/cloud.google.com/go/storage@v1.50.0?package-id=0634dfe0a1f7a05a","pkg:golang/cloud.google.com/go@v0.120.0?package-id=8dfc7d3fa8a812b2","pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4?package-id=1c01b35916422ac9","pkg:golang/cuelang.org/go@v0.9.2?package-id=29cc2b94fd47ac47","pkg:golang/entgo.io/ent@v0.14.4?package-id=5714b0c40e1cbe7f","pkg:golang/filippo.io/edwards25519@v1.1.0?package-id=f5a626a34354491b","pkg:golang/github.com/agext/levenshtein@v1.2.3?package-id=54f200cba3f3ddd5","pkg:golang/github.com/agnivade/levenshtein@v1.2.1?package-id=e7e9a5338c9a97b3","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=e358fd7c8804e192#v4","pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0?package-id=3261f7b0bd4ec0ee#v15","pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2?package-id=cf99884dade6c2fa","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11?package-id=0850673146fa4015#service/internal/presigned-url","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2?package-id=b6bf3c75b9158e55#service/internal/accept-encoding","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19?package-id=229a4160f6bd6fea#credentials","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11?package-id=bcfc4a1504bc9d1e#service/internal/s3shared","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1?package-id=255c307a498c37fb#feature/s3/manager","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6?package-id=944d656d4937b3d7#service/secretsmanager","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8?package-id=ae03c469d9964d5f#service/sso","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4?package-id=7c8f583f475b279a","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=bf9073ca13d2633d#internal/v4a","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=fd05241447fbad2a#internal/configsources","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2?package-id=88f41ccaf0fcf0d2#aws/protocol/eventstream","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0?package-id=cb0a0f1ed8b5fcfb#service/s3","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2?package-id=471dd6301d957ee5#service/internal/checksum","pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11?package-id=7fff74c6179c99c8#internal/endpoints/v2","pkg:golang/github.com/aws/smithy-go@v1.23.1?package-id=30f5c8f9378b1b0b","pkg:golang/github.com/azure/azure-sdk-for-go@v0.12.0?package-id=8ec1a5515064cc0f#sdk/keyvault/azsecrets","pkg:golang/github.com/azure/azure-sdk-for-go@v0.7.1?package-id=8790a26c853352e6#sdk/keyvault/internal","pkg:golang/github.com/azure/azure-sdk-for-go@v1.10.0?package-id=9f947e5321b6e309#sdk/azidentity","pkg:golang/github.com/azure/azure-sdk-for-go@v1.11.1?package-id=1a21d9c63d2fd37c#sdk/internal","pkg:golang/github.com/azure/azure-sdk-for-go@v1.18.0?package-id=7769c345e6a41e06#sdk/azcore","pkg:golang/github.com/azure/azure-sdk-for-go@v1.3.1?package-id=dfd4cdfbd839595e#sdk/storage/azblob","pkg:golang/github.com/azuread/microsoft-authentication-library-for-go@v1.4.2?package-id=e7582017408a48f8","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=4a504023edc43053","pkg:golang/github.com/beorn7/perks@v1.0.1?package-id=88b001c4d4d0b5f3","pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible?package-id=69b16326119c3de9","pkg:golang/github.com/bmatcuk/doublestar@v1.3.4?package-id=5bb1becc5084463d","pkg:golang/github.com/bmatcuk/doublestar@v4.8.1?package-id=bceca9a757c8b716#v4","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=1548bdb64ee27afb","pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11?package-id=44532fe0070003be","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=8feb6a0a369f06b4","pkg:golang/github.com/casbin/casbin@v2.103.0?package-id=398770942b4a4b45#v2","pkg:golang/github.com/casbin/govaluate@v1.3.0?package-id=ae0d6aa8b0fbf5ad","pkg:golang/github.com/cenkalti/backoff@v4.3.0?package-id=db2757ee2d4c3bd9#v4","pkg:golang/github.com/cespare/xxhash@v2.3.0?package-id=9aa1e7125da5e681#v2","pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42?package-id=fd055dca9cd4684e#go","pkg:golang/github.com/cockroachdb/apd@v3.2.1?package-id=a7e8dec354ec137e#v3","pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3?package-id=ce2cc16c91eae9c8#estargz","pkg:golang/github.com/coreos/go-oidc@v3.11.0?package-id=bdb5877deeea7ea4#v3","pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46?package-id=4395ed3109692990","pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f?package-id=929f518e1a2c29f7","pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352?package-id=4c6df587dc437bee","pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7?package-id=af6c3e471dd91674","pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible?package-id=73b4b1a8f5e34f52","pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible?package-id=78d5b6f50e970040","pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2?package-id=b028d0936bd37abe","pkg:golang/github.com/dustin/go-humanize@v1.0.1?package-id=1c8aeec87e8e24de","pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4?package-id=371937f3b334bbeb#envoy","pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1?package-id=a0559b8fcb70cb2f","pkg:golang/github.com/fatih/color@v1.18.0?package-id=d5e6198899daee7e","pkg:golang/github.com/felixge/httpsnoop@v1.0.4?package-id=c901d5e81f25b249","pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?package-id=80e8c41308342846","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=831fe61af73b9147","pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible?package-id=f93d251151171bc4","pkg:golang/github.com/go-ini/ini@v1.67.0?package-id=32115deda06adada","pkg:golang/github.com/go-jose/go-jose@v4.0.5?package-id=36b333231e79d98a#v4","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=bd1d3e5ba0e9bfb1","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=e5872d58195061ff#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3656a52531615238#v2","pkg:golang/github.com/go-logr/logr@v1.4.3?package-id=90817d8d0fa3e94e","pkg:golang/github.com/go-logr/stdr@v1.2.2?package-id=fb15d49009e571a5","pkg:golang/github.com/go-openapi/analysis@v0.23.0?package-id=f9fdf5fc55590e97","pkg:golang/github.com/go-openapi/errors@v0.22.0?package-id=0f17926ab738cdf9","pkg:golang/github.com/go-openapi/inflect@v0.21.0?package-id=eb3a0d70b1b77c64","pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0?package-id=f06d5883d33095f4","pkg:golang/github.com/go-openapi/jsonreference@v0.21.0?package-id=6928ba45ffb2aa76","pkg:golang/github.com/go-openapi/loads@v0.22.0?package-id=3c34dcb636bcd4ee","pkg:golang/github.com/go-openapi/runtime@v0.28.0?package-id=dceb9829096d1353","pkg:golang/github.com/go-openapi/spec@v0.21.0?package-id=196f0afbd4e7ba64","pkg:golang/github.com/go-openapi/strfmt@v0.23.0?package-id=0aeebfa7ab4224ee","pkg:golang/github.com/go-openapi/swag@v0.23.0?package-id=f1d8a9eb475739f4","pkg:golang/github.com/go-openapi/validate@v0.24.0?package-id=ec70f68d0a6875d0","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=09580f4007c841fc#v4","pkg:golang/github.com/go-viper/mapstructure@v2.4.0?package-id=e524e8add11aefe6#v2","pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible?package-id=76ce5e210fee0918","pkg:golang/github.com/gobwas/glob@v0.2.3?package-id=673637cb391153df","pkg:golang/github.com/golang-jwt/jwt@v4.5.2?package-id=5ab2d6f620ff174b#v4","pkg:golang/github.com/golang-jwt/jwt@v5.2.2?package-id=e8c96702be6e043a#v5","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=a709ab10b7f70081","pkg:golang/github.com/golang/snappy@v0.0.4?package-id=dd5ef1bf3f5e04f9","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=c5b5cd84e974d96c","pkg:golang/github.com/google/certificate-transparency-go@v1.2.1?package-id=9e5ccce5924b4341","pkg:golang/github.com/google/go-cmp@v0.7.0?package-id=c78b751d993e9fbe","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=f218f28c514368a2","pkg:golang/github.com/google/s2a-go@v0.1.9?package-id=7a1389864cd6d13f","pkg:golang/github.com/google/uuid@v1.6.0?package-id=eb4089a97fc4b824","pkg:golang/github.com/google/wire@v0.6.0?package-id=7c2a8843a50dda97","pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6?package-id=f3ffb85c873e294c","pkg:golang/github.com/googleapis/gax-go@v2.14.1?package-id=b45d298b550bdf23#v2","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=1a4431c12ff4b138#exporter/metric","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=662c5f3202aacc2e#internal/resourcemapping","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v1.26.0?package-id=327d6284d3ae9a8c#detectors/gcp","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=8aa5a15ae995870a","pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0?package-id=5ca59ab756b5d1df","pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0?package-id=146e3303564149c1#v2","pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99?package-id=303abf1a07dde40f","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=5d0b50ea309daf7d#v2","pkg:golang/github.com/hashicorp/errwrap@v1.1.0?package-id=c8d193cf3d3d5208","pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2?package-id=4403b5c086d6844d","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=f0554539af1194c4","pkg:golang/github.com/hashicorp/go-multierror@v1.1.1?package-id=bb7e66578f669275","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=519b9b87f98927ad","pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7?package-id=81674d20af43830a","pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2?package-id=d87cb63fecb47921","pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2?package-id=d4a726e4fd1d30d5#strutil","pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7?package-id=56ba1a1c5da75fa7#parseutil","pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5?package-id=00472b1e17d8e4fc","pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?package-id=fe6ee6a5b4e61613","pkg:golang/github.com/hashicorp/golang-lru@v2.0.7?package-id=c9a0b90fbeb554b5#v2","pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5?package-id=b65d0cda66da588f","pkg:golang/github.com/hashicorp/hcl@v2.23.0?package-id=86c28d7af5c7c329#v2","pkg:golang/github.com/hashicorp/vault@v1.16.0?package-id=ffba91e4de2dce61#api","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=c377430d817c17dd","pkg:golang/github.com/imdario/mergo@v0.3.16?package-id=2eac58e895107531","pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0?package-id=4fc2df847e89d183","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=2c63849bc3d02a56","pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0?package-id=d86f38a835568fce","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=7f50552cc0f341bf","pkg:golang/github.com/jackc/pgpassfile@v1.0.0?package-id=fc90a6dc24a94c10","pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761?package-id=d5bbbda9af0b5db7","pkg:golang/github.com/jackc/pgx@v5.7.2?package-id=48ac6ddf39a73211#v5","pkg:golang/github.com/jackc/puddle@v2.2.2?package-id=5946bd50e2bafc70#v2","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=55ef3c2f98d458e7#v6","pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267?package-id=9146b36f53e18d22","pkg:golang/github.com/josharian/intern@v1.0.0?package-id=375bd940772b5112","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=a51c1ed59ac235b6","pkg:golang/github.com/klauspost/compress@v1.18.0?package-id=38fec71e4cde6246","pkg:golang/github.com/kylelemons/godebug@v1.1.0?package-id=4678812fa04f717d","pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec?package-id=8aa7b3357e7d0080","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=45f59cb2f9906c68","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=4efdc889817fde22","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=82811dc235b0ea9a","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=e2e8eef85cf14e1b","pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?package-id=ffb0e9892861fe1d","pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1?package-id=46269e7f390a7e59","pkg:golang/github.com/mitchellh/mapstructure@v1.5.0?package-id=e454360c4c30677e","pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible?package-id=751c4a54c4d06156","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=d199848386663b2a","pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?package-id=2e8a67d0a37c0c11","pkg:golang/github.com/nats-io/nats.go@v1.34.0?package-id=e54b42463787b0dc","pkg:golang/github.com/nats-io/nkeys@v0.4.7?package-id=584bd6116fde734b","pkg:golang/github.com/nats-io/nuid@v1.0.1?package-id=11f0db942d14c258","pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481?package-id=73b7c1bb1efbc9f2","pkg:golang/github.com/oklog/run@v1.1.0?package-id=f9716f8bbd6a86d3","pkg:golang/github.com/oklog/ulid@v1.3.1?package-id=3ed6fb0e0b250709","pkg:golang/github.com/open-policy-agent/opa@v1.6.0?package-id=fffbf5f8b5072dde","pkg:golang/github.com/opencontainers/go-digest@v1.0.0?package-id=6c70f6c5d8943923","pkg:golang/github.com/opencontainers/image-spec@v1.1.1?package-id=49cd6c2b271fe64c","pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?package-id=fec1bf6deefcda93","pkg:golang/github.com/pelletier/go-toml@v2.2.4?package-id=413c3223db6885b6#v2","pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?package-id=37fb8712c1644376","pkg:golang/github.com/pkg/errors@v0.9.1?package-id=2360ee24db547993","pkg:golang/github.com/prometheus/client_golang@v1.22.0?package-id=ba59e8a4375c665a","pkg:golang/github.com/prometheus/client_model@v0.6.2?package-id=28d58289653e68aa","pkg:golang/github.com/prometheus/common@v0.63.0?package-id=3396cbd5ea3cdd5e","pkg:golang/github.com/prometheus/procfs@v0.16.1?package-id=4ba421c4157a075a","pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9?package-id=d68b41c72972f980","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=26670e6d26c61375","pkg:golang/github.com/rs/cors@v1.11.0?package-id=75b9b988256ae5dc","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ba121567cc067a37","pkg:golang/github.com/ryanuber/go-glob@v1.0.0?package-id=a496fe059de8f7d2","pkg:golang/github.com/sagikazarmark/locafero@v0.7.0?package-id=8fda646d7df9e7a9","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=3ebe647b2b7a0fd2#v5","pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible?package-id=57d48b6338ba4447","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=5e815f65fbbededf","pkg:golang/github.com/shibumi/go-pathspec@v1.3.0?package-id=d67d872c4177113d","pkg:golang/github.com/sigstore/cosign@v2.4.1?package-id=03cfd2c433da4add#v2","pkg:golang/github.com/sigstore/fulcio@v1.6.3?package-id=f8baa9f2ffac0f22","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=9e39a559192d9d43","pkg:golang/github.com/sigstore/rekor@v1.3.6?package-id=c3584927ec4886b0","pkg:golang/github.com/sigstore/sigstore-go@v0.6.1?package-id=a192b09bb8ac2b12","pkg:golang/github.com/sigstore/sigstore@v1.8.9?package-id=d7c5e2057451495d","pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2?package-id=363ab614c878c9aa","pkg:golang/github.com/sirupsen/logrus@v1.9.3?package-id=9fe179472ead2c12","pkg:golang/github.com/sourcegraph/conc@v0.3.0?package-id=a67352f726c85707","pkg:golang/github.com/spf13/afero@v1.12.0?package-id=a51fa46d067f2f92","pkg:golang/github.com/spf13/cast@v1.7.1?package-id=041498db4977f256","pkg:golang/github.com/spf13/cobra@v1.9.1?package-id=fcc4bdd1cadd331a","pkg:golang/github.com/spf13/pflag@v1.0.6?package-id=f97be186276d93aa","pkg:golang/github.com/spf13/viper@v1.20.1?package-id=ab3bcc5d5ff8530f","pkg:golang/github.com/spiffe/go-spiffe@v2.5.0?package-id=85d997951c37d5c3#v2","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=e6afe4f522ea6683","pkg:golang/github.com/subosito/gotenv@v1.6.0?package-id=4a8f33d4149fa817","pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d?package-id=5ef412fac3cbf7e9","pkg:golang/github.com/tchap/go-patricia@v2.3.2?package-id=076464ff44d0c48b#v2","pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0?package-id=07913fd074f4bb4e","pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1?package-id=76760a99ffedbe62#v2","pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399?package-id=d1ef9fdb1b0b7d43","pkg:golang/github.com/transparency-dev/merkle@v0.0.2?package-id=ad385bf50623e9b9","pkg:golang/github.com/vbatts/tar-split@v0.11.6?package-id=4a9e94de8b24b30f","pkg:golang/github.com/vektah/gqlparser@v2.5.28?package-id=904b164e13443ce7#v2","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=1afeb7fa0c88e9b6#v2","pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb?package-id=bb70c229bf71cc4f","pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415?package-id=99db612f912a11c5","pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0?package-id=282f35c4b1f6d2bd","pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0?package-id=3874ac0272f9bee5","pkg:golang/github.com/zclconf/go-cty@v1.16.2?package-id=f20005539e6795e9","pkg:golang/github.com/zeebo/errs@v1.4.0?package-id=50865a0ab5462184","pkg:golang/go.mongodb.org/mongo-driver@v1.14.0?package-id=79335c76ac742872","pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0?package-id=2389f138092105a7","pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0?package-id=947897b6c35d0bea#gcp","pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0?package-id=d17d8ef0b84597f1#google.golang.org/grpc/otelgrpc","pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0?package-id=e659c3247ca4ea17#net/http/otelhttp","pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0?package-id=f5280a8e73526779","pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=2f79f854422b4e6b#metric","pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=dbe4622886a7eb23","pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0?package-id=8e6777f9e3937c9a","pkg:golang/go.opentelemetry.io/otel@v1.36.0?package-id=750c8cdf1e715b3d","pkg:golang/go.step.sm/crypto@v0.51.2?package-id=0b7ba6230440bae9","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=3616c5a233680802","pkg:golang/go.uber.org/zap@v1.27.0?package-id=ea2962d9f09e39f6","pkg:golang/goa.design/goa@v2.2.5%2Bincompatible?package-id=8ec7a6ac6a99e82d","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=ba6a2ecacf7e5510","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=37c6a231ba3db4c5","pkg:golang/golang.org/x/mod@v0.29.0?package-id=7f41366fb70070b3","pkg:golang/golang.org/x/net@v0.47.0?package-id=6b3b1afdab5bff0c","pkg:golang/golang.org/x/oauth2@v0.30.0?package-id=b00071d52c186fdc","pkg:golang/golang.org/x/sync@v0.18.0?package-id=b9eebbfdeabf6835","pkg:golang/golang.org/x/sys@v0.38.0?package-id=8ed33a3fa34b3bad","pkg:golang/golang.org/x/term@v0.37.0?package-id=67f320a45385d632","pkg:golang/golang.org/x/text@v0.31.0?package-id=9f93033556a3e7c6","pkg:golang/golang.org/x/time@v0.11.0?package-id=b71333688b641fdb","pkg:golang/google.golang.org/api@v0.233.0?package-id=53ece5b247645b00","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2?package-id=643149bbba8adf45#bytestream","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=2425b3dd1423c423#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=c99e85a81cdb82c8#api","pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb?package-id=0e616ace83e4891b","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=4f2f5da79d52f9ac","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=b2f2ed000f228add","pkg:golang/gopkg.in/yaml.v2@v2.4.0?package-id=a2b03ddc6fa94e5f","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=7fbe175931da9944","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=de533d8c18fe73e6","pkg:golang/k8s.io/klog/v2@v2.120.1?package-id=c154b07c875996b9","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=ca6764c0602ab7ea","pkg:golang/nhooyr.io/websocket@v1.8.10?package-id=0f4456df679cfa47","pkg:golang/sigs.k8s.io/yaml@v1.4.0?package-id=6a1c0b030cc12f11","pkg:golang/stdlib@1.25.3?package-id=32e9973a0467da41"]}]} diff --git a/policies/go/examples/simple/README.md b/policies/go/examples/simple/README.md new file mode 100644 index 000000000..334d12ac4 --- /dev/null +++ b/policies/go/examples/simple/README.md @@ -0,0 +1,79 @@ +# Simple Policy Example + +A basic policy that validates string input, demonstrating fundamental SDK usage patterns. + +## What This Policy Does + +Validates a message string with three rules: +1. Message must not be empty +2. Message must not contain forbidden words ("forbidden", "banned", "prohibited") +3. Message must not exceed 100 characters + +## Building + +```bash +tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +``` + +## Testing + +### Valid input: +```bash +echo '{"message": "hello world"}' | \ + chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind ATTESTATION +``` + +Expected: No violations + +### Invalid input (empty message): +```bash +echo '{"message": ""}' | \ + chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind ATTESTATION +``` + +Expected: Violation: "message cannot be empty" + +### Invalid input (forbidden word): +```bash +echo '{"message": "this is forbidden"}' | \ + chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind ATTESTATION +``` + +Expected: Violation: "message contains forbidden word: forbidden" + +### Invalid input (too long): +```bash +echo '{"message": "'"$(python3 -c "print('a' * 101)")"'"}' | \ + chainloop policy develop eval \ + --policy policy.yaml \ + --material - \ + --kind ATTESTATION +``` + +Expected: Violation: "message too long: 101 characters (max 100)" + +## Key Concepts Demonstrated + +1. **ExecutePolicyTyped**: Type-safe policy function with automatic I/O +2. **Result builders**: `Success()`, `AddViolation()`, `AddViolationf()` +3. **Logging**: `LogInfo()`, `LogError()` for debug output +4. **Result checking**: `HasViolations()` to check result state + +## File Structure + +``` +simple/ +├── policy.go # Policy implementation +├── policy.yaml # Policy specification +├── policy.wasm # Compiled WASM module (after build) +└── README.md # This file +``` diff --git a/policies/go/examples/simple/go.mod b/policies/go/examples/simple/go.mod new file mode 100644 index 000000000..2c2cc09e6 --- /dev/null +++ b/policies/go/examples/simple/go.mod @@ -0,0 +1,9 @@ +module chainloop-policy-simple + +go 1.25 + +require github.com/chainloop-dev/chainloop/sdks/go v0.0.0 + +require github.com/extism/go-pdk v1.1.3 // indirect + +replace github.com/chainloop-dev/chainloop/sdks/go => ../../ diff --git a/policies/go/examples/simple/go.sum b/policies/go/examples/simple/go.sum new file mode 100644 index 000000000..c15d38292 --- /dev/null +++ b/policies/go/examples/simple/go.sum @@ -0,0 +1,2 @@ +github.com/extism/go-pdk v1.1.3 h1:hfViMPWrqjN6u67cIYRALZTZLk/enSPpNKa+rZ9X2SQ= +github.com/extism/go-pdk v1.1.3/go.mod h1:Gz+LIU/YCKnKXhgge8yo5Yu1F/lbv7KtKFkiCSzW/P4= diff --git a/policies/go/examples/simple/policy.go b/policies/go/examples/simple/policy.go new file mode 100644 index 000000000..50933ca4c --- /dev/null +++ b/policies/go/examples/simple/policy.go @@ -0,0 +1,115 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Simple policy example that validates basic string input. +// +// This example demonstrates: +// - Using Run() wrapper to hide WASM return values +// - Material extraction using GetMaterialJSON() +// - Args extraction for configuration +// - Result building with helper methods +// - Logging with LogInfo() +// +// Build: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// Test: +// +// echo '{"message": "hello"}' > /tmp/test-message.json +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material /tmp/test-message.json \ +// --kind STRING +package main + +import ( + "fmt" + "strings" + + chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" +) + +// Input represents the expected input structure. +type Input struct { + Message string `json:"message"` +} + +//export Execute +func Execute() int32 { + return chainlooppolicy.Run(func() { + // Extract policy arguments (optional configuration) + args, err := chainlooppolicy.GetArgs() + if err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + // Get max length from args, default to 100 + maxLength := 100 + if maxLengthStr, ok := args["max_length"]; ok { + fmt.Sscanf(maxLengthStr, "%d", &maxLength) + } + + chainlooppolicy.LogInfo("Validating message with max length: %d", maxLength) + + // Parse material + var input Input + if err := chainlooppolicy.GetMaterialJSON(&input); err != nil { + chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) + return + } + + // Validate + result := validateMessage(input, maxLength) + + // Output result + chainlooppolicy.OutputResult(result) + }) +} + +// validateMessage checks the message for compliance. +func validateMessage(input Input, maxLength int) chainlooppolicy.Result { + result := chainlooppolicy.Success() + + // Validation 1: Message must not be empty + if input.Message == "" { + result.AddViolation("message cannot be empty") + return result + } + + // Validation 2: Message must not contain forbidden words + forbidden := []string{"forbidden", "banned", "prohibited"} + for _, word := range forbidden { + if strings.Contains(strings.ToLower(input.Message), word) { + result.AddViolationf("message contains forbidden word: %s", word) + } + } + + // Validation 3: Message must not be too long + if len(input.Message) > maxLength { + result.AddViolationf("message too long: %d characters (max %d)", len(input.Message), maxLength) + } + + if result.HasViolations() { + chainlooppolicy.LogError("Validation failed with %d violations", len(result.Violations)) + } else { + chainlooppolicy.LogInfo("Validation passed for message: %s", input.Message) + } + + return result +} + +func main() {} diff --git a/policies/go/examples/simple/policy.wasm b/policies/go/examples/simple/policy.wasm new file mode 100644 index 000000000..5307ff254 Binary files /dev/null and b/policies/go/examples/simple/policy.wasm differ diff --git a/policies/go/examples/simple/policy.yaml b/policies/go/examples/simple/policy.yaml new file mode 100644 index 000000000..87a867afc --- /dev/null +++ b/policies/go/examples/simple/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: simple-validation + description: Simple string validation policy demonstrating basic SDK usage +spec: + policies: + - kind: STRING + path: policy.wasm diff --git a/policies/go/execute.go b/policies/go/execute.go new file mode 100644 index 000000000..8bb45dcfe --- /dev/null +++ b/policies/go/execute.go @@ -0,0 +1,42 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +// Run executes a policy function and returns the required int32 status code. +// This wrapper hides the WASM return value from users, making the API cleaner. +// +// Usage: +// +// //export Execute +// func Execute() int32 { +// return chainlooppolicy.Run(func() { +// var sbom SBOM +// if err := chainlooppolicy.GetMaterialJSON(&sbom); err != nil { +// chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) +// return +// } +// +// result := chainlooppolicy.Success() +// // ... validation logic +// chainlooppolicy.OutputResult(result) +// }) +// } +// +// The function always returns 0, which indicates success to the WASM runtime. +func Run(policyFn func()) int32 { + policyFn() + return 0 +} diff --git a/policies/go/go.mod b/policies/go/go.mod new file mode 100644 index 000000000..ea3f1705b --- /dev/null +++ b/policies/go/go.mod @@ -0,0 +1,5 @@ +module github.com/chainloop-dev/chainloop/sdks/go + +go 1.25 + +require github.com/extism/go-pdk v1.1.3 diff --git a/policies/go/go.sum b/policies/go/go.sum new file mode 100644 index 000000000..c15d38292 --- /dev/null +++ b/policies/go/go.sum @@ -0,0 +1,2 @@ +github.com/extism/go-pdk v1.1.3 h1:hfViMPWrqjN6u67cIYRALZTZLk/enSPpNKa+rZ9X2SQ= +github.com/extism/go-pdk v1.1.3/go.mod h1:Gz+LIU/YCKnKXhgge8yo5Yu1F/lbv7KtKFkiCSzW/P4= diff --git a/policies/go/http.go b/policies/go/http.go new file mode 100644 index 000000000..cd770e698 --- /dev/null +++ b/policies/go/http.go @@ -0,0 +1,62 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import ( + "encoding/json" + "fmt" + + "github.com/extism/go-pdk" +) + +// HTTPGet performs a GET request using Extism's built-in HTTP functionality. +// Only hostnames configured in the policy engine's AllowedHosts are accessible. +// Returns error if the hostname is not allowed or the request fails. +func HTTPGet(url string) ([]byte, error) { + req := pdk.NewHTTPRequest(pdk.MethodGet, url) + resp := req.Send() + + if resp.Status() != 200 { + return nil, fmt.Errorf("HTTP request failed with status %d", resp.Status()) + } + + return resp.Body(), nil +} + +// HTTPGetJSON performs a GET request and unmarshals the JSON response. +// Only hostnames configured in the policy engine's AllowedHosts are accessible. +func HTTPGetJSON(url string, target interface{}) error { + body, err := HTTPGet(url) + if err != nil { + return err + } + + if err := json.Unmarshal(body, target); err != nil { + return fmt.Errorf("failed to unmarshal JSON response: %w", err) + } + + return nil +} + +// HTTPGetString performs a GET request and returns the response as a string. +// Only hostnames configured in the policy engine's AllowedHosts are accessible. +func HTTPGetString(url string) (string, error) { + body, err := HTTPGet(url) + if err != nil { + return "", err + } + return string(body), nil +} diff --git a/policies/go/input.go b/policies/go/input.go new file mode 100644 index 000000000..2786b3f5b --- /dev/null +++ b/policies/go/input.go @@ -0,0 +1,94 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import ( + "encoding/json" + "fmt" + + "github.com/extism/go-pdk" +) + +// GetArgs extracts policy arguments from Extism config. +// Returns the arguments map, or an empty map if no args are configured. +func GetArgs() (map[string]string, error) { + argsJSON, exists := pdk.GetConfig("args") + if !exists || argsJSON == "" { + return map[string]string{}, nil + } + + var args map[string]any + if err := json.Unmarshal([]byte(argsJSON), &args); err != nil { + return nil, fmt.Errorf("failed to unmarshal args: %w", err) + } + + // Convert to map[string]string + result := make(map[string]string) + for k, v := range args { + if strVal, ok := v.(string); ok { + result[k] = strVal + } else { + // Convert non-string values to string representation + result[k] = fmt.Sprintf("%v", v) + } + } + + return result, nil +} + +// GetArgString returns a single argument value by key. +// Returns empty string if the argument is not found. +func GetArgString(key string) (string, error) { + args, err := GetArgs() + if err != nil { + return "", err + } + return args[key], nil +} + +// GetArgStringDefault returns a single argument value by key with a default value. +// Returns the default value if the argument is not found or if there's an error. +func GetArgStringDefault(key, defaultValue string) string { + args, err := GetArgs() + if err != nil { + return defaultValue + } + if val, ok := args[key]; ok && val != "" { + return val + } + return defaultValue +} + +// GetMaterialBytes returns the raw material bytes from the input. +// The material is passed as the main input to the WASM plugin. +func GetMaterialBytes() []byte { + return pdk.Input() +} + +// GetMaterialJSON unmarshals the material input as JSON into the target. +// Use this when the material is in JSON format. +func GetMaterialJSON(target interface{}) error { + if err := pdk.InputJSON(target); err != nil { + return fmt.Errorf("failed to unmarshal material: %w", err) + } + return nil +} + +// GetMaterialString returns the material as a UTF-8 string. +// Use this for text-based materials. +func GetMaterialString() string { + return string(pdk.Input()) +} diff --git a/policies/go/logging.go b/policies/go/logging.go new file mode 100644 index 000000000..46eb6c820 --- /dev/null +++ b/policies/go/logging.go @@ -0,0 +1,49 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import ( + "fmt" + + "github.com/extism/go-pdk" +) + +// LogInfo logs an informational message. +// These logs are visible in the Chainloop CLI when running with --debug. +func LogInfo(format string, args ...interface{}) { + pdk.Log(pdk.LogInfo, fmt.Sprintf(format, args...)) +} + +// LogDebug logs a debug message. +// These logs are visible in the Chainloop CLI when running with --debug. +func LogDebug(format string, args ...interface{}) { + pdk.Log(pdk.LogDebug, fmt.Sprintf(format, args...)) +} + +// LogWarn logs a warning message. +func LogWarn(format string, args ...interface{}) { + pdk.Log(pdk.LogWarn, fmt.Sprintf(format, args...)) +} + +// LogError logs an error message. +func LogError(format string, args ...interface{}) { + pdk.Log(pdk.LogError, fmt.Sprintf(format, args...)) +} + +// LogTrace logs a trace message for detailed debugging. +func LogTrace(format string, args ...interface{}) { + pdk.Log(pdk.LogTrace, fmt.Sprintf(format, args...)) +} diff --git a/policies/go/output.go b/policies/go/output.go new file mode 100644 index 000000000..73b445f3d --- /dev/null +++ b/policies/go/output.go @@ -0,0 +1,25 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import "github.com/extism/go-pdk" + +// OutputResult outputs a Result using pdk.OutputJSON(). +// This is a convenience wrapper for policies that want to output results +// without directly importing the pdk package. +func OutputResult(result Result) { + pdk.OutputJSON(result) +} diff --git a/policies/go/policy.go b/policies/go/policy.go new file mode 100644 index 000000000..84aca9cab --- /dev/null +++ b/policies/go/policy.go @@ -0,0 +1,148 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package chainlooppolicy provides a high-level SDK for writing Chainloop WASM policies in Go. +// +// This package builds on top of the Extism Go PDK to provide ergonomic APIs for policy +// development with clean separation of material data and policy arguments. +// +// # Quick Start +// +// A typical policy follows this pattern: +// +// package main +// +// import chainlooppolicy "github.com/chainloop-dev/chainloop/policies/go" +// +// type SBOM struct { +// Components []Component `json:"components"` +// } +// +// //export Execute +// func Execute() int32 { +// return chainlooppolicy.Run(func() { +// // Parse material +// var sbom SBOM +// if err := chainlooppolicy.GetMaterialJSON(&sbom); err != nil { +// chainlooppolicy.OutputResult(chainlooppolicy.Skip(err.Error())) +// return +// } +// +// // Validate +// result := chainlooppolicy.Success() +// if len(sbom.Components) == 0 { +// result.AddViolation("SBOM must have components") +// } +// +// // Output +// chainlooppolicy.OutputResult(result) +// }) +// } +// +// func main() {} +// +// # Key Features +// +// - Material Extraction: GetMaterialJSON(), GetMaterialBytes() +// - Args Extraction: GetArgs(), GetArgString() +// - Result Building: Success(), Fail(), Skip() +// - Logging: LogInfo(), LogDebug(), LogWarn(), LogError() +// - HTTP Requests: HTTPGet(), HTTPGetJSON(), HTTPPost(), HTTPPostJSON() +// - Artifact Discovery: Discover(), DiscoverByDigest() +// - Clean API: Run() wrapper hides WASM return values +// +// # Policy Arguments +// +// Policy arguments are passed via Extism config and extracted with GetArgs(): +// +// args, _ := chainlooppolicy.GetArgs() +// threshold := args["severity_threshold"] // Access specific arg +// +// // Or use helpers +// threshold := chainlooppolicy.GetArgStringDefault("severity_threshold", "HIGH") +// +// # Material Types +// +// The material is passed as the main WASM input and extracted with helpers: +// +// // For JSON materials (SBOM, SARIF, etc.) +// var sbom CycloneDXBOM +// chainlooppolicy.GetMaterialJSON(&sbom) +// +// // For raw bytes +// data := chainlooppolicy.GetMaterialBytes() +// +// // For text +// text := chainlooppolicy.GetMaterialString() +// +// # Logging +// +// Logs are visible in the Chainloop CLI when running with --debug: +// +// chainlooppolicy.LogInfo("Processing %d components", len(sbom.Components)) +// chainlooppolicy.LogDebug("Component details: %+v", component) +// chainlooppolicy.LogWarn("Missing optional field: %s", fieldName) +// chainlooppolicy.LogError("Failed to parse: %v", err) +// +// # HTTP Requests +// +// Policies can make HTTP requests to allowed hostnames: +// +// // Simple GET +// data, err := chainlooppolicy.HTTPGet("https://api.example.com/data") +// +// // GET with JSON parsing +// var result APIResponse +// err := chainlooppolicy.HTTPGetJSON("https://api.example.com/data", &result) +// +// // POST with JSON +// err := chainlooppolicy.HTTPPostJSON("https://api.example.com/validate", +// requestBody, &responseBody) +// +// Note: Only hostnames configured in the policy engine's allowed list are accessible. +// +// # Artifact Discovery +// +// Policies can explore the artifact graph to discover related artifacts: +// +// // Discover all references for an artifact +// result, err := chainlooppolicy.Discover(digest, "") +// if err != nil { +// chainlooppolicy.LogError("Discovery failed: %v", err) +// return +// } +// +// // Check references +// for _, ref := range result.References { +// if ref.Kind == "ATTESTATION" { +// if ref.Metadata["hasPolicyViolations"] == "true" { +// result.AddViolation("Referenced attestation has violations") +// } +// } +// } +// +// // Convenience function for discovering by digest only +// result, err := chainlooppolicy.DiscoverByDigest(digest) +// +// Note: Discovery requires a gRPC connection configured in the policy engine. +// +// # Building Policies +// +// Policies are compiled to WASM using TinyGo: +// +// tinygo build -target=wasi -buildmode=c-shared -o policy.wasm policy.go +// +// See the examples/ directory for complete working examples. +package _go diff --git a/policies/go/result.go b/policies/go/result.go new file mode 100644 index 000000000..d9b4c0e0c --- /dev/null +++ b/policies/go/result.go @@ -0,0 +1,88 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package _go + +import "fmt" + +// Result represents a policy execution result. +// This type is designed to work with pdk.OutputJSON() - all fields are simple types. +type Result struct { + Skipped bool `json:"skipped"` + Violations []string `json:"violations"` + SkipReason string `json:"skip_reason"` + Ignore bool `json:"ignore"` +} + +// Success creates a successful result (no violations, not skipped). +func Success() Result { + return Result{ + Skipped: false, + Violations: []string{}, + SkipReason: "", + Ignore: false, + } +} + +// Fail creates a failed result with one or more violations. +func Fail(violations ...string) Result { + return Result{ + Skipped: false, + Violations: violations, + SkipReason: "", + Ignore: false, + } +} + +// Skip creates a skipped result with a reason. +// Use this when the policy doesn't apply to the material. +func Skip(reason string) Result { + return Result{ + Skipped: true, + Violations: []string{}, + SkipReason: reason, + Ignore: false, + } +} + +// Skipf creates a skipped result with a formatted reason. +func Skipf(format string, args ...interface{}) Result { + return Result{ + Skipped: true, + Violations: []string{}, + SkipReason: fmt.Sprintf(format, args...), + Ignore: false, + } +} + +// AddViolation adds a violation message to the result. +func (r *Result) AddViolation(msg string) { + r.Violations = append(r.Violations, msg) +} + +// AddViolationf adds a formatted violation message to the result. +func (r *Result) AddViolationf(format string, args ...interface{}) { + r.Violations = append(r.Violations, fmt.Sprintf(format, args...)) +} + +// HasViolations returns true if there are any violations. +func (r *Result) HasViolations() bool { + return len(r.Violations) > 0 +} + +// IsSuccess returns true if the policy passed (no violations, not skipped). +func (r *Result) IsSuccess() bool { + return !r.Skipped && len(r.Violations) == 0 +} diff --git a/policies/js/README.md b/policies/js/README.md new file mode 100644 index 000000000..5336d185a --- /dev/null +++ b/policies/js/README.md @@ -0,0 +1,843 @@ +# Chainloop JavaScript SDK for WASM Policies + +A JavaScript/TypeScript SDK for writing Chainloop policies that compile to WebAssembly with Extism. + +## Features + +- Easy to use API with minimal boilerplate +- Works with both JavaScript and TypeScript +- Compiled WASM files (~2MB) +- Built-in HTTP support with hostname restrictions +- Comprehensive logging support +- Module-based architecture with esbuild bundling +- Tested with real-world examples + +## Quick Start + +### 1. Create a Policy + +```javascript +const { + getMaterialJSON, + success, + skip, + outputResult, + logInfo, + run +} = require('@chainloop-dev/policy-sdk'); + +function Execute() { + return run(() => { + const input = getMaterialJSON(); + + if (!input.message) { + outputResult(skip("Material missing 'message' field")); + return; + } + + const result = success(); + if (input.message === "") { + result.addViolation("message cannot be empty"); + } + + outputResult(result); + }); +} + +module.exports = { Execute }; +``` + +### 2. Build with esbuild + extism-js + +```bash +npm install +npm run build +``` + +### 3. Test Locally + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material data.json \ + --kind STRING +``` + +## Common Patterns + +### Required Fields Validation + +```javascript +function validateRequiredFields(input) { + const result = success(); + const required = ['name', 'version', 'license']; + + required.forEach(field => { + if (!input[field] || input[field] === "") { + result.addViolation(`${field} is required`); + } + }); + + return result; +} +``` + +### Allowlist/Blocklist Validation + +```javascript +function validateLicense(license, approved, forbidden) { + const result = success(); + + if (forbidden.includes(license)) { + result.addViolation(`license ${license} is forbidden`); + } else if (approved.length > 0 && !approved.includes(license)) { + result.addViolation(`license ${license} not approved`); + } + + return result; +} +``` + +### Nested Structure Validation + +```javascript +function validateComponents(components) { + const result = success(); + + if (!components || components.length === 0) { + result.addViolation("must contain at least one component"); + } + + components.forEach((comp, i) => { + if (!comp.name) result.addViolation(`component ${i} missing name`); + if (!comp.version) result.addViolation(`component ${i} missing version`); + }); + + return result; +} +``` + +### External API Validation + +```javascript +function validateWithAPI(name, version) { + try { + const data = httpGetJSON(`https://registry.npmjs.org/${name}`); + const result = success(); + + if (!data.versions[version]) { + result.addViolation(`version ${version} not found`); + } + + return result; + } catch (e) { + return skip(`API unavailable: ${e.message}`); + } +} +``` + +## API Reference + +### Execution + +#### `run(policyFn)` + +Wraps policy execution and handles errors gracefully. + +```javascript +function Execute() { + return run(() => { + // Your policy logic here + }); +} +``` + +### Material Extraction + +#### `getMaterialJSON()` + +Parses the material input as JSON and returns the parsed object. + +```javascript +const input = getMaterialJSON(); +console.log(input.message); +``` + +#### `getMaterialString()` + +Returns the material as a string. + +```javascript +const text = getMaterialString(); +``` + +#### `getMaterialBytes()` + +Returns the material as raw bytes (Uint8Array). + +```javascript +const data = getMaterialBytes(); +``` + +### Arguments Extraction + +#### `getArgs()` + +Extracts all policy arguments passed via the engine configuration. + +```javascript +const args = getArgs(); +const maxLength = args.max_length; +``` + +#### `getArgString(key)` + +Gets a specific argument value by key. + +```javascript +const version = getArgString("expected_version"); +``` + +#### `getArgStringDefault(key, defaultValue)` + +Gets an argument value with a default fallback. + +```javascript +const maxLength = getArgStringDefault("max_length", "100"); +``` + +### Result Building + +#### `success()` + +Creates a success result with no violations. + +```javascript +const result = success(); +outputResult(result); +``` + +#### `fail(...violations)` + +Creates a failure result with one or more violations. + +```javascript +const result = fail("validation failed", "missing required field"); +outputResult(result); +``` + +#### `skip(reason)` + +Creates a skip result with a reason. + +```javascript +const result = skip("not applicable for this material type"); +outputResult(result); +``` + +### Result Methods + +#### `addViolation(msg)` + +Adds a violation message to a result. + +```javascript +const result = success(); +if (components.length === 0) { + result.addViolation("SBOM must contain at least one component"); +} +``` + +#### `hasViolations()` + +Returns true if the result has any violations. + +```javascript +if (result.hasViolations()) { + logError(`Policy failed with ${result.violations.length} violations`); +} +``` + +#### `isSuccess()` + +Returns true if the result has no violations and is not skipped. + +```javascript +if (result.isSuccess()) { + logInfo("Policy passed"); +} +``` + +### Output + +#### `outputResult(result)` + +Outputs the result to the WASM host. + +```javascript +const result = success(); +outputResult(result); +``` + +### Logging + +#### `logInfo(message)` + +Logs an informational message. + +```javascript +logInfo(`Processing ${components.length} components`); +``` + +#### `logDebug(message)` + +Logs a debug message (visible with --debug flag). + +```javascript +logDebug("Component details: " + JSON.stringify(component)); +``` + +#### `logWarn(message)` + +Logs a warning message. + +```javascript +logWarn("Optional field missing: " + fieldName); +``` + +#### `logError(message)` + +Logs an error message. + +```javascript +logError("Validation failed: " + error.message); +``` + +### HTTP Requests + +HTTP requests are restricted to hostnames configured in the policy engine's AllowedHosts. Requests to non-allowed hostnames will fail. + +#### `httpGet(url)` + +Performs an HTTP GET request and returns the response object. + +```javascript +const response = httpGet("https://api.example.com/data"); +if (response.status === 200) { + console.log(response.body); +} +``` + +#### `httpGetJSON(url)` + +Performs an HTTP GET request and parses the JSON response. + +```javascript +const data = httpGetJSON("https://registry.npmjs.org/lodash"); +console.log(`Package: ${data.name}`); +``` + +#### `httpPost(url, body)` + +Performs an HTTP POST request. + +```javascript +const response = httpPost("https://api.example.com/validate", jsonData); +``` + +#### `httpPostJSON(url, requestBody)` + +Performs an HTTP POST request with JSON body and response. + +```javascript +const result = httpPostJSON("https://api.example.com/validate", {data: "test"}); +``` + +### Artifact Discovery + +Explore the artifact graph to discover related artifacts. Requires a gRPC connection configured in the policy engine. + +#### `discover(digest, kind)` + +Discovers artifacts related to the given digest, optionally filtering by kind. + +```javascript +// Discover all references for a container image +const digest = "sha256:abc123..."; +const result = discover(digest); + +// Check if any referenced attestations have policy violations +for (const ref of result.references) { + if (ref.kind === "ATTESTATION") { + if (ref.metadata.hasPolicyViolations === "true") { + logWarn(`Attestation ${ref.digest} has policy violations`); + } + } +} + +// Discover with kind filter +const attestations = discover(digest, "ATTESTATION"); +``` + +**Parameters:** +- `digest` (string): The artifact digest to discover (e.g., "sha256:abc123...") +- `kind` (string, optional): Filter by material kind (e.g., "CONTAINER_IMAGE", "ATTESTATION") + +**Returns:** +```typescript +{ + digest: string, + kind: string, + references: [ + { + digest: string, + kind: string, + metadata: { [key: string]: string } + } + ] +} +``` + +#### `discoverByDigest(digest)` + +Convenience function that calls discover with no kind filter. + +```javascript +const result = discoverByDigest("sha256:abc123..."); +``` + +## Examples + +Complete working examples are in the `examples/` directory: + +### Simple String Validation + +Location: `examples/simple/` + +Validates message strings for forbidden words and length limits. Demonstrates argument parsing and basic validation. + +**Build:** +```bash +cd examples/simple +npm install +npm run build +``` + +**Test:** +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE +``` + +### SBOM Validation + +Location: `examples/sbom/` + +Validates CycloneDX SBOM for required components, licenses, and security requirements. + +**Build:** +```bash +cd examples/sbom +npm install +npm run build +``` + +### Attestation Validation + +Location: `examples/attestation/` + +Validates in-toto attestations for required predicates, subjects, and materials. + +**Build:** +```bash +cd examples/attestation +npm install +npm run build +``` + +### HTTP API Integration + +Location: `examples/http/` + +Demonstrates external API calls with hostname restrictions for package validation. + +**Build:** +```bash +cd examples/http +npm install +npm run build +``` + +### Artifact Discovery + +Location: `examples/discover/` + +Explores the artifact graph to detect policy violations in related attestations. Demonstrates the discover builtin function. + +**Build:** +```bash +cd examples/discover +npm install +npm run build +``` + +**Test:** +```bash +chainloop policy develop eval \ + --material ghcr.io/chainloop-dev/chainloop/control-plane:v1.57.0-amd64 \ + --policy policy.yaml +``` + +## Project Setup + +### package.json + +```json +{ + "name": "my-policy", + "version": "1.0.0", + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} +``` + +### esbuild.js + +```javascript +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node', + external: [] +}).catch(() => process.exit(1)); +``` + +### policy.d.ts + +```typescript +declare module "main" { + export function Execute(): I32; +} +``` + +### policy.yaml + +```yaml +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: my-policy + description: My policy description +spec: + policies: + - kind: EVIDENCE # or SBOM_CYCLONEDX_JSON, ATTESTATION, etc. + path: policy.wasm +``` + +## JavaScript/TypeScript Compatibility + +This SDK is designed to work within the Extism JS PDK's limitations. + +### Supported Features + +- ES2020 syntax (no ES2021+ features) +- CommonJS modules (require/module.exports) +- Simple objects and arrays +- JSON.parse/JSON.stringify +- Synchronous operations only +- String manipulation and basic math + +### Unsupported Features + +- async/await (no Promise support) +- Node.js built-in modules (fs, path, http, etc.) +- ES modules (import/export) +- Browser APIs (fetch, localStorage, etc.) +- setTimeout/setInterval +- Symbols and WeakMaps + +### Recommended Patterns + +```javascript +// Good: Simple objects +const component = { + name: "lodash", + version: "4.17.21", + hashes: [ + { algorithm: "sha256", value: "abc123..." } + ] +}; + +// Good: Synchronous operations +const result = success(); +components.forEach(comp => { + if (!comp.name) { + result.addViolation("Component missing name"); + } +}); + +// Avoid: Async operations +// async function validate() { // Not supported +// const data = await fetch(...); +// } + +// Avoid: Node.js modules +// const fs = require('fs'); // Not available in WASM +``` + +## Build Configuration + +### Required Build Steps + +```bash +# 1. Bundle with esbuild (combines SDK + policy) +node esbuild.js + +# 2. Compile to WASM with extism-js +extism-js dist/policy.js -i policy.d.ts -o policy.wasm +``` + +Or use the npm script: +```bash +npm run build +``` + +### Build Options + +**esbuild configuration:** +- `bundle: true` - Combines all modules into one file +- `format: 'cjs'` - CommonJS format (required) +- `target: ['es2020']` - JavaScript compatibility level +- `platform: 'node'` - Node.js platform conventions + +**extism-js options:** +- `-i policy.d.ts` - Type definitions for WASM exports +- `-o policy.wasm` - Output WASM file + +### Typical File Sizes + +- Bundled JavaScript: ~7KB (policy + SDK) +- Compiled WASM: ~2.1MB (includes QuickJS runtime) + +## Testing + +Test your policies locally before deployment: + +### Quick Test + +```bash +# Build policy +npm run build + +# Test with material +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE + +# Test with arguments +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE \ + --input max_length=100 + +# Test with debug output +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind EVIDENCE \ + --debug +``` + +### Test Cases + +Create test files for different scenarios: + +| Test Case | Expected | Violation | +|-----------|----------|-----------| +| Valid input | Success | - | +| Empty/missing fields | Fail | Field-specific message | +| Wrong format | Skip | Format not supported | +| API unavailable | Skip | API error message | + +### Automated Testing + +Create a `test.sh` script: + +```bash +#!/bin/bash + +# Build policy +npm run build + +# Run tests +test_policy() { + local name=$1 + local material=$2 + local expect=$3 + + echo "Testing: $name" + output=$(chainloop policy develop eval \ + --policy policy.yaml \ + --material "$material" \ + --kind EVIDENCE 2>&1) + + if echo "$output" | grep -q "$expect"; then + echo "✓ PASSED" + else + echo "✗ FAILED" + echo "$output" + fi +} + +# Test cases +test_policy "Valid input" "test-data/valid.json" "violations\": \[\]" +test_policy "Invalid input" "test-data/invalid.json" "message cannot be empty" +test_policy "Wrong format" "test-data/wrong.json" "skipped\": true" +``` + +Make the script executable: +```bash +chmod +x test.sh +./test.sh +``` + +## Troubleshooting + +### Build Errors + +**Error: Cannot find module '@chainloop-dev/policy-sdk'** +- Cause: SDK not in node_modules or incorrect path +- Fix: Use relative path `require('../../index.js')` or install SDK as npm package + +**Error: esbuild not found** +- Cause: esbuild not installed +- Fix: Run `npm install` to install dependencies + +**Error: extism-js command not found** +- Cause: extism-js not installed globally +- Fix: Run `npm install -g @extism/js-pdk` + +### Runtime Errors + +**Policy execution failed: Host.inputString is not defined** +- Cause: SDK functions called outside Execute function +- Fix: Only call SDK functions inside the Execute function or callbacks + +**HTTP request blocked** +- Cause: Hostname not in allowed list +- Fix: Add hostname with `--allowed-hostnames` flag: + ```bash + --allowed-hostnames registry.npmjs.org,api.github.com + ``` + +**JSON parse error** +- Cause: Material is not valid JSON +- Fix: Use try-catch or skip() for non-JSON materials: + ```javascript + try { + const data = getMaterialJSON(); + } catch (e) { + outputResult(skip("Material is not valid JSON")); + return; + } + ``` + +**Wrong material kind** +- Check: policy.yaml kind matches data type +- Fix: Use correct kind (SBOM_CYCLONEDX_JSON, STRING, EVIDENCE, ATTESTATION, etc.) + +## Best Practices + +1. **Use the SDK module** - Import from SDK instead of copying functions +2. **Validate early** - Check input format before complex logic +3. **Return specific violations** - Clear messages help users fix issues +4. **Use skip for non-applicable cases** - Don't fail when not applicable +5. **Test with real data** - Use actual SBOMs/attestations for testing +6. **Log validation progress** - Use logging functions for debugging +7. **Handle errors gracefully** - Use try-catch for operations that might fail +8. **Keep it synchronous** - No async/await, all operations are synchronous + +### Example: Error Handling + +```javascript +function Execute() { + return run(() => { + // Parse with error handling + let input; + try { + input = getMaterialJSON(); + } catch (e) { + outputResult(skip("Invalid JSON: " + e.message)); + return; + } + + // Validate with clear messages + const result = success(); + + if (!input.message) { + outputResult(skip("Material missing 'message' field")); + return; + } + + if (input.message === "") { + result.addViolation("message cannot be empty"); + } + + if (input.message.length > 100) { + result.addViolation(`message too long: ${input.message.length} characters (max 100)`); + } + + outputResult(result); + }); +} +``` + +## Installation + +### Prerequisites + +```bash +# Install extism-js globally +npm install -g @extism/js-pdk + +# Verify installation +extism-js --version +``` + +### Project Setup + +```bash +# Create project directory +mkdir my-policy +cd my-policy + +# Initialize npm +npm init -y + +# Install build dependencies +npm install --save-dev esbuild + +# Copy SDK files (or clone from repo) +mkdir -p sdk +cp /path/to/chainloop/sdk/js/index.js sdk/ +cp /path/to/chainloop/sdk/js/index.d.ts sdk/ +``` + +## License + +Apache License 2.0 - See LICENSE file for details. diff --git a/policies/js/examples/README.md b/policies/js/examples/README.md new file mode 100644 index 000000000..41bc9e74b --- /dev/null +++ b/policies/js/examples/README.md @@ -0,0 +1,226 @@ +# JavaScript Policy Examples + +This directory contains example policies demonstrating various features of the Chainloop JavaScript SDK. + +## Examples + +### 1. Simple Message Validation (`simple/`) + +Basic string validation example demonstrating: +- Material extraction with `getMaterialJSON()` +- Policy arguments with `getArgStringDefault()` +- Result building with `success()`, `skip()`, and violations +- Logging with `logInfo()`, `logError()` +- Error handling with `run()` wrapper + +**Build:** +```bash +cd simple +npm install +npm run build +``` + +**Test:** +```bash +# Valid message +chainloop policy develop eval \ + --policy simple/policy.yaml \ + --material simple/test-data.json \ + --kind EVIDENCE + +# Empty message (violation) +echo '{"message": ""}' > /tmp/test.json +chainloop policy develop eval \ + --policy simple/policy.yaml \ + --material /tmp/test.json \ + --kind EVIDENCE + +# Forbidden word (violation) +echo '{"message": "this is forbidden"}' > /tmp/test.json +chainloop policy develop eval \ + --policy simple/policy.yaml \ + --material /tmp/test.json \ + --kind EVIDENCE + +# Custom max length +echo '{"message": "short"}' > /tmp/test.json +chainloop policy develop eval \ + --policy simple/policy.yaml \ + --material /tmp/test.json \ + --kind EVIDENCE \ + --input max_length=3 +``` + +### 2. SBOM Validation (`sbom/`) + +CycloneDX SBOM validation example demonstrating: +- Parsing SBOM materials +- Validating component structure +- Checking for required fields +- Logging validation progress + +**Build:** +```bash +cd sbom +npm install +npm run build +``` + +**Test:** +```bash +# Valid SBOM +chainloop policy develop eval \ + --policy sbom/policy.yaml \ + --material sbom/sbom.json \ + --kind SBOM_CYCLONEDX_JSON +``` + +### 3. HTTP Requests (`http/`) + +HTTP request example demonstrating: +- Making external API calls with `httpGetJSON()` +- Hostname restrictions for security +- Error handling for network failures +- Validating API responses + +**Build:** +```bash +cd http +npm install +npm run build +``` + +**Test:** +```bash +# With allowed hostname +chainloop policy develop eval \ + --policy http/policy.yaml \ + --material http/data.json \ + --kind EVIDENCE \ + --allowed-hostnames httpbin.org + +# With blocked hostname (will fail) +chainloop policy develop eval \ + --policy http/policy.yaml \ + --material http/data.json \ + --kind EVIDENCE \ + --allowed-hostnames www.example.com +``` + +### 4. Attestation Validation (`attestation/`) + +In-toto attestation validation example demonstrating: +- Parsing in-toto attestation materials +- Complex validation logic with nested structures +- Git commit SHA validation +- Predicate type checking +- Debug logging with `logDebug()` + +**Build:** +```bash +cd attestation +npm install +npm run build +``` + +**Test:** +```bash +# Valid attestation +chainloop policy develop eval \ + --policy attestation/policy.yaml \ + --material attestation/attestation.json \ + --kind EVIDENCE +``` + +## Common Build Steps + +Each example follows the same build process: + +1. **Install dependencies:** + ```bash + npm install + ``` + +2. **Build the policy:** + ```bash + npm run build + ``` + + This runs: + - `node esbuild.js` - Bundles the policy with the SDK + - `extism-js dist/policy.js -i policy.d.ts -o policy.wasm` - Compiles to WASM + +3. **Test locally:** + ```bash + chainloop policy develop eval \ + --policy policy.yaml \ + --material \ + --kind + ``` + +## Project Structure + +Each example contains: +- `policy.js` - Main policy implementation +- `policy.yaml` - Policy metadata and configuration +- `policy.d.ts` - TypeScript declarations for WASM exports +- `esbuild.js` - Build configuration for bundling +- `package.json` - npm package configuration +- Test data files (JSON) + +## SDK Features Demonstrated + +### Material Extraction +- `getMaterialJSON()` - Parse JSON material +- `getMaterialString()` - Get material as string +- `getMaterialBytes()` - Get material as bytes + +### Arguments +- `getArgs()` - Get all policy arguments +- `getArgString(key)` - Get specific argument +- `getArgStringDefault(key, default)` - Get argument with default + +### Results +- `success()` - Create success result +- `fail(...violations)` - Create failure with violations +- `skip(reason)` - Skip policy execution +- `result.addViolation(message)` - Add violation to result +- `outputResult(result)` - Output final result + +### Logging +- `logInfo(message)` - Info level logging +- `logDebug(message)` - Debug level logging +- `logWarn(message)` - Warning level logging +- `logError(message)` - Error level logging + +### HTTP Requests +- `httpGet(url)` - Perform GET request +- `httpGetJSON(url)` - GET request with JSON parsing +- `httpPost(url, body)` - Perform POST request +- `httpPostJSON(url, obj)` - POST request with JSON + +### Execution +- `run(fn)` - Wrap policy execution with error handling + +## Troubleshooting + +### Build fails with "Command not found: extism-js" +Install the Extism JS compiler: +```bash +npm install -g @extism/extism-js +``` + +### Build fails with "Cannot find module" +Make sure to run `npm install` in the example directory first. + +### Policy fails with "hostname not allowed" +Add the hostname to the `--allowed-hostnames` flag when testing HTTP policies. + +### Test data format errors +Ensure test data matches the expected structure for the material kind. Check the example data files for reference. + +## Next Steps + +- Review the [JavaScript SDK README](../README.md) for detailed API documentation +- Check the [Go examples](../../go/examples/) for additional patterns +- Read the [Policy Development Guide](https://docs.chainloop.dev/policies/) for best practices diff --git a/policies/js/examples/attestation/attestation.json b/policies/js/examples/attestation/attestation.json new file mode 100644 index 000000000..0eeba5e9b --- /dev/null +++ b/policies/js/examples/attestation/attestation.json @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle+json;version=0.3", "verificationMaterial":{"certificate":{"rawBytes":"MIIB5DCCAWqgAwIBAgIUTkTpG5R6ygnHRqQmIK5IL+4ZqlcwCgYIKoZIzj0EAwMwLDEWMBQGA1UECgwNY2hhaW5sb29wLmRldjESMBAGA1UEAwwJY2hhaW5sb29wMB4XDTI1MTEyMDE4NDcwOVoXDTI1MTEyMDE4NTcwOVowLzEtMCsGA1UEChMkOTNkMDIyNzUtODUzYy00YWQ2LTlkNjAtOGY1NjJiMTIzZmQyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkNRakAMh48B8rJ3oF6IK5Xf7m7VqgH/TbXIh+du9+9/nwO1Q9xYZQs5kOUkwcwtJBHsJvKtzX4iLKqEvxjNxiKNnMGUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSKrfHt/x+Dq/qNpB6H6WKOE01TljAfBgNVHSMEGDAWgBTmzi6ht2KmAQFfrGvKtZDRGyR0hzAKBggqhkjOPQQDAwNoADBlAjEA6YL3S9XOQ7qT//wzLTnVrxo1TvZWXHLENfF5HDyalahN0/rRXTmg5e1NR041FWwgAjBwPw9ZFPriIFb1ivvPJ3KPRWjV0Si+5sYEsH0QaR5sO8005ggap6uSQ0Lmp7ihimw="}, "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIIEKTADAgEAMIIEIAYJKoZIhvcNAQcCoIIEETCCBA0CAQMxDzANBglghkgBZQMEAgEFADB3BgsqhkiG9w0BCRABBKBoBGYwZAIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIMBtDKbWppVtbNLydsUnlB7/9QyuLFjW3rN1KpUEFb5YAhBDnvSIw2jx3d9mu0WrdCkvGA8yMDI1MTEyMDE4NDcwOVoxggN8MIIDeAIBATB9MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYgMjAyNSBDQTECEAqA7xhLjfEFgtHEdqeVdGgwDQYJYIZIAWUDBAIBBQCggdEwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNTExMjAxODQ3MDlaMCsGCyqGSIb3DQEJEAIMMRwwGjAYMBYEFN1iMKyGCi0wa9o4sWh5UjAH+0F+MC8GCSqGSIb3DQEJBDEiBCDAoMc1SHl0SHgyXxSBkJPzglyiN54J7Cgv6Cw9aL0t9jA3BgsqhkiG9w0BCRACLzEoMCYwJDAiBCBKoD+iLNdchMVck4+CjmdrnK7Ksz/jbSaaozTxRhEKMzANBgkqhkiG9w0BAQEFAASCAgB8UDN1N+H2/lj6x+8x1WYNJ7m8NUJ8JmgebR8fykkfWP9SKZJOTTjTzH2FRgjpD9y1YQm66iJrUgYrHWS/1wWlwSkbd0uZEiwytqnRmukfcNEb8IhYyoIFdjLit4uhjWtevPHdKV3nqqQR3wd1AXgw1BZ7xaA6Y01zUgf4fAEGAuRs8rQMrkAqs9p1QRrzow7EudVCt1Cd3D4/JhnTsN9y+vRVWRfx3yC4XkHxNIgudlw0drJLRabp3knU/MgsE5ShbbtEGDfRNdb11NZYLfA2mhcBmfPcjyvDXsAFd2/D0alpO5zwbqCKMmr2fD3b7CYBSqhz/fMWzyxDSfXa5LUNRINb8r0AF7MnvWWWImumUHT/aD4P7uU/KiQ8AckHgWB1pzctxHe65wxWj2FblAoNTwzi7K7sJYuLp07fZIoS0GTgMqUrNaNGhJK2glFwZYZlSS0pAFxTNF4wP7ZZKiuQaDdG/tuPpJ0H7zyAVmeDt/TVUQ2IWHzXXzWUQzNdj2OQa5loHtAvJ1cDgD0BlcuNGrsIUQmG3CQuPhTwTKYHAKTcjPDY1KJe6IvJYhwNfTL7ZfhUj0IhdFFb9w9CoAltDZUjJQnPQJgL8aoL7PuetEFo+GSPx8nbj6CqhcPZdSorxxn7RYbUFHtDfsW/9NAeEc2WorBvIV4BaOeCN4FViQ=="}]}}, "dsseEnvelope":{"payload":"eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCAic3ViamVjdCI6W3sibmFtZSI6ImNoYWlubG9vcC53b3JrZmxvdy5yZWxlYXNlIiwgImRpZ2VzdCI6eyJzaGEyNTYiOiJmM2FmMTFkMTRlYTk1MWYwNzYzMmYyZDY5ODY4YWZiNjdkOGJjMjJjNjlhN2FkMzVmMTkxYWRiMzRlODU2YzE4In19LCB7Im5hbWUiOiJnaXQuaGVhZCIsICJkaWdlc3QiOnsic2hhMSI6ImQ1ZmE0OGY1YzMxNDQzODQxOTVhMDE0MmQ2NDMwYzI1NDAxYjFiNzAifSwgImFubm90YXRpb25zIjp7ImF1dGhvci5lbWFpbCI6Im1pZ3VlbEBjaGFpbmxvb3AuZGV2IiwgImF1dGhvci5uYW1lIjoiTWlndWVsIE1hcnRpbmV6IFRyaXZpbm8iLCAiZGF0ZSI6IjIwMjUtMTEtMjBUMTg6MjQ6MDdaIiwgIm1lc3NhZ2UiOiJmZWF0OiBhZGQgc2tpcCBmaWVsZCB0byBwb2xpY3kgZ3JvdXAgYXR0YWNobWVudHMgKCMyNTY0KVxuXG5TaWduZWQtb2ZmLWJ5OiBNaWd1ZWwgTWFydGluZXogPG1pZ3VlbEBjaGFpbmxvb3AuZGV2PiIsICJyZW1vdGVzIjpbeyJuYW1lIjoib3JpZ2luIiwgInVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcCJ9XSwgInNpZ25hdHVyZSI6Ii0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tXG5cbndzRmNCQUFCQ0FBUUJRSnBIMXpJQ1JDMWFRN3V1NVVobEFBQTVDRVFBSkgzZUl2cWRuUmQyOGdxK3NhaDB1bmhcbmIrS3JFVUhIajFmQm5JcFNkTjArYk94ellqbmRXUDk3andNVHpHL3BtaEZwMEtPaUJIdUFMamtEZm5yV1Q2UkFcbkRVSllLeHV3UHRkMkZocE9ERERjUW54SGJ0Yk1mTXZIRW1oaGZXZ2hDUjg1NkcxdG1DbjJqWWtzaG1BNXBzSndcbmUyc0NNUHdLRUdFeGNzS3hIRUJSY2dFTjFibk5HcEJsdEZxbjA1TFN6amRmSjZORGgwQlpmT1VtcUZZcnNINDdcbjI3eWZ4VTRvTWMyM3VqOHhFb3VsclRkblh3Y05UR2svVXI3OE1lSGZuWm9ReEI0SVB2NGNnOVE4ZENKQVZPaHFcbmREcEIwL0ZRRmFFNVhTQ3BtZjV2SnBuRUxIcWxSOVdTVHMzV1Rib1hmd20xK2FTVittUmpwM1JVUmsvUXpiaHpcbnZJOXh1M2cwVjZHZ21HaE1jY01ZMWhlMWxVWkZWT284eWxLY05rSmZORGhZTXZCWlJac0dmbEovWm5GQi9hWEhcbkZHeWc1ckt2akhKTkEyNGtqU1ZoQkN5VFJRY3R5RFI5TGo0L0x0Nyt2UzEyVXVDNlplZW5RRU1OS1NHTUpyUmNcbmdybTZSazNwQ0VySXFEU1BNbGx2RG9KMTNMNkFJb2hGSkFSSW0yd3Jzbmc4cGE3VDBGZmF2aHFkei9adG5wNlVcbmJsU1pCa3Vyak1DN1BXWEY5OEN0ZVU4RUNHTStMdmxSY1l6UlZtdmNXNEM5VytDdGZkY2FKUVQyc2N6VllvaWxcbjg4KzRIWjgzNjJNYWQyN2lBelU0Wmh0S0t2eVp1QlRYYXZIOW9OUG5LOXgvb09FTnR4N0NjbXVVejk1K1c4TkJcbk5KMExMemFZVy8zSi9uZS9nWkRoXG49UjNTYVxuLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tXG5cbiJ9fV0sICJwcmVkaWNhdGVUeXBlIjoiY2hhaW5sb29wLmRldi9hdHRlc3RhdGlvbi92MC4yIiwgInByZWRpY2F0ZSI6eyJhdXRoIjp7ImlkIjoiMzRiZjA5OWItNDFmZi00ODU3LTljZjYtNzY5ZDQzY2FkMzA1IiwgInR5cGUiOiJBVVRIX1RZUEVfQVBJX1RPS0VOIn0sICJidWlsZFR5cGUiOiJjaGFpbmxvb3AuZGV2L3dvcmtmbG93cnVuL3YwLjEiLCAiYnVpbGRlciI6eyJpZCI6ImNoYWlubG9vcC5kZXYvY2xpLzEuNjAuMEBzaGEyNTY6NjQxZjAwMmI5NDI0ZDMzOWZjOGJjZjc1NjAyNGQ0NDE0ZDQ0N2JlYjg2ZTJhZmVlMjU2ZjFmZjgyNzc1NzMxZiJ9LCAiZW52Ijp7IkdJVEhVQl9BQ1RPUiI6Im1pZ21hcnRyaSIsICJHSVRIVUJfUkVGIjoicmVmcy90YWdzL3YxLjYwLjAiLCAiR0lUSFVCX1JFUE9TSVRPUlkiOiJjaGFpbmxvb3AtZGV2L2NoYWlubG9vcCIsICJHSVRIVUJfUkVQT1NJVE9SWV9PV05FUiI6ImNoYWlubG9vcC1kZXYiLCAiR0lUSFVCX1JVTl9JRCI6IjE5NTQ3MjU3NjM3IiwgIkdJVEhVQl9TSEEiOiJkNWZhNDhmNWMzMTQ0Mzg0MTk1YTAxNDJkNjQzMGMyNTQwMWIxYjcwIiwgIlJVTk5FUl9OQU1FIjoiR2l0SHViIEFjdGlvbnMgMTAwMDA2ODgwNSIsICJSVU5ORVJfT1MiOiJMaW51eCJ9LCAibWF0ZXJpYWxzIjpbeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPalExTkRVd1ltVXhaV1ZrTkdZNFlqUXdZMkV5T0RZMk0yVmpNMlF4WXpNd1ptTTFZVFUyWkRFM1lqYzBaRGN3TXpWaE5HRTBNbVF4WldNME16WTRabUlpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzRaRGRqTldVd05XSTBaamd3TldOaFpESmhaVEl6WmpJek16bGtaalpsTVRWaFlUZGpOMlk0WVRkallqRXhNakpoTmprMU5qUXhPR1JoTWpNeE1UZzBJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlNIbGFUSEF4TkRsek9XNDNRM1ZsUkVnNVZVazNXV1IwUmxwc1JIWndkV0ZVYWxnMmMzaG9WVTQxYjBGcFJVRjJUM05KYlZwSVdVSllNR2RuYUdOaU0yazRZMmxvU1ZNNVVVVTViazFaUlRkUllqWmxiVGhtUTFCalBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpSMXBDZUZOTFMxZ3labEJMTmpGelREVldTa0YzTWpsVVF6azNhSHBIT0RCeWJEQldOVlpaTVRWcVNrRnBSVUU0U1hNclZVRTJVRTk2TlVwWWNVSnhaR3RMZVhwRE1tbzJkMVZaY3k5aGVUUm1jRzQ0VVVwUVlUQlZQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5GcEVaR3BPVjFWM1RsZEpNRnBxWjNkT1YwNW9Xa1JLYUZwVVNYcGFha2w2VFhwc2ExcHFXbXhOVkZab1dWUmthazR5V1RSWlZHUnFXV3BGZUUxcVNtaE9hbXN4VG1wUmVFOUhVbWhOYWsxNFRWUm5NRWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVMGhzWVZSSVFYaE9SR3g2VDFjME0xRXpWbXhTUldjMVZsVnJNMWRYVWpCU2JIQnpVa2hhZDJSWFJsVmhiR2N5WXpOb2IxWlZOREZpTUVad1VsVkdNbFF6VGtwaVZuQkpWMVZLV1UxSFpHNWhSMDVwVFRKck5Ga3liRzlUVmswMVZWVlZOV0pyTVZwU1ZHUlNXV3BhYkdKVWFHMVJNVUpxVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEEzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF5T1RrM056Y3NYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjozYTI0NjJlYjRiNGVjOTBlOTBlM2I2OTc1MzJmZjM2NzA0YmI1ZTM5OTRlNmVjNDQ4MmZjZmJkNzVjZDI1ZmE3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3NTdhZjYxNjNjMzc4ZjJmMzY0YTFkMWI2ZjlhODVjYWRlMDUzNWIxOWUyZmJhZGZkMGRmYjYzMDI3MmMwNDc2In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPbUkxWVdSaU56VmhPVE0zTlRkak9UQmxOamhqWWpreFlqbGhZems0WVdVMk16azFaamc1TnpRMU5USmpZVFV4Tm1FMVltTXlZakkxTkRCbU1EaGxZamdpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzRaR1F4WTJVd01qWmlZalUyWW1NM1pEaGhOamd3TTJSaU56UmxNVEZoTnpJd056QTRZV1kxWW1Sa016WXhPRFF6T1dJNU1tRmlZVEExTmpFd05XSTVJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlFtOVZRMXBOVEdWQ05IQndkVk5rYkcxbVZqQlZWemhNVjI4NGFrcHBWMnBDU2tFM1lXaEVRV3NyTkVGcFJVRXdiRzlYU2xaNGRsZ3dWMDFyUkRKcGRIQjBUbGh4YmxKV2NpOXNURGxIUTFBMFJUVXhhRkZXVDJGQlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5OTDFGclYzVTVkR0ZzVERKcFEzRXlVVlo2ZUZkek1IWTVaMlpNZGtkeldVZFNSVGRSU0V0VlRrRkJTV2RWWkhkblMxazFjMXAwZW1KRWVreHFOSEZVYUVoTVZFSlVTamRXVkRKWWEzcHBkbVp4YlhKdE9IbzRQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5GcEhVWGhaTWxWM1RXcGFhVmxxVlRKWmJVMHpXa1JvYUU1cVozZE5NbEpwVG5wU2JFMVVSbWhPZWtsM1RucEJORmxYV1RGWmJWSnJUWHBaZUU5RVVYcFBWMGsxVFcxR2FWbFVRVEZPYWtWM1RsZEpOVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVVzA1VmxFeGNFNVVSMVpEVGtoQ2QyUldUbXRpUnpGdFZtcENWbFo2YUUxV01qZzBZV3R3Y0ZZeWNFTlRhMFV6V1Zkb1JWRlhjM0pPUlVad1VsVkZkMkpIT1ZoVGJGbzBaR3huZDFZd01YSlNSRXB3WkVoQ01GUnNhSGhpYkVwWFkyazVjMVJFYkVoUk1VRXdVbFJWZUdGR1JsZFVNa1pDVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEEwTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF5T1RreU9UWXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1Njo4YmFlOGExMmQxM2YwMTg3MzVlMjA1ZTc0Y2NlNWQwYTFiNWJhMTMzYzcwOWVmMjBjMjMyODQxZWYwZDQ4NTIxIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4MzI0OTIwZDE3NzllYWFhN2ZmMGYyNTlkNTFlYTRjMzg4ODRjYzg1YmU2ZTc3ZGQ2MzhiNTZkMWQ3ZjVjZTMzIn0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC5uYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hcnRpZmFjdC1jYXMiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjBjMmQ2YTZhZjM1MzhmYzNlODM5ZGQ5OTJiZDlkNmI4MjUxNjliMGFjYTUwMWU5MTVjNDIyMWQ3NzBiOGFiMDgifSwgIm5hbWUiOiJzYm9tLWFydGlmYWN0LWNhczp2MS42MC4wLWFtZDY0LmN5Y2xvbmVkeC5qc29uIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvYXJ0aWZhY3QtY2FzIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJhYTU3NTQzMDBlYzI3MTYwM2I5NTZkZWU5NDQ0YzYxOWM0NGZmYWZiN2NjN2ViZmI4Nzc5Zjk1ZDNhNDE4YjNmIn0sICJuYW1lIjoic2JvbS1hcnRpZmFjdC1jYXM6djEuNjAuMC1hcm02NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvYXJ0aWZhY3QtY2FzIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJiOTFlNTIyM2E3ZjViZjU4MmIyMzVhNWNlYjQ1MjUzMmNlNGZkZWRmYzdhYzU5OTA5ZDYwOTdlZmQzOTYyYjAwIn0sICJuYW1lIjoic2JvbS1hcnRpZmFjdC1jYXM6djEuNjAuMC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJhcnRpZmFjdC1jYXMtdjEtNjAtMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qTTBNaXdpWkdsblpYTjBJam9pYzJoaE1qVTJPbVZtTURNeE1ETm1abVV6WW1KbU56WTNZamN3WXpVMlpEVmxOR0ZoWldRNE1XSTBaamczWVRaa1l6aGtOalF6TmpobE1URXdOekEwTnpWa09ESTFZbUlpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qQXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qcGpNMlUxTldSaE5ERXlNekEyWWpZeE5XTXpORFk0TmpWbU4yTTVOemN6WXpabU56aGtNRFJtTldSaFpEa3pPR0ppTjJJNU1HTTJNemhsTW1JMk5UaG1JaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlNDdEtUWE5IUTFsaGRsQjRSVWR2Vkdoc0szVmtjWEpTV21jNE1scHVlR3RuTTAxNldFOXJPWGhMTTBGcFJVRjZTV0pWYkVnNGQxSXhObGxCYUhKaFJHSTFLM2RRWTA1VFIxQjRSRGhMYnpaeVJtMVZSREJDV1dOdlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5UVkhsVk9XSjROVlZZV0dwMFUwWjFiMHRRY0VKMEwzQmtaR2x3VVM4NFRHbFNaVmN4U0hWUU5UTm5TV2RrV201MVFrWklNRkZLYzJvek56UXhXRzFYUzFoeFEyZzFjV0UyVHpWek1YRlpjbFpSVFdKblZuTkpQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsS2FrMHlWVEZPVjFKb1RrUkZlVTE2UVRKWmFsbDRUbGROZWs1RVdUUk9hbFp0VGpKTk5VNTZZM3BaZWxwdFRucG9hMDFFVW0xT1YxSm9Xa1JyZWs5SFNtbE9Na2sxVFVkTk1rMTZhR3hOYlVreVRsUm9iVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVME4wUzFSWVRraFJNV3hvWkd4Q05GSlZaSFpXUjJoelN6TldhMk5ZU2xOWGJXTTBUV3h3ZFdWSGRHNU5NREUyVjBVNWNrOVlhRXhOTUVad1VsVkdObE5YU2xaaVJXYzBaREZKZUU1c2JFSmhTRXBvVWtkSk1Vc3paRkZaTURWVVVqRkNORkpFYUV4aWVscDVVbTB4VmxKRVFrTlhWMDUyVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVE13TEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURNeU9EVXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDBzZXlKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdVpHVjJMbU52YzJsbmJpNXphVzF3YkdWemFXZHVhVzVuTG5ZeEsycHpiMjRpTENKemFYcGxJam95TmpBc0ltUnBaMlZ6ZENJNkluTm9ZVEkxTmpwak0yVTFOV1JoTkRFeU16QTJZall4TldNek5EWTROalZtTjJNNU56Y3pZelptTnpoa01EUm1OV1JoWkRrek9HSmlOMkk1TUdNMk16aGxNbUkyTlRobUlpd2lZVzV1YjNSaGRHbHZibk1pT25zaVpHVjJMbU52YzJsbmJuQnliMnBsWTNRdVkyOXphV2R1TDNOcFoyNWhkSFZ5WlNJNklrMUZWVU5KUmxsNk5VNTNjekZvWTBVek5IVmtlQzloYjIxeUsyOXNla1pPY21sbFMwTllla3MxZUhweFZrTnZVMEZwUlVGbmRDOTRWVVpxV21ST2VsQklaR1lyZWpSaGFrVXZUSEYxTjJ0UE5WVkdhM0o1T1doWmNFWnFRVGRuUFNJc0ltUmxkaTV6YVdkemRHOXlaUzVqYjNOcFoyNHZZblZ1Wkd4bElqb2llMXdpVTJsbmJtVmtSVzUwY25sVWFXMWxjM1JoYlhCY0lqcGNJazFGVVVOSlIwaHpRbHBtYjFORVNtVTVZbnAxZW1Wbk5IZDZXbTlTVDNabWJXdFFVbkpZVTFGRWNVNVBaVFpEUWtGcFFuZFFTV3BRT0hkeVUyTlJWR0pVY25vM1NEZG9hWGhqUVZWQk5FOXROM1ZKTDNGNVlXdEZibEE0YTFFOVBWd2lMRndpVUdGNWJHOWhaRndpT250Y0ltSnZaSGxjSWpwY0ltVjVTbWhqUjJ4WFdsaEtlbUZYT1hWSmFtOXBUVU0wZDB4cVJXbE1RMHB5WVZjMWEwbHFiMmxoUjBaNllVZFdhMk50Vm5KaU0wcHJTV2wzYVdNelFteFplVWsyWlhsS2ExbFlVbWhKYW5BM1NXMW9hR015WjJsUGJuTnBXVmQ0Ym1JelNuQmtSMmgwU1dwdmFXTXlhR2hOYWxVeVNXbDNhV1J0Um5Oa1YxVnBUMmxLYWsweVZURk9WMUpvVGtSRmVVMTZRVEpaYWxsNFRsZE5lazVFV1RST2FsWnRUakpOTlU1NlkzcFplbHB0VG5wb2EwMUVVbTFPVjFKb1drUnJlazlIU21sT01razFUVWROTWsxNmFHeE5iVWt5VGxSb2JVbHVNVGxNUTBwNllWZGtkVmxZVWpGamJWVnBUMjV6YVZreU9YVmtSMVoxWkVOSk5rbHJNVVpXVlU1S1VteHNOazVWTlROamVrWnZXVEJWZWs1SVZtdGxRemxvWWpJeGVVc3lPWE5sYTFwUFkyMXNiRk13VGxsbGEzTXhaVWh3ZUZaclRuWlZNRVp3VWxWR2JtUkRPVFJXVlZweFYyMVNUMlZzUWtsYVIxbHlaV3BTYUdGclZYWlVTRVl4VGpKMFVFNVdWa2RoTTBvMVQxZG9XbU5GV25GUlZHUnVVRk5KYzBsdVFqRlpiWGh3V1RCMGJHVlRTVFpsZVVwcVlqSTFNRnBYTlRCSmFtOXBWRVpOZDJSRmVGUk5WVTVUVmxkU1MxWkhiRU5WVmxwV1Uyc3hWRlpWTVc1VmVrSlhWMnQ0VkUxSVVrMVZla0pNVmtaV1lXTnRVWGRXYWs1WVZsZG9UVmxxUm5kVGJWWjBZak5rVWsxRldsTldNVlp6VkVkSmVHTkZjR3hpVnprelZXdFdSMVZzYTNkVmJFcGhUVVZhUjFaR1ZrdFdSazV5VW1wQ1ZsSnRVakpVYTJSdllqRmFTR0ZHVWxKaE0wSmFWVzF3YzJReGNIUmhSM2hXVWtWWk1GUnVaSGRUTVZaWFUydFdUbUpVUm5OYVZtUk9UbFV4Y2sxWGNGTmhlbWN4VkcxNGEyTXhWbkpUV0doc1ZtMU9ORlJXWkRCU1JURnhWVzAxVjJKV1NUQldSRTV6V1ZkU2NrOVVXa3hOTUZwNVZEQldUMVV3ZERWUFNHeFRUVEZhVTFZeFpEUmlSazE2Vkd4S1VWWkVRa3hVUmsxM1pFVjRWRTFWV2xWaE1VWnVWbFZhVjFFeFVrWmlSVkpLVWxoU1IxWXhUWGRrUlhoVVRVaFNSRnA2TURsSmJqRTVabGd3UFZ3aUxGd2lhVzUwWldkeVlYUmxaRlJwYldWY0lqb3hOell6TmpZME1UTXpMRndpYkc5blNXNWtaWGhjSWpvM01UQXpNRE0zT0Rrc1hDSnNiMmRKUkZ3aU9sd2lZekJrTWpOa05tRmtOREEyT1RjelpqazFOVGxtTTJKaE1tUXhZMkV3TVdZNE5ERTBOMlE0Wm1aak5XSTRORFExWXpJeU5HWTVPR0k1TlRreE9EQXhaRndpZlgwaWZYMWRmUT09IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUuZGlnZXN0Ijoic2hhMjU2OjE1NGVhZTUwODNlNTQ2NzhiNTE2OWQ5ZWZlOTU2MjQyMDYxZDg5YTZlYThmOWJkNjI0MDgwMDAxNTU5NmVhNjkiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5wcm92aWRlciI6ImNvc2lnbiIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImI2OGExZDlmNGJhNzUzNDQ0MWJlODZmZjE0YTQ2NTllOWIzOGQ4MDcwNjYxNjZjZmVkMzUwMjk2MDc2OTM3ZjQifSwgIm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2FydGlmYWN0LWNhcyJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNoYWlubG9vcC1kYXJ3aW4tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJBUlRJRkFDVCJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQyMGRhNmU0Mjc2MDA0YTZkOWQyYmMzYjU1YzBlNmFhYzI1ZTNkMzY0ODk1YThjZTU2MzBmMTBhMmEwOWNlMzEifSwgIm5hbWUiOiJjaGFpbmxvb3AifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjaGFpbmxvb3AtZGFyd2luLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjOWYxMmFjZGJmMTRhNmQzZWU0NmQ4ODc0NjRhMTU4Njk5ZDg3YzM4NjJlMjA4OTJkZmUyM2IwMTkxMTQyZjEyIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2hhaW5sb29wLWxpbnV4LWFtZDY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2NDFmMDAyYjk0MjRkMzM5ZmM4YmNmNzU2MDI0ZDQ0MTRkNDQ3YmViODZlMmFmZWUyNTZmMWZmODI3NzU3MzFmIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2hhaW5sb29wLWxpbnV4LWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQVJUSUZBQ1QifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZmNiODUyZjE5MWJjNTMzNjBmNDllYWEyY2MyNWJhMWVlNjY1NDQwZjZjZGIyNTMyNDUzMWZiZDNkNWVkNzVhIn0sICJuYW1lIjoiY2hhaW5sb29wIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJMk1tSm1ZVGcxWWpNNVpUQXlNR0ZrWWpJelpqZzNabU01Tm1Fd1kySmhaVEpqWXpGbE5EYzRZV05sTWpjd05qZ3hNamM1TkRWa1pUZGlNMlptWmpraWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam80WXpabFptTmhORGt6T1dJeE1qQmlPR1ZoTVRnNVlqZ3pOR1l4Tm1FeVlqWTJNamxpWWpneVlUZGhaalJoTVRNMFl6STROalV3TURNellXVXpOR1kwSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRldVTkpVVU13T1ZKc1dHZE1kMlJoVFVOMFRFbHlhbVI2SzFWcmIxcFZjV1JFV0dwVmN6ZERTR2t3TDI1NVNqWjNTV2hCVGtoV2IzQjFSMFozYVV0alNWazNLelpvV1ZSSlQzRkxSbHB2U0VFclJ6bFVaVUpaSzFac1kyeHlVaUlzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVOR1FuWllTRFZ3YTNSbldWTmxWbU5pZG00MlNFUnRhVzlXV25jMFpFVk9MMFpJVmxkWFp6aEJWa2RSU1doQlNscHdaekE1VURsR2FtNTNhbmxhZEhWd1p5OUVlR28wT0dOdVFXWklUVVJXYXpSeWJsSlhVV0ozY0Z3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpORmw2V214YWJVNW9Ua1JyZWs5WFNYaE5ha0pwVDBkV2FFMVVaelZaYW1kNlRrZFplRTV0UlhsWmFsa3lUV3BzYVZscVozbFpWR1JvV21wU2FFMVVUVEJaZWtrMFRtcFZkMDFFVFhwWlYxVjZUa2RaTUVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlhWVTVLVlZWTmQwOVdTbk5YUjJSTlpESlNhRlJWVGpCVVJXeDVZVzFTTmtzeFZuSmlNWEJXWTFkU1JWZEhjRlpqZW1SRVUwZHJkMHd5TlRWVGFsb3pVMWRvUWxScmFGZGlNMEl4VWpCYU0yRlZkR3BUVm1zelMzcGFiMWRXVWtwVU0wWk1VbXh3ZGxORlJYSlNlbXhWV2xWS1drc3hXbk5aTW5oNVZXbEpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRJd0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1ERTNOVEVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6Zjk2MWNhYmRmMGIzYjI2YmY2MjExZWM3OGI5MDM0NWYxMzFkYjRhMDYxOTE0ZDFlM2FkODdjYmI4Y2U3OWQxNSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMjgzYWUyMDBjYjE4ZmUwNThiMDJkY2VjYzA2MjI0ZWY3ZmU2YTM2ZmEyY2Y2Mzc5ZTViNzBmNjFhYTQ1NDI2ZSJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pGa01XVTFNbVZtTVRJMFlUUmlaVGN6WWpRNFptSTFPR1V3TlRZeU9HRTBNV0kxTURKbE16Y3pZek14TlRCalpqRmhPV1UyWmpJMVkyUTRNRFl4WVRNaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam94TjJOaE0yRXlNak14TlRCa01qZGtOR1kwWXpkaE1tVTBNVGN6TVdObE9ETTJNelUxTXprelpEaGhNelF5T1RkbVlqVTNNelppTW1OaVpEUmhZMlZoSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpRVmhPUW5oblpWcFJWR013TDBKSVIxZHdabkIwVUhZekswOVNOSFIyWVN0VlNtWnJNMmxFZWpWbVFrRnBRa0ZpUjNCck5WQmFSRTFTZVRWbk5GaDRhazB3UkVGV1VUVnJSSEZ3ZVZscFpWTjFTbXRKWVU5eGJHYzlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZWVU5KVVVSemVITmxjR2RQZEZGVGRtaFdTRWxsWlRSbGFWVjFVV3BQWVhCYWJIVjJWbFkzVG1zclJtVnRjbFIzU1dkTU5rdDFRVFJMTDNCeVRVdEJiVmMwYml0TVl6TkROREF5TTB0VFRuZE5VRk40UkcxbU5EbDFiVWRuUFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEplRTR5VG1oTk1rVjVUV3BOZUU1VVFtdE5hbVJyVGtkWk1GbDZaR2hOYlZVd1RWUmplazFYVG14UFJFMHlUWHBWTVUxNmEzcGFSR2hvVFhwUmVVOVVaRzFaYWxVelRYcGFhVTF0VG1sYVJGSm9XVEpXYUVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVVZab1QxRnVhRzVhVm5CU1ZrZE5kMHd3U2tsU01XUjNXbTVDTUZWSVdYcExNRGxUVGtoU01sbFRkRlpUYlZweVRUSnNSV1ZxVm0xUmEwWndVV3RHYVZJelFuSk9Wa0poVWtVeFUyVlVWbTVPUm1nMFlXc3dkMUpGUmxkVlZGWnlVa2hHZDJWV2JIQmFWazR4VTIxMFNsbFZPWGhpUjJNNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRFM0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1ERXlOakVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6NGRmZDYyOTI3MzVkYWU0NzQyN2ZhYjljZjcwMTg4MDFjYTQwNjQxMjBmYzBhZjJhMTJjZDc0YjkzNDcwOTgwMSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMGU5M2NiNGE0YTZjNTcwZjJjYzUzOTc5ZmU2MDYxNjU4YWZkNjg1MjRhMjYzZDIwOTVmM2RjZTdjZjdlMDkxMiJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2xpLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY2xpIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIyMzI0OWUzMzgzODg5ZjdiZjg2ZDk3MjM1ZDNkYTRjMmZiMjFlODFjNDM5MGJmYWMzYmZjODE2Y2M5YTMzNjExIn0sICJuYW1lIjoic2JvbS1jbGk6djEuNjAuMC1hbWQ2NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NsaSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNzU1N2EzZTEwYzFkZGVkNzAwMzJiY2FkNzg3YzY4OTQwZmNlY2ZlYjUxMmU4YmZmOGJkNjNjMTg3Y2E2ZjQxZCJ9LCAibmFtZSI6InNib20tY2xpOnYxLjYwLjAtYXJtNjQuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjbGktc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NsaSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzY2YjYzM2NmOGEwYWE4NzgzY2U5MThiYTUyZTI4MDA1Zjk1YTAxMWQxMzhjY2E2ODQyMjA0OWMxZWRlYzU3NyJ9LCAibmFtZSI6InNib20tY2xpOnYxLjYwLjAuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY2xpLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21JME5XTXpOMk5qTVRWa05tSTRNMkl4WmpRNE1tRmhORFF5TVRGaFlqSTNZek16TVdNek1tSXpOakJrWkRKaE5UTTRNamMwTmpCaE5qSmhOalkwWkdRaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOVEVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOanBtTUdRd05qWXpOV0k1T0RGbFltUTFPVGN6TnpjMFpUSTVObU5qTW1NNU4yUTRNR1ZtTmpjMk1EVXpabVE1TldReE5qZ3pOV0ppWm1NMlkySXhOVFZpSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpRbTFNTW14RU1pOTJVbk50VkhCTk1HVjNhRWR4WWxKUFYzbENjRVpCUjBzdlJHZ3JkRmxsYjBaalVrRnBRWEJCZVd3MVltaGlaMk55T0Vab0swWm9abXhSUTFOWk0weFNaVmR6SzNwb1puSm9abWx2VkRkc2EyYzlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5KUjJGNE9WVjRVamd2VmtweEszcHplVE5SYTJWeWJsQjJhVkpQZG1sMGRIQlFXREJLV1RkR0wwcFVla0ZwUVRsdVdWUmtWVTVqVW01dmRUQXZTMlIwVERJelkwSndUV1JYTlZSNGFUUkxaM05NVlVaNk9VaEZLMUU5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEtiVTFIVVhkT2FsbDZUbGRKTlU5RVJteFpiVkV4VDFSamVrNTZZekJhVkVrMVRtMU9hazF0VFRWT01sRTBUVWRXYlU1cVl6Sk5SRlY2V20xUk5VNVhVWGhPYW1kNlRsZEthVnB0VFRKWk1rbDRUbFJXYVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVVcweFRVMXRlRVZOYVRreVZXNU9kRlpJUWs1TlIxWXpZVVZrZUZsc1NsQldNMnhEWTBWYVFsSXdjM1pTUjJkeVpFWnNiR0l3V21wVmEwWndVVmhDUW1WWGR6RlpiV2hwV2pKT2VVOUZXbTlMTUZwdldtMTRVbEV4VGxwTk1IaFRXbFprZWtzemNHOWFia3B2V20xc2RsWkVaSE5oTW1NNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRRMExGd2liRzluU1c1a1pYaGNJam8zTVRBek1EVTBPRFlzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5URXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qcG1NR1F3TmpZek5XSTVPREZsWW1RMU9UY3pOemMwWlRJNU5tTmpNbU01TjJRNE1HVm1OamMyTURVelptUTVOV1F4Tmpnek5XSmlabU0yWTJJeE5UVmlJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGV1VOSlVVUm9SR2d3TTA1cFdYQmFXWGxSYTBkWmExVkdla1p0Y0dzdk1XVldhVlpoTUhWMGNVOW5WRVJ1V0VWUlNXaEJUakJKWTB4VU5XZHVOR2h2U1ZoM1VIb3ZiQzg1UW1GRWJIZHBhMVZwZVU4elkwTkdTa0ZUZDBsR01DSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRldVTkpVVVJZVFZWMFVVNVBNa1pGTkhNM1V6RTBWVTA0YnpCelNHZEhiMDlhUjBOUmNscGxhVTVEYUVkM1pUVm5TV2hCVHk5d1MzRlFiRkZwVkZsUVl6WnRWMWs0SzJka1FqVXpjME5LYTJKdFl6QXZRekZ3T1RsdFVXNUVlVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsS2JVMUhVWGRPYWxsNlRsZEpOVTlFUm14WmJWRXhUMVJqZWs1Nll6QmFWRWsxVG0xT2FrMXRUVFZPTWxFMFRVZFdiVTVxWXpKTlJGVjZXbTFSTlU1WFVYaE9hbWQ2VGxkS2FWcHRUVEpaTWtsNFRsUldhVWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaWFZVNUtWVlZTYjFKSFozZE5NRFZ3VjFoQ1lWZFliRkpoTUdSYVlURldSMlZyV25SalIzTjJUVmRXVjJGV1dtaE5TRll3WTFVNWJsWkZVblZYUlZaU1UxZG9RbFJxUWtwWk1IaFZUbGRrZFU1SGFIWlRWbWd6VlVodmRtSkRPRFZSYlVaRllraGtjR0V4Vm5CbFZUaDZXVEJPUjFOclJsUmtNR3hIVFVOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVFEzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURZd05EWXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoxOGM0NTg4MTlkNWU5ZTNkZjkyM2MwN2NkZjU5ZTIyZjRkMTJjYWNiNDQ1ZWUyNjU1YTA4ODRjYmVhMWE3YzMyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlYmZmOTA0MzBjMDNhMmM3NGE3YzE4Zjk4NjczZTNkNGFjMTM2YWZjMjU0MTNlYjAxNTkwOGQzZDcxNzI2NzUzIn0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jbGkifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6ZmFsc2UsICJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UudGFnIjoidjEuNjAuMC1hbWQ2NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21FeE16bGtNalEyWldRMU5qUmtNV1ZoWTJNMk1qRTFZMk5oTlRWa1pHSXhOek0zWWpCaFlXTmtOV05oTkdSbE4yRTNOREV6TVRVellXUmxaRGsxTm1ZaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOakVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam8wWkRrMFlqUXdZamt6WmpoaU5qa3hORFpqWmpKa1pEWXpaVFk1WkdWa04yUmlaamhoWkRFMk1ETmxNelZtTURFMk16YzNORGxsTVRFeU5EY3dOakl5SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSRmMzVVZCYVEyRndUakV3SzJSNFptRjJZMVF3VVdsUGNWbFFUV0pWZDJGTlQyRkdUbEpyYzBOSVEwRnBSVUZzVEc5QksxaFlhSFZaWWtKMlQzVnVSVUpQZWtWWmNVaExNR1IyU1ZwWmFuaHdTekoxVmxBeWVUTnZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZWVU5KVVVOWlVHdENibEp6TTJNeFUwa3JUSHBHWmtSUlRHRlBORXhVVGl0d2EzbDRVVlEwVkZkUmIwOXNaMWRuU1dkamNFcG1lR0ZrUzJNd1MzcGxPV2R6WjBGTFdGQTJhVVZqVWpWd2IwOXhXa1l2YURNNGQzTXhSbkp6UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpNRnBFYXpCWmFsRjNXV3ByZWxwcWFHbE9hbXQ0VGtSYWFscHFTbXRhUkZsNldsUlpOVnBIVm10T01sSnBXbXBvYUZwRVJUSk5SRTVzVFhwV2JVMUVSVEpOZW1NelRrUnNiRTFVUlhsT1JHTjNUbXBKZVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWtaak0xVldRbUZSTWtaM1ZHcEZkMHN5VWpSYWJVWXlXVEZSZDFWWGJGQmpWbXhSVkZkS1ZtUXlSazVVTWtaSFZHeEtjbU13VGtsUk1FWndVbFZHYzFSSE9VSkxNV2haWVVoV1dsbHJTakpVTTFaMVVsVktVR1ZyVmxwalZXaE1UVWRTTWxOV2NGcGhibWgzVTNwS01WWnNRWGxsVkU1MlVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRFd0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1EQXlOakVzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6ZjVlYmY5NGE5M2M4MTFiMmJiMGQ5ZWIwOTdlYzk2ZTMzOTlmYjc3YzgzMGM2ZmU5ZjlkMmRmZmI5MTg3NjIzMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMTEzNDE2ZjgyYWViNjk3ZWQ5ZDQ1Nzc5NDIxN2MyN2Q1NzI5NmY5MGEwOWMyNmRhZjM5M2ZkMzAwN2JhYWVjZiJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZSJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjpmYWxzZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlIjoiZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmhjSEJzYVdOaGRHbHZiaTkyYm1RdWIyTnBMbWx0WVdkbExtMWhibWxtWlhOMExuWXhLMnB6YjI0aUxDSmpiMjVtYVdjaU9uc2liV1ZrYVdGVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmRtNWtMbTlqYVM1cGJXRm5aUzVqYjI1bWFXY3VkakVyYW5OdmJpSXNJbk5wZW1VaU9qSXpNeXdpWkdsblpYTjBJam9pYzJoaE1qVTJPall5WWpNNE9XRTFaRE5sWVRrNE1XRmlNbVkxTnpjMFkyWmpZMk00TmpkbE1qY3hNREkxWkRNeU4yRTVPR1l3TlRNNVlUSTJaRGN6TldRNFltSTROakFpZlN3aWJHRjVaWEp6SWpwYmV5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qRXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzJZamsxTkRSaVkyRm1OakJtTXpjd1ltTmhaVGt6TXpZNE56WTFaVFE1T0Raak1UUTVPV1ptWVRBMU56RmpaVFU0WXprelkyTXhOV0kxWWpNM01qRXpJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVVVOSlFVdFpVazVVY2l0cGVUaG5kbVJwYTB4dWJsZE9NSGRIYzFsSE0wOXBLMGRhU1dNd2VsYzVTakJ0WTBGcFFrSlFRbGRCUW5aMGNVVlpVSFJVVTJZMlFXRm9XbVZGT1ZGcFVYcDJibVV4V0RRMFlrdE1UVVZHWTNjOVBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlVVTkpRWFpLUVRsR1VHdGFiMHhLUTJabVZrMWFla3BETkROWk0zRm5NMjQwVFRNd1VXVTBSMmxVY2s1V1pVRnBRazVQTkU1QlIwWkNVRFp2TjA4MVZHOXNabEEzT1cxblNtNVRSblZpWlVONlNEVjNTRTlIWVROVGFHYzlQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk1sbHFhekZPUkZKcFdUSkdiVTVxUW0xTmVtTjNXVzFPYUZwVWEzcE5lbGswVG5wWk1WcFVVVFZQUkZwcVRWUlJOVTlYV20xWlZFRXhUbnBHYWxwVVZUUlplbXQ2V1RKTmVFNVhTVEZaYWswelRXcEZla2x1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaVlZVNUtVVlYwV2xWck5WVmphWFJ3WlZSb2JtUnRVbkJoTUhoMVlteGtUMDFJWkVoak1XeElUVEE1Y0Vzd1pHRlRWMDEzWld4ak5WTnFRblJaTUVad1VXdEtVVkZzWkVKUmJsb3dZMVZXV2xWSVVsVlZNbGt5VVZkR2IxZHRWa1pQVmtad1ZWaHdNbUp0VlhoWFJGRXdXV3QwVFZSVlZrZFpNMk01VUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEUwTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURBM056UXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoyNTBkNDA2ZjE3MzA3ODdiMDVmMjUzZmRiODQyZGQxNjBmMzE2MDNjMjNhODI0OGY1YmMzNzdjZTBkYmUzMjg3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJiNmMyZTA1NjRlODdjMWU1MTdmNzNiOGM1MTc0Njc2MzdjNGI5NDRhY2ZlOTI4MzZiNTViOWE2NGMwZmI5YTM2In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21VeVl6RmxZMlUwTVRFM01XRTROV0UyWldZd1ptWmtOekE1WkdGaVpEYzNaVGMyTlRkak5qaGlaVFE0T1RkaU5UazRZMkZpTm1WaVl6Z3lNamd3WVRnaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam8yTmpRMU9HTTJZV00yTlRaaVlUWTJNMlV6WkdWaU16TXdOR0k1Wm1Ka016SmpOR05pWXpBMVpHUTVPVGxrTmpJMk9XVmlaR0UwTldNeE5ESXhOVGRpSWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSMlJ4UjNacVNGZHJMMlJ2UjFONU9UYzRSa0ZhZDI0cmNtUlNSRWhHY1VwdGVsRlZUa1JYY1hwUFNVRnBSVUU1ZFhaMk0xRm1iMjVuWTFrNVNtTm1iMWg2VmxSVU1uWlRWR1IyZFc1UU1rZG9VM3BKYlZKRE9GRnZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVReFRtbHliVmx6WjJOeUwzVjJNSEZOYjJKSk9HVTNNUzlQUWtKWFYwZHJiRXg2TVdSUGFHZEdWa1ZCU1doQlRWVmhkblJuWW05cFlYUXZOV2RVZFdkbVUwMW1lams0V0ZCMk9VSnNVVmcyV201eGNXOU1aMnhUYUZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpNazVxVVRGUFIwMHlXVmROTWs1VVdtbFpWRmt5VFRKVmVscEhWbWxOZWsxM1RrZEpOVnB0U210TmVrcHFUa2RPYVZsNlFURmFSMUUxVDFSc2EwNXFTVEpQVjFacFdrZEZNRTVYVFhoT1JFbDRUbFJrYVVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWpKU2VGSXpXbkZUUm1SeVRESlNkbEl4VGpWUFZHTTBVbXRHWVdReU5ISmpiVkpUVWtWb1IyTlZjSFJsYkVaV1ZHdFNXR05ZY0ZCVFZVWndVbFZGTldSWVdqSk5NVVp0WWpJMWJsa3hhelZUYlU1dFlqRm9ObFpzVWxWTmJscFVWa2RTTW1SWE5WRk5hMlJ2VlROd1NtSldTa1JQUmtaMlVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRBd0xGd2liRzluU1c1a1pYaGNJam8zTVRBeU9UZzNNemtzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6YWM0NDk3NTc4MTkyMzQxMTY1ZTA0ZWY0OTgwYWM2NGRhMjYyNzE3OGY5ODkzMzEyYTZhNjg5NjJmYmQyODE3OSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiOGUzYTMzMjNjMWVlN2M1YWJmNGMwYTQyZDRjOTM3MzE0MTRmN2M5ZDc2ODVhMzZlZTQ5YzcwY2NiM2VlZjY3YyJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLmlzX2xhdGVzdF90YWciOmZhbHNlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYXJtNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPakl6TXl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJMlpqUmpaREUxTkdVNFptTTJPRFJqWVRsbE1tRmtZV1F5WlRJeE1XWTRPVEZtT0RFNE1ETmtORE5qWVdRM09UQTROMkk1TWpFNU56VXpZV0ZoTTJNaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOanBrTWpFd01UUTNaR1kxTWpReFlUQXlaV0ZoTmpNelpETTBOVGN5TnpsaFpXWTNNRFJpT1dNMllXSmxZelU0WWpJd1pUYzRPRGMyTjJNeVpqTTFPR000SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlVVTkpSVTFoWWxWTlMwUTRaMDAyZGtSNk5Hb3lXVk5MTTBocFMxcHZlWGh3T0d4WmJtczVZalJSUVRWU1EwRnBRa1phYlZSWlVuVlpkVUkxU0RWRlREZEVSMnhMZUdORVRGWkVjbFk1YUZweWRYVlVjeTl0WWtSeVFrRTlQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5KUW1kamNIbGpTa3RPZUZscVFWWjNNa2hoZFZaUVVsRXlWVTg1TVUxeVNqQjJOa1ZWV1RablFYaHpkRUZwUVhvdlV6TlNUbkpHVGpCV1R5dG9aRmhsYmxWWWIyMUpVRzlJVW5KV1RtSlZMM2hzWTFWSk5ETkdSbEU5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEthMDFxUlhkTlZGRXpXa2RaTVUxcVVYaFpWRUY1V2xkR2FFNXFUWHBhUkUwd1RsUmplVTU2YkdoYVYxa3pUVVJTYVU5WFRUSlpWMHBzV1hwVk5GbHFTWGRhVkdNMFQwUmpNazR5VFhsYWFrMHhUMGROTkVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWlZWVTVLVWxVeGFGbHNWazVUTUZFMFdqQXdNbVJyVWpaT1IyOTVWMVpPVEUwd2FIQlRNWEIyWlZob2QwOUhlRnBpYlhNMVdXcFNVbEZVVmxOUk1FWndVV3RhWVdKV1VscFZibFphWkZWSk1WTkVWa1pVUkdSRlVqSjRUR1ZIVGtWVVJscEZZMnhaTldGR2NIbGtXRlpWWTNrNWRGbHJVbmxSYTBVNVVGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTURrM0xGd2liRzluU1c1a1pYaGNJam8zTVRBeU9UZ3lNREFzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgxZGZRPT0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZS5kaWdlc3QiOiJzaGEyNTY6NmFkM2IwNzRhNDdjYTIwYmQ1OTNjZDBjMTdmZjIwNmU5NTdjMWQ2ZmY2YTMwMjMxYWU0MjgxZGJhNjQ1MDQ0MCIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLnByb3ZpZGVyIjoiY29zaWduIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMjQ2MzA4ODdjMDhhMzI5MTczYTkwZjJjYjE3NzI0MDJkMzVjYzVjN2NmMWRhOTc2M2NmMmNmZGE1ODBkOTMxOCJ9LCAibmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZS1taWdyYXRpb25zIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnR5cGUiOiJjb250YWluZXIiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudmVyc2lvbiI6InYxLjYwLjAtYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wubmFtZSI6InN5ZnQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2wudmVyc2lvbiI6IjEuMzguMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbHMiOiJbXCJzeWZ0QDEuMzguMFwiXSIsICJjaGFpbmxvb3AubWF0ZXJpYWwudHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJhNjJhYzEwOWM1OTkyMzc2MTFkMDg4YTUwZDVhZjc4OTY1OTE2MzQ2YjMwMGQ0ZDQ1MmNmM2Q4OTcxZDFjMWY2In0sICJuYW1lIjoic2JvbS1jb250cm9sLXBsYW5lLW1pZ3JhdGlvbnM6djEuNjAuMC1hbWQ2NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUtbWlncmF0aW9ucyIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZjEyMDAxOGNlYmVlMDE3NzY1ZWMyYjIxOWI2NWU5OGUzZjBmZjg3MzU1OTFiNWRhNjI5Y2M0ZjQzNmIxYzJjZSJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZS1taWdyYXRpb25zOnYxLjYwLjAtYXJtNjQuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUtbWlncmF0aW9ucyIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNDk4OWFkNmJjMTBjOWI2NzhlNjVhNzFmMTgzMjkwYTc2NmJmMTQ0YzhiY2MyODg5Y2ViODg1YjE5YzhmZTY1ZiJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZS1taWdyYXRpb25zOnYxLjYwLjAuY3ljbG9uZWR4Lmpzb24ifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuaW1hZ2UuaXNfbGF0ZXN0X3RhZyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS50YWciOiJ2MS42MC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT21ZNE9UQTFZems0TldFelpXWmtNRFJoWTJVMFpXUTVaall6WWpSbVpqVTNZall4TldObU56TXdPVE5tTkRSaU1qTTFNVGRtTVRNMVpESXpZbVkwTldRaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOeklzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam95T0dSaE5HRmtZV1JtTVdRNVpqQTBPR1E1WVdZNVptTmhaalEzTlRRM016YzVNbVJtT0dJNE16YzJZV0l4TmpReFl6STNaR1JoTkRGaU9HWmtPVFF3SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSMjV5UmxKNVExRlFTRlZVT0dWMVMyNWllSEpzTldkcFRHSmpkMFJNZFdzMVVIcDZObTVTTVdONVJrRnBSVUZ6V1hCR2RHcG9aVWxFWTJoVk1GaHFSbWczYURoRVNXRnFNMjByZFc1bGEyZG1LMkZ2ZEV4SUwxQlJQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZVVU5JTTNOUFdtdHdPWFJtYWxseWNrOW9URVpIZEZORVkwODVZbGR6TjFocVRtNXBibWhqZG1reWFsSnZRMGxSUkZwVlVqZzNXV3RFVlRsMVRHOXJiRloyVjBkR1RUSlNjbWgzU0M5VlJ5dGhTMUJzTXpFeGRUWTRSWGM5UFZ3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEplVTlIVW1oT1IwWnJXVmRTYlUxWFVUVmFha0V3VDBkUk5WbFhXVFZhYlU1b1dtcFJNMDVVVVROTmVtTTFUVzFTYlU5SFNUUk5lbU15V1ZkSmVFNXFVWGhaZWtreldrZFNhRTVFUm1sUFIxcHJUMVJSZDBsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWpJMWVWSnNTalZSTVVaUlUwWldWVTlIVmpGVE1qVnBaVWhLYzA1WFpIQlVSMHBxWkRCU1RXUlhjekZWU0hBMlRtMDFVMDFYVGpWU2EwWndVbFZHZWxkWVFrZGtSM0J2V2xWc1JWa3lhRlpOUm1oeFVtMW5NMkZFYUVWVFYwWnhUVEl3Y21SWE5XeGhNbVJ0U3pKR2RtUkZlRWxNTVVKU1VGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRNM0xGd2liRzluU1c1a1pYaGNJam8zTVRBek1EUXpOak1zWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU56SXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qb3lPR1JoTkdGa1lXUm1NV1E1WmpBME9HUTVZV1k1Wm1OaFpqUTNOVFEzTXpjNU1tUm1PR0k0TXpjMllXSXhOalF4WXpJM1pHUmhOREZpT0daa09UUXdJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlIwOUxVbVZQTlV3M0x6QTBjRk5wZDFWdVdqRm5ZMHR6YlUxVVozbDZjRkl6UkVsTE5HMVBSMUUzVjBGcFJVRXlNMVk1Y1RCNlJUbGpkMXBKVVVaRU1YVnZURFJoV25vcmJtOUdSak55YzBWUWMyOUZaWFIwVkhSQlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVU5MYTFsRGVsUjJObGN3YlZVM1ZrMHZkVzFWTkZGR2VrMVFZMDVQWVdacmFXaFBLM1EwYVcxV1pHOVJTV2RLZFdZdlZtNUxlbEp0V2pNdk1EQk9TVUpSY21JNVVESkZieTlVZDBOVk1XWlFSSEZOWmxRM1RsUjNQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSmVVOUhVbWhPUjBacldWZFNiVTFYVVRWYWFrRXdUMGRSTlZsWFdUVmFiVTVvV21wUk0wNVVVVE5OZW1NMVRXMVNiVTlIU1RSTmVtTXlXVmRKZUU1cVVYaFpla2t6V2tkU2FFNUVSbWxQUjFwclQxUlJkMGx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtVakE1VEZWdFZsQk9WWGN6VEhwQk1HTkdUbkJrTVZaMVYycEdibGt3ZEhwaVZURlZXak5zTm1OR1NYcFNSV3hNVGtjeFVGSXhSVE5XTUVad1VsVkZlVTB4V1RWalZFSTJVbFJzYW1ReGNFcFZWVnBGVFZoV2RsUkVVbWhYYm05eVltMDVSMUpxVG5sak1GWlJZekk1UmxwWVVqQldTRkpDVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVFF3TEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURRNU1EY3NYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1Njo0YTJiOGQ4ZWNlNTFlZGI1MDNjNmE5YjNhM2YyODY5NzRkYjBlZjQwOTA0NDJlYWU4MDUyMzAyMjkyZDcyMTU3IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI5NzU3YzM5NmMxM2M4YjAwYzUzNmE5OTk5YzFiYTIwZGI5ZDA3NjY0NTU5NTdlOGFlMDM1OWE0NmQyNGUwY2M3In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMifSwgeyJhbm5vdGF0aW9ucyI6eyJjaGFpbmxvb3AubWF0ZXJpYWwuY2FzIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQubmFtZSI6ImdoY3IuaW8vY2hhaW5sb29wLWRldi9jaGFpbmxvb3AvY29udHJvbC1wbGFuZSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC50eXBlIjoiY29udGFpbmVyIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50LnZlcnNpb24iOiJ2MS42MC4wLWFtZDY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLm5hbWUiOiJzeWZ0IiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29sLnZlcnNpb24iOiIxLjM4LjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnRvb2xzIjoiW1wic3lmdEAxLjM4LjBcIl0iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZTA2M2I0ZjAxYTdlMzgyZTFkOWU2ZTQ4ZGIyMmM2MGU3YWEzZGQ2YjRjMzk5OTY1NGE0OTI3NmIxNzI2MjE1MiJ9LCAibmFtZSI6InNib20tY29udHJvbC1wbGFuZTp2MS42MC4wLWFtZDY0LmN5Y2xvbmVkeC5qc29uIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMC1hcm02NCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjY2MTBiNTQzZDEyZmFjMmUwMGQ4MWQ3NGUxZmE0YTcxY2NhMzM1NTcwYjVkYjAyZjA4NmU3ZjBmMTRlMTIwNGQifSwgIm5hbWUiOiJzYm9tLWNvbnRyb2wtcGxhbmU6djEuNjAuMC1hcm02NC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5jYXMiOnRydWUsICJjaGFpbmxvb3AubWF0ZXJpYWwubmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS12MS02MC0wIiwgImNoYWlubG9vcC5tYXRlcmlhbC5zYm9tLm1haW5fY29tcG9uZW50Lm5hbWUiOiJnaGNyLmlvL2NoYWlubG9vcC1kZXYvY2hhaW5sb29wL2NvbnRyb2wtcGxhbmUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNib20ubWFpbl9jb21wb25lbnQudHlwZSI6ImNvbnRhaW5lciIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2JvbS5tYWluX2NvbXBvbmVudC52ZXJzaW9uIjoidjEuNjAuMCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC5uYW1lIjoic3lmdCIsICJjaGFpbmxvb3AubWF0ZXJpYWwudG9vbC52ZXJzaW9uIjoiMS4zOC4wIiwgImNoYWlubG9vcC5tYXRlcmlhbC50b29scyI6IltcInN5ZnRAMS4zOC4wXCJdIiwgImNoYWlubG9vcC5tYXRlcmlhbC50eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjIwZDhmM2JkNTQ5MzNhYjBkNjc1ZmMyMzNjOGJjZjhmZmFkMGRkNDUwNDBkN2FjMGY0NDJhZThjZmZiNmUxODIifSwgIm5hbWUiOiJzYm9tLWNvbnRyb2wtcGxhbmU6djEuNjAuMC5jeWNsb25lZHguanNvbiJ9LCB7ImFubm90YXRpb25zIjp7ImNoYWlubG9vcC5tYXRlcmlhbC5pbWFnZS5pc19sYXRlc3RfdGFnIjp0cnVlLCAiY2hhaW5sb29wLm1hdGVyaWFsLmltYWdlLnRhZyI6InYxLjYwLjAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLm5hbWUiOiJjb250cm9sLXBsYW5lLXYxLTYwLTAiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnNpZ25hdHVyZSI6ImV5SnpZMmhsYldGV1pYSnphVzl1SWpveUxDSnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXViMk5wTG1sdFlXZGxMbTFoYm1sbVpYTjBMbll4SzJwemIyNGlMQ0pqYjI1bWFXY2lPbnNpYldWa2FXRlVlWEJsSWpvaVlYQndiR2xqWVhScGIyNHZkbTVrTG05amFTNXBiV0ZuWlM1amIyNW1hV2N1ZGpFcmFuTnZiaUlzSW5OcGVtVWlPak0wTWl3aVpHbG5aWE4wSWpvaWMyaGhNalUyT2pJNE1HWmxOamMxWlRJeE1qVXpOMlF3WldRMU5UTmhNRFZtTURJd05qTXhObVZsTnpKbU5qWTVNak0xTkRsbVpUTXdaVEJrT0dKbVpUSTJOV1JrTkRnaWZTd2liR0Y1WlhKeklqcGJleUp0WldScFlWUjVjR1VpT2lKaGNIQnNhV05oZEdsdmJpOTJibVF1WkdWMkxtTnZjMmxuYmk1emFXMXdiR1Z6YVdkdWFXNW5Mbll4SzJwemIyNGlMQ0p6YVhwbElqb3lOakVzSW1ScFoyVnpkQ0k2SW5Ob1lUSTFOam81TkRFd01UVm1PR1l3WldFNE5tTXpORFl5TURjMk1HWTROVEJsWlRJNVl6a3pPR0V4TjJGaFlXVTBPRFUwWVRsa1pHVmpaV0V4TmpVM04yTTBOVE00SWl3aVlXNXViM1JoZEdsdmJuTWlPbnNpWkdWMkxtTnZjMmxuYm5CeWIycGxZM1F1WTI5emFXZHVMM05wWjI1aGRIVnlaU0k2SWsxRlZVTkpSV1JzYzBkSWRsTk5SVGh5TDNaWlIxTkdja0YyYlhsR2JXNDRjRVJyYUVGWkx5dHdZbmw1Um1OMFIwRnBSVUZ0WjBGNmF6ZFVTMkZJZFhGeGFFMTVkVk5pZVU1NFVrUXJWMVl2YUdaUFRXRktaRzgyWld4Vk4wVkZQU0lzSW1SbGRpNXphV2R6ZEc5eVpTNWpiM05wWjI0dlluVnVaR3hsSWpvaWUxd2lVMmxuYm1Wa1JXNTBjbmxVYVcxbGMzUmhiWEJjSWpwY0lrMUZXVU5KVVVOT1JHOUdNblJ1Y2pGcVUwdzVPRzlCVm1FME1uUmxRVXBETlhkRGIwbFNNR05YYjNwa1QwVm1ObVIzU1doQlRXSk1VM0J2U1ROR1VXSnRLMGN2VkhWb1MyMVpaVlpTTjFCMU1tMW9WbTkwUjNBeVMwbE9ZbTlhTmx3aUxGd2lVR0Y1Ykc5aFpGd2lPbnRjSW1KdlpIbGNJanBjSW1WNVNtaGpSMnhYV2xoS2VtRlhPWFZKYW05cFRVTTBkMHhxUldsTVEwcHlZVmMxYTBscWIybGhSMFo2WVVkV2EyTnRWbkppTTBwclNXbDNhV016UW14WmVVazJaWGxLYTFsWVVtaEphbkEzU1cxb2FHTXlaMmxQYm5OcFdWZDRibUl6U25Ca1IyaDBTV3B2YVdNeWFHaE5hbFV5U1dsM2FXUnRSbk5rVjFWcFQybEpOVTVFUlhkTlZGWnRUMGRaZDFwWFJUUk9iVTE2VGtSWmVVMUVZekpOUjFrMFRsUkNiRnBVU1RWWmVtdDZUMGRGZUU0eVJtaFpWMVV3VDBSVk1GbFViR3RhUjFacVdsZEZlRTVxVlROT01rMHdUbFJOTkVsdU1UbE1RMHA2WVZka2RWbFlVakZqYlZWcFQyNXphVmt5T1hWa1IxWjFaRU5KTmtsck1VWldWVTVLVWxkU2MyTXdaRWxrYkU1T1VsUm9lVXd6V2xwU01VNUhZMnRHTW1KWWJFZGlWelEwWTBWU2NtRkZSbHBNZVhSM1dXNXNOVkp0VGpCU01FWndVbFZHZEZvd1JqWmhlbVJWVXpKR1NXUllSbmhoUlRFMVpGWk9hV1ZWTlRSVmExRnlWakZaZG1GSFdsQlVWMFpMV2tjNE1scFhlRlpPTUZaR1VGTkpjMGx1UWpGWmJYaHdXVEIwYkdWVFNUWmxlVXBxWWpJMU1GcFhOVEJKYW05cFZFWk5kMlJGZUZSTlZVNVRWbGRTUzFaSGJFTlZWbHBXVTJzeFZGWlZNVzVWZWtKWFYydDRWRTFJVWsxVmVrSk1Wa1pXWVdOdFVYZFdhazVZVmxkb1RWbHFSbmRUYlZaMFlqTmtVazFGV2xOV01WWnpWRWRKZUdORmNHeGlWemt6Vld0V1IxVnNhM2RWYkVwaFRVVmFSMVpHVmt0V1JrNXlVbXBDVmxKdFVqSlVhMlJ2WWpGYVNHRkdVbEpoTTBKYVZXMXdjMlF4Y0hSaFIzaFdVa1ZaTUZSdVpIZFRNVlpYVTJ0V1RtSlVSbk5hVm1ST1RsVXhjazFYY0ZOaGVtY3hWRzE0YTJNeFZuSlRXR2hzVm0xT05GUldaREJTUlRGeFZXMDFWMkpXU1RCV1JFNXpXVmRTY2s5VVdreE5NRnA1VkRCV1QxVXdkRFZQU0d4VFRURmFVMVl4WkRSaVJrMTZWR3hLVVZaRVFreFVSazEzWkVWNFZFMVZXbFZoTVVadVZsVmFWMUV4VWtaaVJWSktVbGhTUjFZeFRYZGtSWGhVVFVoU1JGcDZNRGxKYmpFNVpsZ3dQVndpTEZ3aWFXNTBaV2R5WVhSbFpGUnBiV1ZjSWpveE56WXpOalkwTVRJekxGd2liRzluU1c1a1pYaGNJam8zTVRBek1ESXlOVFlzWENKc2IyZEpSRndpT2x3aVl6QmtNak5rTm1Ga05EQTJPVGN6WmprMU5UbG1NMkpoTW1ReFkyRXdNV1k0TkRFME4yUTRabVpqTldJNE5EUTFZekl5TkdZNU9HSTVOVGt4T0RBeFpGd2lmWDBpZlgwc2V5SnRaV1JwWVZSNWNHVWlPaUpoY0hCc2FXTmhkR2x2Ymk5MmJtUXVaR1YyTG1OdmMybG5iaTV6YVcxd2JHVnphV2R1YVc1bkxuWXhLMnB6YjI0aUxDSnphWHBsSWpveU5qRXNJbVJwWjJWemRDSTZJbk5vWVRJMU5qbzVOREV3TVRWbU9HWXdaV0U0Tm1Nek5EWXlNRGMyTUdZNE5UQmxaVEk1WXprek9HRXhOMkZoWVdVME9EVTBZVGxrWkdWalpXRXhOalUzTjJNME5UTTRJaXdpWVc1dWIzUmhkR2x2Ym5NaU9uc2laR1YyTG1OdmMybG5ibkJ5YjJwbFkzUXVZMjl6YVdkdUwzTnBaMjVoZEhWeVpTSTZJazFGVlVOSlVVTlZZMGhYVERaUldYUlhPSFUwVVZkelZrOWlTMmcxZGpOclIyRXJOblV4V2t3eVlsQkpRekZaZUZOQlNXZE5hR05MV0dkdFVIRnhaa2N5Um5ReVoySjRia3BDVVVoRlVISkZkV1JvVUZWWU16aG9XVWRXUldWdlBTSXNJbVJsZGk1emFXZHpkRzl5WlM1amIzTnBaMjR2WW5WdVpHeGxJam9pZTF3aVUybG5ibVZrUlc1MGNubFVhVzFsYzNSaGJYQmNJanBjSWsxRlZVTkpVVVIwVEcxeFMzTnFZa1JsY0VOcGFFbHRlVTFKUlhVclJEQkJVMDF1S3pOaGRrRnZZMlIxTTBaNFQweDNTV2REWkZOQ05tMVJibFF6VkZOTlIyeHFLMVpqVm1aUE9YbE5ZbXA1VWpaM1ZrVklVbGxYYVZKa1Mwa3dQVndpTEZ3aVVHRjViRzloWkZ3aU9udGNJbUp2WkhsY0lqcGNJbVY1U21oalIyeFhXbGhLZW1GWE9YVkphbTlwVFVNMGQweHFSV2xNUTBweVlWYzFhMGxxYjJsaFIwWjZZVWRXYTJOdFZuSmlNMHByU1dsM2FXTXpRbXhaZVVrMlpYbEthMWxZVW1oSmFuQTNTVzFvYUdNeVoybFBibk5wV1ZkNGJtSXpTbkJrUjJoMFNXcHZhV015YUdoTmFsVXlTV2wzYVdSdFJuTmtWMVZwVDJsSk5VNUVSWGROVkZadFQwZFpkMXBYUlRST2JVMTZUa1JaZVUxRVl6Sk5SMWswVGxSQ2JGcFVTVFZaZW10NlQwZEZlRTR5Um1oWlYxVXdUMFJWTUZsVWJHdGFSMVpxV2xkRmVFNXFWVE5PTWswd1RsUk5ORWx1TVRsTVEwcDZZVmRrZFZsWVVqRmpiVlZwVDI1emFWa3lPWFZrUjFaMVpFTkpOa2xyTVVaV1ZVNUtWVlZPVmxrd2FGaFVSRnBTVjFoU1dFOUlWVEJWVm1SNlZtczVhVk15WnpGa2FrNXlVakpGY2s1dVZYaFhhM2Q1V1d4Q1NsRjZSbHBsUms1Q1UxZGtUbUZIVGt4WFIyUjBWVWhHZUZwclkzbFNibEY1V2pKS05HSnJjRU5WVldoR1ZVaEtSbVJYVW05VlJsWlpUWHBvYjFkVlpGZFNWMVoyVUZOSmMwbHVRakZaYlhod1dUQjBiR1ZUU1RabGVVcHFZakkxTUZwWE5UQkphbTlwVkVaTmQyUkZlRlJOVlU1VFZsZFNTMVpIYkVOVlZscFdVMnN4VkZaVk1XNVZla0pYVjJ0NFZFMUlVazFWZWtKTVZrWldZV050VVhkV2FrNVlWbGRvVFZscVJuZFRiVlowWWpOa1VrMUZXbE5XTVZaelZFZEplR05GY0d4aVZ6a3pWV3RXUjFWc2EzZFZiRXBoVFVWYVIxWkdWa3RXUms1eVVtcENWbEp0VWpKVWEyUnZZakZhU0dGR1VsSmhNMEphVlcxd2MyUXhjSFJoUjNoV1VrVlpNRlJ1WkhkVE1WWlhVMnRXVG1KVVJuTmFWbVJPVGxVeGNrMVhjRk5oZW1jeFZHMTRhMk14Vm5KVFdHaHNWbTFPTkZSV1pEQlNSVEZ4VlcwMVYySldTVEJXUkU1eldWZFNjazlVV2t4Tk1GcDVWREJXVDFVd2REVlBTR3hUVFRGYVUxWXhaRFJpUmsxNlZHeEtVVlpFUWt4VVJrMTNaRVY0VkUxVldsVmhNVVp1VmxWYVYxRXhVa1ppUlZKS1VsaFNSMVl4VFhka1JYaFVUVWhTUkZwNk1EbEpiakU1Wmxnd1BWd2lMRndpYVc1MFpXZHlZWFJsWkZScGJXVmNJam94TnpZek5qWTBNVEkzTEZ3aWJHOW5TVzVrWlhoY0lqbzNNVEF6TURJM016TXNYQ0pzYjJkSlJGd2lPbHdpWXpCa01qTmtObUZrTkRBMk9UY3paamsxTlRsbU0ySmhNbVF4WTJFd01XWTROREUwTjJRNFptWmpOV0k0TkRRMVl6SXlOR1k1T0dJNU5Ua3hPREF4WkZ3aWZYMGlmWDFkZlE9PSIsICJjaGFpbmxvb3AubWF0ZXJpYWwuc2lnbmF0dXJlLmRpZ2VzdCI6InNoYTI1NjoyNWM5ZTg4OTk0MmZjMmNhYTY0YzVlZDViMGQwMWU5YTFhYjc5Y2UyMWY5ODBhZTA5ZjY1YTRhMTI2YTI0NGE2IiwgImNoYWlubG9vcC5tYXRlcmlhbC5zaWduYXR1cmUucHJvdmlkZXIiOiJjb3NpZ24iLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJDT05UQUlORVJfSU1BR0UifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkOTZiYmVkMDc0ZDA2OTlmYWJjNjZhYmM1OWFmNzYwYmY4OWFmNzllNTg2MzBiMzBjYWUxMGJmMDZjNjI3ZWI5In0sICJuYW1lIjoiZ2hjci5pby9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9jb250cm9sLXBsYW5lIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2hhaW5sb29wLm1hdGVyaWFsLmNhcyI6dHJ1ZSwgImNoYWlubG9vcC5tYXRlcmlhbC5uYW1lIjoic291cmNlLWNvZGUiLCAiY2hhaW5sb29wLm1hdGVyaWFsLnR5cGUiOiJBUlRJRkFDVCJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZhY2IyYTJjMDM3Njg3MTNhMDI0ZTI4ZTM0MTczYTY3YzY0YWNiZGNlYWNiNjI4OGJmYjRmMWRiMTlhMzRmYTQifSwgIm5hbWUiOiJzb3VyY2UtY29kZS50YXIuZ3oifV0sICJtZXRhZGF0YSI6eyJjb250cmFjdE5hbWUiOiJjaGFpbmxvb3AtdmF1bHQtcmVsZWFzZSIsICJjb250cmFjdFZlcnNpb24iOiIyMyIsICJmaW5pc2hlZEF0IjoiMjAyNS0xMS0yMFQxODo0NzowOS4yMjAyMTQ3MjhaIiwgImluaXRpYWxpemVkQXQiOiIyMDI1LTExLTIwVDE4OjMxOjI0LjUwODkyMzIwN1oiLCAibmFtZSI6InJlbGVhc2UiLCAib3JnYW5pemF0aW9uIjoiY2hhaW5sb29wIiwgInByb2plY3QiOiJjaGFpbmxvb3AiLCAicHJvamVjdFZlcnNpb24iOiJ2MS41OS4wK25leHQiLCAicHJvamVjdFZlcnNpb25QcmVyZWxlYXNlIjp0cnVlLCAidGVhbSI6ImNvcmUiLCAid29ya2Zsb3dJRCI6ImNhNmQ5NzE4LWZhNDktNGEyMC05ZGI5LWE4MjA4MGU3OTYzMiIsICJ3b3JrZmxvd05hbWUiOiJyZWxlYXNlIiwgIndvcmtmbG93UnVuSUQiOiI2MTk5NmZiZS1mNmVjLTRlZTItYjg5Yi1kMDRiNDQ2NDZkNjUifSwgInBvbGljeUF0dEJsb2NrZWQiOmZhbHNlLCAicG9saWN5QmxvY2tCeXBhc3NFbmFibGVkIjpmYWxzZSwgInBvbGljeUNoZWNrQmxvY2tpbmdTdHJhdGVneSI6IkFEVklTT1JZIiwgInBvbGljeUV2YWx1YXRpb25zIjp7IkNIQUlOTE9PUC5BVFRFU1RBVElPTiI6W3siZGVzY3JpcHRpb24iOiJWZXJpZmllcyB0aGF0IHRoZSBhdHRlc3RhdGlvbiBleHBsaWNpdGx5IHJlZmVyZW5jZXMgYSBzcGVjaWZpYyBHaXQgY29tbWl0IiwgIm5hbWUiOiJzb3VyY2UtY29tbWl0IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic291cmNlLWNvbW1pdCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIxNjRiYzMyMmJmMzUwZDZiYjQ1NzY4Yzg2ZGIxODBmNTMxNTA4NWM3OTFhZGViYWYwOTQ5MGY5Y2NlOTk1MjhjIn0sICJuYW1lIjoic291cmNlLWNvbW1pdCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3NvdXJjZS1jb21taXQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29tbWl0LXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04iLCAid2l0aCI6eyJjaGVja19zaWduYXR1cmUiOiJ5ZXMifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBjb250YWluZXIifSwgImRlc2NyaXB0aW9uIjoiRW5zdXJlcyBhbGwgT0NJIGNvbnRhaW5lciBpbWFnZXMgaGF2ZSBhbiBhc3NvY2lhdGVkIFNCT00gbWF0ZXJpYWwuIE9ubHkgdGhlIEN5Y2xvbmVEWCBTQk9NIGZvcm1hdCBpcyBzdXBwb3J0ZWQuIFNCT01zIGdlbmVyYXRlZCBieSBTeWZ0IHVzaW5nIHRoZSAnbGF0ZXN0JyB0YWcgYXJlIG5vdCByZWNvZ25pemVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhIHBvbGljeSB2aW9sYXRpb24uXG4iLCAibmFtZSI6ImNvbnRhaW5lcnMtd2l0aC1zYm9tIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiY29udGFpbmVycy13aXRoLXNib20iLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiMGEwMDJkZmQzODM1YjljM2I5NmU5NDA4MTQyNDdlYTBlNjJkMDJmMjZkMDhlY2YzMmJkY2I0MDc0NGM4MWNmOSJ9LCAibmFtZSI6ImNvbnRhaW5lcnMtd2l0aC1zYm9tIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvY29udGFpbmVycy13aXRoLXNib20ifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkFUVEVTVEFUSU9OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IGVpdGhlciBhIFNQRFggb3IgQ3ljbG9uZURYIFNCT00gbWF0ZXJpYWwgaXMgcHJlc2VudCBpbiB0aGUgYXR0ZXN0YXRpb24iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJuYW1lIjoic2JvbS1wcmVzZW50IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1wcmVzZW50IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjQ2MzU0NjQzZmMxMTYyMzk2OGM0NmRiYzZjZTQ1MzlhN2FiNDU2Nzk2YjNjNTQ0NzQ4NzYyMjQxM2IwNWZmMjUifSwgIm5hbWUiOiJzYm9tLXByZXNlbnQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXByZXNlbnQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBTTFNBIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBDSSBydW5uZXIgaXMgdGhlIGV4cGVjdGVkIG9uZSBzdXBwb3J0aW5nIENoYWlubG9vcCBhdHRlc3RhdGlvbi4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNsc2EtY2hlY2tzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjVmZDBlY2EwOGE2ZTE5ODRhNzgyYjk5ZjEyMGE4NWZiMDEwNzAxZmU5ODY4NWYxZGE4MjcwMmU2ZjMyZDkxNzgifSwgIm5hbWUiOiJzbHNhLWNoZWNrcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nsc2EtY2hlY2tzIn0sICJuYW1lIjoicnVubmVyLWF1dG9tYXRlZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InJ1bm5lci1hdXRvbWF0ZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYTUxYTM2YTc5YzZhYjEyNjYwNmEyZTFjMmY0ZmM3NTJhNDg1MDQ4ZTUzNjM3Y2FhMGU1YzIxNmJjZmI1Yzg2MyJ9LCAibmFtZSI6InJ1bm5lci1hdXRvbWF0ZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9ydW5uZXItYXV0b21hdGVkIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJBVFRFU1RBVElPTiIsICJ3aXRoIjp7InJ1bm5lciI6IkdJVEhVQl9BQ1RJT04ifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgU0xTQSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCBydW5uZXIgaXMgYXV0aGVudGljYXRlZCBieSB1c2luZyB0aGUgT0lEQyB0b2tlbiBmcm9tIHRoZSBwcm92aWRlci4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNsc2EtY2hlY2tzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjVmZDBlY2EwOGE2ZTE5ODRhNzgyYjk5ZjEyMGE4NWZiMDEwNzAxZmU5ODY4NWYxZGE4MjcwMmU2ZjMyZDkxNzgifSwgIm5hbWUiOiJzbHNhLWNoZWNrcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nsc2EtY2hlY2tzIn0sICJuYW1lIjoicnVubmVyLWF1dGhlbnRpY2F0ZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJydW5uZXItYXV0aGVudGljYXRlZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlMmM1OTgyNWUzYTU0ZWJjNTUyNDVjZTcwNGM5OGMzMDE0ZDdmYjZhNmFhMzFhYTFmZDAxMDA1MjExYzVmZGQzIn0sICJuYW1lIjoicnVubmVyLWF1dGhlbnRpY2F0ZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9ydW5uZXItYXV0aGVudGljYXRlZCJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQVRURVNUQVRJT04iLCAid2l0aCI6eyJlbnZpcm9ubWVudCI6IiIsICJydW5uZXJfcmVxdWlyZWQiOiJmYWxzZSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBTTFNBIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IFNMU0EgcHJvdmVuYW5jZSBzaWduYXR1cmUgaXMgcG9zc2libHkgcHJlc2VudCBieSB2ZXJpZnlpbmcgdGhlIENBIGFuZCBUU0EgcHJlc2VuY2UuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzbHNhLWNoZWNrcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI1ZmQwZWNhMDhhNmUxOTg0YTc4MmI5OWYxMjBhODVmYjAxMDcwMWZlOTg2ODVmMWRhODI3MDJlNmYzMmQ5MTc4In0sICJuYW1lIjoic2xzYS1jaGVja3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zbHNhLWNoZWNrcyJ9LCAibmFtZSI6InNpZ25hdHVyZS1wcmVzZW50IiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2lnbmF0dXJlLXByZXNlbnQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNjZjOWEyNzRlMDcyMWUxYWRmYzNhYjIzYTMyMmQ2M2VlMmQ3ODdiODBjODFlZDlkNGViNWE4NDQ5ZDljOGMzYiJ9LCAibmFtZSI6InNpZ25hdHVyZS1wcmVzZW50IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2lnbmF0dXJlLXByZXNlbnQifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkFUVEVTVEFUSU9OIiwgIndpdGgiOnsicmVxdWlyZV90c2EiOiJmYWxzZSJ9fV0sICJhcnRpZmFjdC1jYXMtYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1hbWQ2NCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiYXJ0aWZhY3QtY2FzLWFybTY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtYXJtNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImFydGlmYWN0LWNhcy1zYm9tLWFtZDY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGFuIFNCT00gcmVwb3J0IGZvciBjb21wb25lbnRzIHdpdGggYmFubmVkIGxpY2Vuc2VzLiBTdXBwb3J0cyBDeWNsb25lRFggMS41Ky5cblxuVGhpcyBwb2xpY3kgdmFsaWRhdGVzIHNvZnR3YXJlIGNvbXBvbmVudHMgYWdhaW5zdCBsaWNlbnNlIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzIGJ5OlxuLSBEZXRlY3Rpbmcgc3BlY2lmaWVkIGJhbm5lZCBTUERYIGxpY2Vuc2UgaWRlbnRpZmllcnNcbi0gRmxhZ2dpbmcgY3VzdG9tL3Byb3ByaWV0YXJ5IGxpY2Vuc2VzXG4tIEFsbG93aW5nIGV4Y2VwdGlvbnMgZm9yIHVzaW5nIHNwZWNpZmljIGN1c3RvbSBsaWNlbnNlc1xuXG5VU0FHRSBFWEFNUExFUzpcblxuMS4gQmFuIHNwZWNpZmljIGxpY2Vuc2VzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTC0zLjAsR1BMLTMuMC1vci1sYXRlclwiXG5cbjIuIEJhbiBsaWNlbnNlIGZhbWlsaWVzIHVzaW5nIHdpbGRjYXJkczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkdQTFwiICAjIG1hdGNoZXMgR1BMLTIuMCwgR1BMLTMuMCwgR1BMLTMuMC1vci1sYXRlciwgR1BMKi5cblxuMy4gQWxsb3cgc3BlY2lmaWMgY3VzdG9tL3Byb3ByaWV0YXJ5IGxpY2Vuc2VzIHdpdGggZXhjZXB0aW9uczpcbiAgIHdpdGg6XG4gICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQ29tbWVyY2lhbCBMaWNlbnNlLEVudGVycHJpc2UgTGljZW5zZVwiICMgbWF0Y2hlcyBjb21wb25lbnRzIHdpdGggXCJDb21tZXJjaWFsIExpY2Vuc2VcIiBhbmQgY29tcG9uZW50cyB3aXRoIFwiRW50ZXJwcmlzZSBMaWNlbnNlXCIgKGNhc2UtaW5zZW5zaXRpdmUpLlxuXG40LiBDb21wcmVoZW5zaXZlIGxpY2Vuc2UgY29udHJvbDpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwsR1BMLExHUExcIlxuICAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJBcHByb3ZlZCBQcm9wcmlldGFyeSBMaWNlbnNlXCJcblxuTElDRU5TRSBERVRFQ1RJT046XG4tIFdpbGRjYXJkIG1hdGNoIGZvciBsaWNlbnNlcyAocGF0dGVybiopIGluIGV4cHJlc3Npb25zIGFuZCBsaWNlbnNlLmlkLiBFeHByZXNzaW9uIHBhcnNpbmcgc3VwcG9ydHMgXCJNSVQgT1IgQXBhY2hlLTIuMFwiLCBcIihHUEwtMi4wIEFORCBCU0QtMy1DbGF1c2UpXCIsIGNvbXBsZXggbmVzdGVkIHBhcmVudGhlc2VzIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlxuLSBDdXN0b20gbGljZW5zZXMgKHVzZSBvZiBsaWNlbnNlLm5hbWUgZmllbGQpIGFyZSBmbGFnZ2VkIGJ5IGRlZmF1bHQuIFxuLSBGb3IgY3VzdG9tIGxpY2Vuc2UsIG9ubHkgZXhhY3QgbWF0Y2ggb2YgYWxsb3dlZF9jdXN0b21fbGljZW5zZXMgaW4gbGljZW5zZS5uYW1lIGFyZSBhY2NlcHRlZCBhbmQgZG9uJ3QgdGhyb3dzIGEgdmlvbGF0aW9uLiBcbi0gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBpcyBhcHBsaWVkIHRvIGFsbCBsaWNlbnNlIGNvbXBhcmlzb25zLlxuXG5cbkxJTUlUQVRJT05TOlxuLSBsaWNlbnNlcyBpbnB1dCB2YWx1ZXMgYXJlIG5vdCB2YWxpZGF0ZWQgYWdhaW5zdCBTUERYIGxpY2Vuc2UgbGlzdC4gVGhpcyBtZWFucyB0aGF0IGFueSBhcmJpdHJhcnkgc3RyaW5nIGNhbiBiZSB1c2VkIGFzIGEgbGljZW5zZSBpZGVudGlmaWVyLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGZhbHNlIHBvc2l0aXZlcyBvciBuZWdhdGl2ZXMgaW4gbGljZW5zZSBkZXRlY3Rpb24uIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIGFsbG93cyBmb3IgZmxleGliaWxpdHkgaW4gbGljZW5zZSBtYXRjaGluZy4gXG4tIFNQRFggZXhwcmVzc2lvbnMgd2l0aCBuZXN0ZWQgcGFyZW50aGVzZXMgKGUuZy4sICcoKE1JVCBPUiBCU0QpIEFORCBHUEwpJykgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIHdpbGwgY2F1c2UgdmlvbGF0aW9uc1xuLSBMaW1pdGVkIHN1cHBvcnQgZm9yIGV4Y2VwdGlvbnMgd2l0aCBXSVRIIGNsYXVzZXMgaW4gY29tcGxleCBleHByZXNzaW9ucy4gV2hpbGUgYmFubmVkIGxpY2Vuc2VzPVwiR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjBcIiB3aWxsIGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMCkgT1IgTUlUXCIsXG4gaXQgd2lsbCBub3QgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBPUiBNSVQpIFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjBcIi5cbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTI4ODc3MjM1N2Y5NTE4NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTNlNmVjNjYxMTk2OTlmMjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MmY2NTM3Y2NjNzkyYWU3MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPWUzZjNjNTZjMWUwYTViMDIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD00MTQ3ZDg4MmUyZTViMDcxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9OGQ4MTE0ZjBhNzE2NGQ5OCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD0wY2Y5MDRmNmViZGQyNGIxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD01ZGVmODQzYjNmMWI2NWY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTg2MjZlYzcxZTYyMzY0NjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYW1kNjQiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJhcnRpZmFjdC1jYXMtc2JvbS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NDk3ZmNkYjlmYWU1NTkyNGMxMmY1NWYwNWNiZTgzYTA5NjY2MmU1YzU5MWQ3OWI3NGU0YThmMjNiYWI1ZmZlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2NmcyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzQHYwLjE2LjE/cGFja2FnZS1pZD0yODg3NzIzNTdmOTUxODVhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZjcyZmU5NTdlZDRlMDRlN2VkZDI5ODAxNjVlMjUxNThiOGEyNmJiZTg3NTMyN2Q2Yjg5NjM3ZjZkYjYwZDUxIGZvciBnaXRodWIuY29tL2ltZGFyaW8vbWVyZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvQHYwLjMuMTY/cGFja2FnZS1pZD0zZTZlYzY2MTE5Njk5ZjI5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTJmNjUzN2NjYzc5MmFlNzMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1lM2YzYzU2YzFlMGE1YjAyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9NDE0N2Q4ODJlMmU1YjA3MSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPThkODExNGYwYTcxNjRkOTgpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9ODYyNmVjNzFlNjIzNjQ2OSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YThjODY5ZmJkYTgxOWFmYjhkODBlMGFjMTliYWM1MmU3NjZiYzZjMTljYjM4Y2Y5NGY1MmQ2NGM0YmUyYWFiNiBmb3IgZ2l0aHViLmNvbS9kb2NrZXIvY2xpIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZG9ja2VyL2NsaUB2MjcuNS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9MGNmOTA0ZjZlYmRkMjRiMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9NWRlZjg0M2IzZjFiNjVmNCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjE5ZDZhYWMzYTA2M2I0ZWE0MzE5NjQ3MjI0OGZmNjhlMjc3YjdjMmE5ZTBhMTkzNzk5MTM0Njc3ZDQ5NmNkYSBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTI4ODc3MjM1N2Y5NTE4NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTNlNmVjNjYxMTk2OTlmMjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MmY2NTM3Y2NjNzkyYWU3MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPWUzZjNjNTZjMWUwYTViMDIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD00MTQ3ZDg4MmUyZTViMDcxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9OGQ4MTE0ZjBhNzE2NGQ5OCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD04NjI2ZWM3MWU2MjM2NDY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD0wY2Y5MDRmNmViZGQyNGIxKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD01ZGVmODQzYjNmMWI2NWY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTg2MjZlYzcxZTYyMzY0NjkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImFydGlmYWN0LWNhcy1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiYXJ0aWZhY3QtY2FzLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImFydGlmYWN0LWNhcy12MS02MC0wIjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJhcnRpZmFjdC1jYXMtdjEtNjAtMCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiY2xpLWFtZDY0IjpbeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LCBzaWduaW5nIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBwcm92aWRlZCBwaWVjZSBvZiBldmlkZW5jZSBoYXMgYSBzaWduYXR1cmVcbiIsICJtYXRlcmlhbE5hbWUiOiJjbGktYW1kNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNsaS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY2xpLWFybTY0IiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjbGktc2JvbS1hbWQ2NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MDgxOWVhODQ1OTdmMjA1MWY3MzgxYzI2YTY3ZDQxMTliZTA3NzBjNmVjOTc3ZmY2M2M1OWUyNjI1MWRiMmFjMCBmb3IgZGFyaW8uY2F0L21lcmdvIChwa2c6Z29sYW5nL2RhcmlvLmNhdC9tZXJnb0B2MS4wLjI/cGFja2FnZS1pZD1mODEyZGM5MmM2YmM1YjIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjowYzFiOTcwNmE5MWE2MGY3OGU5YmZhZDM5OTRkNjYwODAwNGJiNGViMDNkMGYyZDdmMDViY2YzYTkxODUxMDAyIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTEyODBkMzlmNzU5YzE1NzAyNmRkMGZhZDg3NDJkOTQ3ODE5MWYxNWRjOTgxYjM4ZDJkOWU2YTYwMjk4N2JiYSBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjE0NTVjMGYxYjA2YWVjNzkzY2Y5M2FiNWUyZWQ0MTA5MDgzNjFkMTgxNjhlNzY4MDlmMzk3ZWY2MTZhZDc3NGEgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MjdjODMxOTA3NTcwMjZmYTE2OWE3OTU2NDBmOTg5M2JhODU3MmQ3Y2QwNmFmNGU1YjVlOGQ2NzgwM2I4MWE3OSBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoyZTJhOGFmNTNmYzg4MWUyZjUzOTU0YTg4NjQzNjc0YmVjYWE2ZGJjODRiZTJiOTk3ZjU0Mjk1Zjg2Njg2OTE5IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MzNlMzgwNDU3MDEyNDg1N2M5ZDQ4NWRlNzE1ZjcyMGZiNzgzMGI2NmEzZjJlMjJmNGFjMjIzNmYwZjg0MmE5YyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjM3ZTkwZGQ2NWIzZjM4OTY3OGY0YjdmMjY2YTIxMDc4YzFlNjU4OGY0OTc2M2I0OGMyZTU2MGIwOTFlOTZkY2QgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2JjY2U3YTAwMTBjMjQ0NDJiZmY2M2FhZThhY2RiZGY0Y2NmYTBiOTZkNzQzNjRkOGVjZWJjMzMwYTNhMzc5MCBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTBjMWMzMjQ1M2ExMmJmYjApIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRlNWJjNjUxMjhhNzJmNDcwOTZlNTgzY2ZlNjM0ZGFhYWVlOTVmYmRlYzAwMWRlNjlkYjM1MDNjMTk0YmEyYjAgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9NzIwZjQ4N2FjMTIxNTgyZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NTcyYjE1OTYyNGYxODk4YjQwZTlmMDljOWU0Y2ZiNjVhNTk1MDQ0OTYwOTgyYWE5NTEyNmJjMjhmN2QxZTZjMCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tc2VtdmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlckB2MC4zLjE/cGFja2FnZS1pZD1jYmExNWIzZmY4ODM2YjIzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTk5MTRlYTE5YzZkYjJiM2MpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1mNmYxMzk4MWY3MTA3NTE3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2ZjU2YWRhY2Y2OTYzMTA5NzJjNDJjMTgyMGIwZDMwZTQ1ZWI1MGZlNDNiNjEzNWY0YjZmZDExM2JhNDg3ZmIyIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjU1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NTUuMC4wP3BhY2thZ2UtaWQ9Y2RjNDQ3MGYzYWM1NTkyNCN2NTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD1lYTcwZjg0MjNlOTc5NmY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3YjQyYWYxMjFhNTdkOGNhNWQ5MmFhY2NiNTJlYjcxNWM1Nzg0MGI4NDY0NzQ3NTFlM2VhOWU5ZjAyZTI4NDA1IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWMxYTBhZTlkNjkxNGRmZDMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9MDk4MzI0MTdkNTE4YzhjYSN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OTliOGNjNmJmMzU5MjZiNGNkZjAzM2UwMDNlNTI5NTdiYWFjOTFjOWZkNDUzNThkODE2ZjZiOGI5NzdlMWNjYiBmb3IgazhzLmlvL2t1YmUtb3BlbmFwaSAocGtnOmdvbGFuZy9rOHMuaW8va3ViZS1vcGVuYXBpQHYwLjAuMC0yMDIzMTAxMDE3NTk0MS0yZGQ2ODRhOTFmMDA/cGFja2FnZS1pZD02ZGZhM2FiNzg1YTQwOTE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9ODZlM2UzMjIyNTk5ZTRmZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTYyZTU3ODE0ZTRhZTA5NTkyMDM2ZmY5MWJlOTk5MWMzMjZjMzVmZmJmNzM3MTdiOWZjYTJjN2QzNWUyNjI1YyBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE4Yzg2OWZiZGE4MTlhZmI4ZDgwZTBhYzE5YmFjNTJlNzY2YmM2YzE5Y2IzOGNmOTRmNTJkNjRjNGJlMmFhYjYgZm9yIGdpdGh1Yi5jb20vZG9ja2VyL2NsaSAocGtnOmdvbGFuZy9naXRodWIuY29tL2RvY2tlci9jbGlAdjI3LjUuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPWEzOWJlMDgwODRjNDljYmIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmJlYTE5OGI2NDIxY2M4OTgwODRjMDNlYzZiMWJkMjQwMjAyMzg1ZThmMmUxODY5NzQ3MGVkZjgzZGUxZDBlNDkgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YzUzODlhOTNkZjEzZmNjNzJhYjdhNzQ3MGEyNTZkYjcxMDg5MmVkN2IyNGY1MmM5ZmVlY2ZjZjEzZmRjMDg0NyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM5N2E5NzE5Mzk1NThhNjYwZDQzODZlYWM5ZTdlMTFlZDM5NTUxZDI2ZGFmNWViNGQyMzdkYmFmMTQwYmZmYjEgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD05YTM2NDI2NGViOWIyMTFmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNjQ2NzhkYTUxMWNjM2M3NmUxYjIwY2Q3MDc0YzEwMmE2MmRlMDY4NWQ0ODZlYmExNDRlM2ZmN2IzZWU2MGYzIGZvciBnaXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYSAocGtnOmdvbGFuZy9naXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYUB2MS42LjA/cGFja2FnZS1pZD00Y2FhNDQzY2RkYWVlN2RjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkY2NkMjZjNmZkOWMyOTZkYWY0NGQwYmM1NmJiNGVmYzU2NmVkZDQ4ODAzODFiMzMzMWM5YTYzZTZlNDcxMzM4IGZvciBnaXRodWIuY29tL2NvcmVvcy9nby1vaWRjL3YzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGNAdjMuMTEuMD9wYWNrYWdlLWlkPTBhMTQ4Njg5N2I1NTFhMWIjdjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmYxOWQ2YWFjM2EwNjNiNGVhNDMxOTY0NzIyNDhmZjY4ZTI3N2I3YzJhOWUwYTE5Mzc5OTEzNDY3N2Q0OTZjZGEgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9YjhlMjdmMjY2NWM4NTMzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjllMjkwZjE5NzI4NGY2ZjM4OWRjMWZkM2FiNTA3NTU0NzFkNTY4NmZhM2IxNjBhZDBhM2UzZTM5NjkxMTUyOCBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gbGljZW5zZSBHUEwgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY2xpLXNib20tYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjA4MTllYTg0NTk3ZjIwNTFmNzM4MWMyNmE2N2Q0MTE5YmUwNzcwYzZlYzk3N2ZmNjNjNTllMjYyNTFkYjJhYzAgZm9yIGRhcmlvLmNhdC9tZXJnbyAocGtnOmdvbGFuZy9kYXJpby5jYXQvbWVyZ29AdjEuMC4yP3BhY2thZ2UtaWQ9ZjgxMmRjOTJjNmJjNWIyMCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MGMxYjk3MDZhOTFhNjBmNzhlOWJmYWQzOTk0ZDY2MDgwMDRiYjRlYjAzZDBmMmQ3ZjA1YmNmM2E5MTg1MTAwMiBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD04NmUzZTMyMjI1OTllNGZmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxNDU1YzBmMWIwNmFlYzc5M2NmOTNhYjVlMmVkNDEwOTA4MzYxZDE4MTY4ZTc2ODA5ZjM5N2VmNjE2YWQ3NzRhIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjY2IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NjYuMC4wP3BhY2thZ2UtaWQ9OTg3OTg2ZGI2YWIyYzE3OCN2NjYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjI3YzgzMTkwNzU3MDI2ZmExNjlhNzk1NjQwZjk4OTNiYTg1NzJkN2NkMDZhZjRlNWI1ZThkNjc4MDNiODFhNzkgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NTUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY1NS4wLjA/cGFja2FnZS1pZD1jZGM0NDcwZjNhYzU1OTI0I3Y1NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MmUyYThhZjUzZmM4ODFlMmY1Mzk1NGE4ODY0MzY3NGJlY2FhNmRiYzg0YmUyYjk5N2Y1NDI5NWY4NjY4NjkxOSBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjMzZTM4MDQ1NzAxMjQ4NTdjOWQ0ODVkZTcxNWY3MjBmYjc4MzBiNjZhM2YyZTIyZjRhYzIyMzZmMGY4NDJhOWMgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjozN2U5MGRkNjViM2YzODk2NzhmNGI3ZjI2NmEyMTA3OGMxZTY1ODhmNDk3NjNiNDhjMmU1NjBiMDkxZTk2ZGNkIGZvciBnaXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYiAocGtnOmdvbGFuZy9naXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYkB2MC4xMDkuMD9wYWNrYWdlLWlkPWVlNGQxZGI0Mjg3ZTIzZTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjNiY2NlN2EwMDEwYzI0NDQyYmZmNjNhYWU4YWNkYmRmNGNjZmEwYjk2ZDc0MzY0ZDhlY2ViYzMzMGEzYTM3OTAgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NDk3ZmNkYjlmYWU1NTkyNGMxMmY1NWYwNWNiZTgzYTA5NjY2MmU1YzU5MWQ3OWI3NGU0YThmMjNiYWI1ZmZlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2NmcyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzQHYwLjE2LjE/cGFja2FnZS1pZD0wYzFjMzI0NTNhMTJiZmIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZTViYzY1MTI4YTcyZjQ3MDk2ZTU4M2NmZTYzNGRhYWFlZTk1ZmJkZWMwMDFkZTY5ZGIzNTAzYzE5NGJhMmIwIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjY2IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NjYuMC4wP3BhY2thZ2UtaWQ9OTg3OTg2ZGI2YWIyYzE3OCN2NjYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTcyMGY0ODdhYzEyMTU4MmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjU3MmIxNTk2MjRmMTg5OGI0MGU5ZjA5YzllNGNmYjY1YTU5NTA0NDk2MDk4MmFhOTUxMjZiYzI4ZjdkMWU2YzAgZm9yIGdpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlciAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1zZW12ZXJAdjAuMy4xP3BhY2thZ2UtaWQ9Y2JhMTViM2ZmODgzNmIyMykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NjAwMjQ0YzgwNTJjOGMxZDMwNzA0M2ZhZmFjYmM4M2I0MjljMTcxZGQ4ZTA4ZjVhNTM3YzBhNTQwMTQ1ODVlZSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbiAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uQHYwLjYzLjA/cGFja2FnZS1pZD05OTE0ZWExOWM2ZGIyYjNjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2Yzc5ZmFhMTUxNjg4ODVmYjg4YTMxNmFlMGRmMThmNDg2ZGVhZmRkZWZkYzE2ODI2Y2RjNTZkZmJkNDIxZTI0IGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWxAdjAuNi4yP3BhY2thZ2UtaWQ9ZjZmMTM5ODFmNzEwNzUxNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmY1NmFkYWNmNjk2MzEwOTcyYzQyYzE4MjBiMGQzMGU0NWViNTBmZTQzYjYxMzVmNGI2ZmQxMTNiYTQ4N2ZiMiBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9ZWE3MGY4NDIzZTk3OTZmOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6N2I0MmFmMTIxYTU3ZDhjYTVkOTJhYWNjYjUyZWI3MTVjNTc4NDBiODQ2NDc0NzUxZTNlYTllOWYwMmUyODQwNSBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg1NDhiZmIyYmMxOTEzMzk2ZGYzOGM1NDhhNmVjNjBiOGRiY2FjM2IwODAwNDg1YTQwNTY5YzhiZGQxODQ0NzEgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nQHYxLjIyLjA/cGFja2FnZS1pZD1jMWEwYWU5ZDY5MTRkZmQzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NmNlNWUyYmI3MmY2MDNhODg0OWUwODU1MjQwMjJiZGFjNjY2OGRmNGYwYmFjYTUwNzAzMzYxMDIzNzM2NWYzIGZvciBnaXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWYvdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmQHYyLjAuMT9wYWNrYWdlLWlkPTA5ODMyNDE3ZDUxOGM4Y2EjdjIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojk5YjhjYzZiZjM1OTI2YjRjZGYwMzNlMDAzZTUyOTU3YmFhYzkxYzlmZDQ1MzU4ZDgxNmY2YjhiOTc3ZTFjY2IgZm9yIGs4cy5pby9rdWJlLW9wZW5hcGkgKHBrZzpnb2xhbmcvazhzLmlvL2t1YmUtb3BlbmFwaUB2MC4wLjAtMjAyMzEwMTAxNzU5NDEtMmRkNjg0YTkxZjAwP3BhY2thZ2UtaWQ9NmRmYTNhYjc4NWE0MDkxOCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OWJhMzZmNjZmYmE2ZjJlM2I3ZGNlOTVkOTQxM2E3Mzg2ODhhYmNmY2U4YzNkMzhjNTgxYjI3NmY5NDM3ZDFjNiBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2MmU1NzgxNGU0YWUwOTU5MjAzNmZmOTFiZTk5OTFjMzI2YzM1ZmZiZjczNzE3YjlmY2EyYzdkMzVlMjYyNWMgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD1iOGUyN2YyNjY1Yzg1MzNmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD1hMzliZTA4MDg0YzQ5Y2JiKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiZWExOThiNjQyMWNjODk4MDg0YzAzZWM2YjFiZDI0MDIwMjM4NWU4ZjJlMTg2OTc0NzBlZGY4M2RlMWQwZTQ5IGZvciBnaXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYiAocGtnOmdvbGFuZy9naXRodWIuY29tL3hhbnp5L2dvLWdpdGxhYkB2MC4xMDkuMD9wYWNrYWdlLWlkPWVlNGQxZGI0Mjg3ZTIzZTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM1Mzg5YTkzZGYxM2ZjYzcyYWI3YTc0NzBhMjU2ZGI3MTA4OTJlZDdiMjRmNTJjOWZlZWNmY2YxM2ZkYzA4NDcgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpjOTdhOTcxOTM5NTU4YTY2MGQ0Mzg2ZWFjOWU3ZTExZWQzOTU1MWQyNmRhZjVlYjRkMjM3ZGJhZjE0MGJmZmIxIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9OWEzNjQyNjRlYjliMjExZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9NGNhYTQ0M2NkZGFlZTdkYykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD0wYTE0ODY4OTdiNTUxYTFiI3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmY5ZTI5MGYxOTcyODRmNmYzODlkYzFmZDNhYjUwNzU1NDcxZDU2ODZmYTNiMTYwYWQwYTNlM2UzOTY5MTE1MjggZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGxpY2Vuc2UgR1BMIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn1dLCAid2l0aCI6eyJhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyI6IiBBcGFjaGUgMi4wLCBzaGEyNTY6YjlhNmQ5MzIwYjhmMjY5M2U4ZDQxZTQ5NmNlNTZjYWFkYWNhZGRjY2E5YmUyYTY0YTYxNzQ5Mjc4ZjQyNWNmMiwgc2hhMjU2OmNkNjU3MjExNzZjZTVmZGJiMDU3NzNjMGIxMzQ5Zjk5M2I5NGNlNzdhNTEwNjJjZmE3YTc4YjM0Y2M4MmZjNzEiLCAibGljZW5zZXMiOiJHUEwsIEFHUEwifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBzZWN1cml0eSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBkb2Vzbid0IGhhdmUgYW55IGJhbm5lZCBjb21wb25lbnRzLlxuSXQgYWNjZXB0cyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29tcG9uZW50cy4gSWYgYSB2ZXJzaW9uIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBmYWlsIGZvciB2ZXJzaW9ucyBlcXVhbCBvciBsb3dlci5cbiAgd2l0aDpcbiAgICBjb21wb25lbnRzOiBsb2c0akAyLjE0LjEsIGJhbm5lZC1jb21wb25lbnQtbmFtZVwiXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLW50aWEiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLW50aWEiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzVmMDIyNDM0NzUxYzRjZDUzNDQ3NjU1NGRhOWNkYjdhYWNhNjU4ZDNmZTYxNGNjYWFlYWMzNjM0YzVhYTkzNiJ9LCAibmFtZSI6InNib20tbnRpYSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tbnRpYSJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiLCAiY3JhL2NyYS12dWxuZXJhYmlsaXR5LWhhbmRsaW5nLXJlcS0xIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBmb3IgY29tcG9uZW50cyB3aXRoIHVua25vd24gbGljZW5zZXMgaW4gdGhlIEN5Y2xvbmVEWCByZXBvcnQiLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImNsaS1zYm9tLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY2xpLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJlZThhODQ4NjIzODUxNmM2ODEwMjNmOWY1ZDAxMzJiZGY3MWNkMTdjNDY1YmI2MWY2ZWYyODEzZDhiY2U5MTEwIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAidmlvbGF0aW9ucyI6W3sibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MDgxOWVhODQ1OTdmMjA1MWY3MzgxYzI2YTY3ZDQxMTliZTA3NzBjNmVjOTc3ZmY2M2M1OWUyNjI1MWRiMmFjMCBmb3IgZGFyaW8uY2F0L21lcmdvIChwa2c6Z29sYW5nL2RhcmlvLmNhdC9tZXJnb0B2MS4wLjI/cGFja2FnZS1pZD1mODEyZGM5MmM2YmM1YjIwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjowYzFiOTcwNmE5MWE2MGY3OGU5YmZhZDM5OTRkNjYwODAwNGJiNGViMDNkMGYyZDdmMDViY2YzYTkxODUxMDAyIGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTEyODBkMzlmNzU5YzE1NzAyNmRkMGZhZDg3NDJkOTQ3ODE5MWYxNWRjOTgxYjM4ZDJkOWU2YTYwMjk4N2JiYSBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTg2ZTNlMzIyMjU5OWU0ZmYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjE0NTVjMGYxYjA2YWVjNzkzY2Y5M2FiNWUyZWQ0MTA5MDgzNjFkMTgxNjhlNzY4MDlmMzk3ZWY2MTZhZDc3NGEgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MjdjODMxOTA3NTcwMjZmYTE2OWE3OTU2NDBmOTg5M2JhODU3MmQ3Y2QwNmFmNGU1YjVlOGQ2NzgwM2I4MWE3OSBmb3IgZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViL3Y1NSAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvb2dsZS9nby1naXRodWJAdjU1LjAuMD9wYWNrYWdlLWlkPWNkYzQ0NzBmM2FjNTU5MjQjdjU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoyZTJhOGFmNTNmYzg4MWUyZjUzOTU0YTg4NjQzNjc0YmVjYWE2ZGJjODRiZTJiOTk3ZjU0Mjk1Zjg2Njg2OTE5IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MzNlMzgwNDU3MDEyNDg1N2M5ZDQ4NWRlNzE1ZjcyMGZiNzgzMGI2NmEzZjJlMjJmNGFjMjIzNmYwZjg0MmE5YyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjM3ZTkwZGQ2NWIzZjM4OTY3OGY0YjdmMjY2YTIxMDc4YzFlNjU4OGY0OTc2M2I0OGMyZTU2MGIwOTFlOTZkY2QgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2JjY2U3YTAwMTBjMjQ0NDJiZmY2M2FhZThhY2RiZGY0Y2NmYTBiOTZkNzQzNjRkOGVjZWJjMzMwYTNhMzc5MCBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTBjMWMzMjQ1M2ExMmJmYjApIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRlNWJjNjUxMjhhNzJmNDcwOTZlNTgzY2ZlNjM0ZGFhYWVlOTVmYmRlYzAwMWRlNjlkYjM1MDNjMTk0YmEyYjAgZm9yIGdpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1Yi92NjYgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nb29nbGUvZ28tZ2l0aHViQHY2Ni4wLjA/cGFja2FnZS1pZD05ODc5ODZkYjZhYjJjMTc4I3Y2NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9NzIwZjQ4N2FjMTIxNTgyZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NTcyYjE1OTYyNGYxODk4YjQwZTlmMDljOWU0Y2ZiNjVhNTk1MDQ0OTYwOTgyYWE5NTEyNmJjMjhmN2QxZTZjMCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tc2VtdmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLXNlbXZlckB2MC4zLjE/cGFja2FnZS1pZD1jYmExNWIzZmY4ODM2YjIzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTk5MTRlYTE5YzZkYjJiM2MpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD1mNmYxMzk4MWY3MTA3NTE3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2ZjU2YWRhY2Y2OTYzMTA5NzJjNDJjMTgyMGIwZDMwZTQ1ZWI1MGZlNDNiNjEzNWY0YjZmZDExM2JhNDg3ZmIyIGZvciBnaXRodWIuY29tL2dvb2dsZS9nby1naXRodWIvdjU1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWdpdGh1YkB2NTUuMC4wP3BhY2thZ2UtaWQ9Y2RjNDQ3MGYzYWM1NTkyNCN2NTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD1lYTcwZjg0MjNlOTc5NmY5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3YjQyYWYxMjFhNTdkOGNhNWQ5MmFhY2NiNTJlYjcxNWM1Nzg0MGI4NDY0NzQ3NTFlM2VhOWU5ZjAyZTI4NDA1IGZvciBnaXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmdAdjAuNS4zP3BhY2thZ2UtaWQ9ZDhmMjQyOTYwNjM4ZWUxMikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWMxYTBhZTlkNjkxNGRmZDMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9MDk4MzI0MTdkNTE4YzhjYSN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OTliOGNjNmJmMzU5MjZiNGNkZjAzM2UwMDNlNTI5NTdiYWFjOTFjOWZkNDUzNThkODE2ZjZiOGI5NzdlMWNjYiBmb3IgazhzLmlvL2t1YmUtb3BlbmFwaSAocGtnOmdvbGFuZy9rOHMuaW8va3ViZS1vcGVuYXBpQHYwLjAuMC0yMDIzMTAxMDE3NTk0MS0yZGQ2ODRhOTFmMDA/cGFja2FnZS1pZD02ZGZhM2FiNzg1YTQwOTE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9ODZlM2UzMjIyNTk5ZTRmZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTYyZTU3ODE0ZTRhZTA5NTkyMDM2ZmY5MWJlOTk5MWMzMjZjMzVmZmJmNzM3MTdiOWZjYTJjN2QzNWUyNjI1YyBmb3IgZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS94YW56eS9nby1naXRsYWJAdjAuMTA5LjA/cGFja2FnZS1pZD1lZTRkMWRiNDI4N2UyM2U5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPWI4ZTI3ZjI2NjVjODUzM2YpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE4Yzg2OWZiZGE4MTlhZmI4ZDgwZTBhYzE5YmFjNTJlNzY2YmM2YzE5Y2IzOGNmOTRmNTJkNjRjNGJlMmFhYjYgZm9yIGdpdGh1Yi5jb20vZG9ja2VyL2NsaSAocGtnOmdvbGFuZy9naXRodWIuY29tL2RvY2tlci9jbGlAdjI3LjUuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPWEzOWJlMDgwODRjNDljYmIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmJlYTE5OGI2NDIxY2M4OTgwODRjMDNlYzZiMWJkMjQwMjAyMzg1ZThmMmUxODY5NzQ3MGVkZjgzZGUxZDBlNDkgZm9yIGdpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20veGFuenkvZ28tZ2l0bGFiQHYwLjEwOS4wP3BhY2thZ2UtaWQ9ZWU0ZDFkYjQyODdlMjNlOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YzUzODlhOTNkZjEzZmNjNzJhYjdhNzQ3MGEyNTZkYjcxMDg5MmVkN2IyNGY1MmM5ZmVlY2ZjZjEzZmRjMDg0NyBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM5N2E5NzE5Mzk1NThhNjYwZDQzODZlYWM5ZTdlMTFlZDM5NTUxZDI2ZGFmNWViNGQyMzdkYmFmMTQwYmZmYjEgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIzLjE/cGFja2FnZS1pZD05YTM2NDI2NGViOWIyMTFmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNjQ2NzhkYTUxMWNjM2M3NmUxYjIwY2Q3MDc0YzEwMmE2MmRlMDY4NWQ0ODZlYmExNDRlM2ZmN2IzZWU2MGYzIGZvciBnaXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYSAocGtnOmdvbGFuZy9naXRodWIuY29tL29wZW4tcG9saWN5LWFnZW50L29wYUB2MS42LjA/cGFja2FnZS1pZD00Y2FhNDQzY2RkYWVlN2RjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkY2NkMjZjNmZkOWMyOTZkYWY0NGQwYmM1NmJiNGVmYzU2NmVkZDQ4ODAzODFiMzMzMWM5YTYzZTZlNDcxMzM4IGZvciBnaXRodWIuY29tL2NvcmVvcy9nby1vaWRjL3YzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGNAdjMuMTEuMD9wYWNrYWdlLWlkPTBhMTQ4Njg5N2I1NTFhMWIjdjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmYxOWQ2YWFjM2EwNjNiNGVhNDMxOTY0NzIyNDhmZjY4ZTI3N2I3YzJhOWUwYTE5Mzc5OTEzNDY3N2Q0OTZjZGEgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9YjhlMjdmMjY2NWM4NTMzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjllMjkwZjE5NzI4NGY2ZjM4OWRjMWZkM2FiNTA3NTU0NzFkNTY4NmZhM2IxNjBhZDBhM2UzZTM5NjkxMTUyOCBmb3IgZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3NwZHgvdG9vbHMtZ29sYW5nQHYwLjUuMz9wYWNrYWdlLWlkPWQ4ZjI0Mjk2MDYzOGVlMTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gbGljZW5zZSBHUEwgZm9yIGdpdGh1Yi5jb20vc3BkeC90b29scy1nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9zcGR4L3Rvb2xzLWdvbGFuZ0B2MC41LjM/cGFja2FnZS1pZD1kOGYyNDI5NjA2MzhlZTEyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjbGktc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNsaS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJjbGktdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY2xpLXYxLTYwLTAiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtYW1kNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtYXJtNjQiLCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI2ZDUzMTgxZmRlMzgwYzdlNGRiN2ZhMTUzNjIyZWI2NWYxMzMwOTM2ZmNmNjY0ODU4ZDIyN2VhMDEzYjU0NGM5In0sICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvYXJ0aWZhY3Qtc2lnbmVkIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL2NvbnRhaW5lci1zaWduZWQiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IkNPTlRBSU5FUl9JTUFHRSJ9XSwgImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1hbWQ2NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSwgc2lnbmluZyJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgcHJvdmlkZWQgcGllY2Ugb2YgZXZpZGVuY2UgaGFzIGEgc2lnbmF0dXJlXG4iLCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLWFtZDY0IiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1hcm02NCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjEzZjYwZTcxOTU2NDljMmI5MGJhNzAwMmM3MTQ4ODc0Y2E3OTljODMxNzM1MjE2ZGY1OGNmOGJiNzk0MDIzMjIgZm9yIGdpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWxAdjEuMS4wP3BhY2thZ2UtaWQ9OWI1ZGNkZmM4ZWU3ZWM2MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2VjZmMxMGUyMzgyYTgyYWQ5OThmMWRiN2M3NmJjOTExNGQyNmY1ZjQzZGExNDJlM2YzMjg1MzNjZjBjMWY3MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM2LjM/cGFja2FnZS1pZD1mYWQ0ZDE5NjM4ZjNkYjA3KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZmM4NmE0ZTk0NDU2NWY2ZjQ5ZjA4ZGRkZjc4OGMzOGQ2ZTZhNGFhMzMyOTJkZmZhMmNiMTYxOWJhZTUxYmIxIGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPWMyN2Q4MjIxMWJhMmQwZDgpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42Ni4xP3BhY2thZ2UtaWQ9MGQyNzFiMmUwZjE3NTM4ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTRkZmQ3ZTM4MjgxMjA5NTkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjdkMmJmNzA1Yjg3NzUzNmU1ZTQ2ZWQ1MjZjOTlkYTdiNzhhYTE2YmUyMWE0NzM5NjIzMmQzOWNkZTRjZGQzOTkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD03ZmNhODhkMWU3OGQyMjljKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ29AdjEuNTUuNj9wYWNrYWdlLWlkPTU1OGM2ZWJkN2Q3MGFjNWMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9ZmFkNGQxOTYzOGYzZGIwNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjUzZGNlOGNiMTJiY2UwYjk2ZmMzZTZjYzU5ZjlmYjY1ZjEwNGRkMDY3NWM2YTcxMDJlMTlkYTg5MDMwYjU3YyBmb3IgZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXJAdjEuMjMuMj9wYWNrYWdlLWlkPTNiYTE5YzFkMjE3YjgyNGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM3NWJmNDExMTAzY2Q3OWMxY2MxOTk2OGExZmNkZmRjNjgyNWRjMzM4YmEwNWMzNmQzYWNkZjk3OWU1ZTk2MjkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD03ZmNhODhkMWU3OGQyMjljKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIyLjM/cGFja2FnZS1pZD05NzY1MDFkMTJlZGIzYmE4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjEzZjYwZTcxOTU2NDljMmI5MGJhNzAwMmM3MTQ4ODc0Y2E3OTljODMxNzM1MjE2ZGY1OGNmOGJiNzk0MDIzMjIgZm9yIGdpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWxAdjEuMS4wP3BhY2thZ2UtaWQ9MjYzMzU4MWJkNTZiMzVlYykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6M2VjZmMxMGUyMzgyYTgyYWQ5OThmMWRiN2M3NmJjOTExNGQyNmY1ZjQzZGExNDJlM2YzMjg1MzNjZjBjMWY3MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM2LjM/cGFja2FnZS1pZD03N2JjZGNmYzA1YTkzMTNmKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0ZmM4NmE0ZTk0NDU2NWY2ZjQ5ZjA4ZGRkZjc4OGMzOGQ2ZTZhNGFhMzMyOTJkZmZhMmNiMTYxOWJhZTUxYmIxIGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9YzJkOTVlMTcwYjA0ODYxMCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPWMxZWFmN2YwY2JhYzQxYWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42Ni4xP3BhY2thZ2UtaWQ9ODZhZWUxZTM1M2QzZWZkMykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTk5NDM2MDBlZDJlNWQyMGEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjdkMmJmNzA1Yjg3NzUzNmU1ZTQ2ZWQ1MjZjOTlkYTdiNzhhYTE2YmUyMWE0NzM5NjIzMmQzOWNkZTRjZGQzOTkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD1jMmQ5NWUxNzBiMDQ4NjEwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ29AdjEuNTUuNj9wYWNrYWdlLWlkPWZkZGQ1YTNhYTM0MzljYTIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9NzdiY2RjZmMwNWE5MzEzZikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjUzZGNlOGNiMTJiY2UwYjk2ZmMzZTZjYzU5ZjlmYjY1ZjEwNGRkMDY3NWM2YTcxMDJlMTlkYTg5MDMwYjU3YyBmb3IgZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9icmlhbmRvd25zL3NwaW5uZXJAdjEuMjMuMj9wYWNrYWdlLWlkPWI0ZmZmNDA3N2RjZDYzMzkpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmM3NWJmNDExMTAzY2Q3OWMxY2MxOTk2OGExZmNkZmRjNjgyNWRjMzM4YmEwNWMzNmQzYWNkZjk3OWU1ZTk2MjkgZm9yIGdpdGh1Yi5jb20vbGliL3BxIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vbGliL3BxQHYxLjEwLjk/cGFja2FnZS1pZD1jMmQ5NWUxNzBiMDQ4NjEwKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpkNDI5MGVkNjRjMmVkZDBmY2UxZDg0ZTNmOWRmYjI4ODEyNDBmZTUzNGRlZjc2YjhjZDI5ZWQ2YWY2ODNlMjg3IGZvciBnaXRodWIuY29tL2F3cy9zbWl0aHktZ28gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvQHYxLjIyLjM/cGFja2FnZS1pZD03MDk2ZDIxZTQ4OTBkZTE2KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiM2FjODQ4MjIyOGI5YzEwMTFhMDNjNTU4NmNkYzM5NWNjZWY5MTRlMmM4ZTc1OThiYjk0NWJjYWZmYmM4MzU5YyJ9LCAibmFtZSI6InNib20tZnJlc2huZXNzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1mcmVzaG5lc3MifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5Il0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsibGltaXQiOiIzMCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNlY3VyaXR5LHNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIFNCT00gcmVwb3J0cyBmb3IgW05USUEgU0JPTSBNaW5pbXVtIEVsZW1lbnRzIFJlcG9ydF0oaHR0cHM6Ly93d3cubnRpYS5nb3Yvc2l0ZXMvZGVmYXVsdC9maWxlcy9wdWJsaWNhdGlvbnMvc2JvbV9taW5pbXVtX2VsZW1lbnRzX3JlcG9ydF8wLnBkZikuIFN1cHBvcnRzIFNQRFggMi4zIGFuZCBDeWNsb25lRFggMS40Ky4gVGhlIHBvbGljeSBpZ25vcmVzIGxvY2FsIGZpbGVzIHRoYXQgZG8gbm90IG9yaWdpbmF0ZSBmcm9tIGEgcGFja2FnZSBtYW5hZ2VyLCBzdWNoIGFzIGEgbG9jYWwgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tdjEtNjAtMCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTliNWRjZGZjOGVlN2VjNjMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjNlY2ZjMTBlMjM4MmE4MmFkOTk4ZjFkYjdjNzZiYzkxMTRkMjZmNWY0M2RhMTQyZTNmMzI4NTMzY2YwYzFmNzAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zNi4zP3BhY2thZ2UtaWQ9ZmFkNGQxOTYzOGYzZGIwNykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGZjODZhNGU5NDQ1NjVmNmY0OWYwOGRkZGY3ODhjMzhkNmU2YTRhYTMzMjkyZGZmYTJjYjE2MTliYWU1MWJiMSBmb3IgZ2l0aHViLmNvbS9saWIvcHEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9saWIvcHFAdjEuMTAuOT9wYWNrYWdlLWlkPTdmY2E4OGQxZTc4ZDIyOWMpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjVmOGNlYmM5YWFiM2NlNjlhZGU5MjFlZmIxNGNhZWM0NzJjMzRmMjI1NjZlMDE1ZGY5NTEyMTExZGNhY2FlMDYgZm9yIGdpdGh1Yi5jb20vYWdleHQvbGV2ZW5zaHRlaW4gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbkB2MS4yLjM/cGFja2FnZS1pZD1jMjdkODIyMTFiYTJkMGQ4KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjYuMT9wYWNrYWdlLWlkPTBkMjcxYjJlMGYxNzUzOGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD00ZGZkN2UzODI4MTIwOTU5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3ZDJiZjcwNWI4Nzc1MzZlNWU0NmVkNTI2Yzk5ZGE3Yjc4YWExNmJlMjFhNDczOTYyMzJkMzljZGU0Y2RkMzk5IGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvQHYxLjU1LjY/cGFja2FnZS1pZD01NThjNmViZDdkNzBhYzVjKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphNmU4MzAxNzRkNjJkYWZhZDNhNzE4Mzg0NzcyZWExZjRjMGUyNzk4OWYwNTA5MzJkYzQ0MmE1ZTNkZGFkMDgwIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzYuMz9wYWNrYWdlLWlkPWZhZDRkMTk2MzhmM2RiMDcpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmI1M2RjZThjYjEyYmNlMGI5NmZjM2U2Y2M1OWY5ZmI2NWYxMDRkZDA2NzVjNmE3MTAyZTE5ZGE4OTAzMGI1N2MgZm9yIGdpdGh1Yi5jb20vYnJpYW5kb3ducy9zcGlubmVyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYnJpYW5kb3ducy9zcGlubmVyQHYxLjIzLjI/cGFja2FnZS1pZD0zYmExOWMxZDIxN2I4MjRlKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpjNzViZjQxMTEwM2NkNzljMWNjMTk5NjhhMWZjZGZkYzY4MjVkYzMzOGJhMDVjMzZkM2FjZGY5NzllNWU5NjI5IGZvciBnaXRodWIuY29tL2xpYi9wcSAocGtnOmdvbGFuZy9naXRodWIuY29tL2xpYi9wcUB2MS4xMC45P3BhY2thZ2UtaWQ9N2ZjYTg4ZDFlNzhkMjI5YykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMi4zP3BhY2thZ2UtaWQ9OTc2NTAxZDEyZWRiM2JhOCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn1dLCAid2l0aCI6eyJhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyI6IiBBcGFjaGUgMi4wLCBzaGEyNTY6YjlhNmQ5MzIwYjhmMjY5M2U4ZDQxZTQ5NmNlNTZjYWFkYWNhZGRjY2E5YmUyYTY0YTYxNzQ5Mjc4ZjQyNWNmMiwgc2hhMjU2OmNkNjU3MjExNzZjZTVmZGJiMDU3NzNjMGIxMzQ5Zjk5M2I5NGNlNzdhNTEwNjJjZmE3YTc4YjM0Y2M4MmZjNzEiLCAibGljZW5zZXMiOiJHUEwsIEFHUEwifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tLCBzZWN1cml0eSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBkb2Vzbid0IGhhdmUgYW55IGJhbm5lZCBjb21wb25lbnRzLlxuSXQgYWNjZXB0cyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29tcG9uZW50cy4gSWYgYSB2ZXJzaW9uIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBmYWlsIGZvciB2ZXJzaW9ucyBlcXVhbCBvciBsb3dlci5cbiAgd2l0aDpcbiAgICBjb21wb25lbnRzOiBsb2c0akAyLjE0LjEsIGJhbm5lZC1jb21wb25lbnQtbmFtZVwiXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLW50aWEiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLW50aWEiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiYzVmMDIyNDM0NzUxYzRjZDUzNDQ3NjU1NGRhOWNkYjdhYWNhNjU4ZDNmZTYxNGNjYWFlYWMzNjM0YzVhYTkzNiJ9LCAibmFtZSI6InNib20tbnRpYSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tbnRpYSJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiLCAiY3JhL2NyYS12dWxuZXJhYmlsaXR5LWhhbmRsaW5nLXJlcS0xIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIn0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBmb3IgY29tcG9uZW50cyB3aXRoIHVua25vd24gbGljZW5zZXMgaW4gdGhlIEN5Y2xvbmVEWCByZXBvcnQiLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLW1pZ3JhdGlvbnMtc2JvbS12MS02MC0wIiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1taWdyYXRpb25zLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtbWlncmF0aW9ucy12MS02MC0wIiwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiNmQ1MzE4MWZkZTM4MGM3ZTRkYjdmYTE1MzYyMmViNjVmMTMzMDkzNmZjZjY2NDg1OGQyMjdlYTAxM2I1NDRjOSJ9LCAibmFtZSI6ImFydGlmYWN0LXNpZ25lZCIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL2FydGlmYWN0LXNpZ25lZCJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9jb250YWluZXItc2lnbmVkIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJDT05UQUlORVJfSU1BR0UifV0sICJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFtZDY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImVlOGE4NDg2MjM4NTE2YzY4MTAyM2Y5ZjVkMDEzMmJkZjcxY2QxN2M0NjViYjYxZjZlZjI4MTNkOGJjZTkxMTAifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWxpY2Vuc2VzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ2aW9sYXRpb25zIjpbeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxMTI4MGQzOWY3NTljMTU3MDI2ZGQwZmFkODc0MmQ5NDc4MTkxZjE1ZGM5ODFiMzhkMmQ5ZTZhNjAyOTg3YmJhIGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6MTNmNjBlNzE5NTY0OWMyYjkwYmE3MDAyYzcxNDg4NzRjYTc5OWM4MzE3MzUyMTZkZjU4Y2Y4YmI3OTQwMjMyMiBmb3IgZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vemNsY29uZi9nby1jdHkteWFtbEB2MS4xLjA/cGFja2FnZS1pZD0zODc0YWMwMjcyZjliZWU1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo0OTdmY2RiOWZhZTU1OTI0YzEyZjU1ZjA1Y2JlODNhMDk2NjYyZTVjNTkxZDc5Yjc0ZTRhOGYyM2JhYjVmZmVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2ZzIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnNAdjAuMTYuMT9wYWNrYWdlLWlkPTRiYTQyMWM0MTU3YTA3NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRiOTA3MWRhZjVmOTk3NWViOTM2YzM3MDIwMDcwOWJiNzQzMzg2MmM1ZDRhMzJkMjFkYjY1NjIwMTMzZjRhOGUgZm9yIGdpdGh1Yi5jb20vamFja2MvcGd4L3Y1IChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vamFja2MvcGd4QHY1LjcuMj9wYWNrYWdlLWlkPTQ4YWM2ZGRmMzlhNzMyMTEjdjUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjRmNzJmZTk1N2VkNGUwNGU3ZWRkMjk4MDE2NWUyNTE1OGI4YTI2YmJlODc1MzI3ZDZiODk2MzdmNmRiNjBkNTEgZm9yIGdpdGh1Yi5jb20vaW1kYXJpby9tZXJnbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2ltZGFyaW8vbWVyZ29AdjAuMy4xNj9wYWNrYWdlLWlkPTJlYWM1OGU4OTUxMDc1MzEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjVmOGNlYmM5YWFiM2NlNjlhZGU5MjFlZmIxNGNhZWM0NzJjMzRmMjI1NjZlMDE1ZGY5NTEyMTExZGNhY2FlMDYgZm9yIGdpdGh1Yi5jb20vYWdleHQvbGV2ZW5zaHRlaW4gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbkB2MS4yLjM/cGFja2FnZS1pZD01NGYyMDBjYmEzZjNkZGQ1KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo2MDAyNDRjODA1MmM4YzFkMzA3MDQzZmFmYWNiYzgzYjQyOWMxNzFkZDhlMDhmNWE1MzdjMGE1NDAxNDU4NWVlIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY29tbW9uIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb25AdjAuNjMuMD9wYWNrYWdlLWlkPTMzOTZjYmQ1ZWEzY2RkNWUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjZjNzlmYWExNTE2ODg4NWZiODhhMzE2YWUwZGYxOGY0ODZkZWFmZGRlZmRjMTY4MjZjZGM1NmRmYmQ0MjFlMjQgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfbW9kZWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbEB2MC42LjI/cGFja2FnZS1pZD0yOGQ1ODI4OTY1M2U2OGFhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo3MTU4Y2EzZWQ5ZDBmZDVmMDcxNGYwYWVmMTQyMzZlYTI5OWY3MDE1ZTg3ZjQzYzNkM2NhMGVmNzNkYmQzOTU3IGZvciBjb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdCAocGtnOmdvbGFuZy9jb2RlLmNsb3VkZm91bmRyeS5vcmcvYnl0ZWZtdEB2MC4wLjAtMjAyMzA2MTIxNTE1MDctNDFlZjRkMWY2N2E0P3BhY2thZ2UtaWQ9MWMwMWIzNTkxNjQyMmFjOSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODU0OGJmYjJiYzE5MTMzOTZkZjM4YzU0OGE2ZWM2MGI4ZGJjYWMzYjA4MDA0ODVhNDA1NjljOGJkZDE4NDQ3MSBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmdAdjEuMjIuMD9wYWNrYWdlLWlkPWJhNTllOGE0Mzc1YzY2NWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2Ojg2Y2U1ZTJiYjcyZjYwM2E4ODQ5ZTA4NTUyNDAyMmJkYWM2NjY4ZGY0ZjBiYWNhNTA3MDMzNjEwMjM3MzY1ZjMgZm9yIGdpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1Zi92MiAocGtnOmdvbGFuZy9naXRodWIuY29tL3RoZXVwZGF0ZWZyYW1ld29yay9nby10dWZAdjIuMC4xP3BhY2thZ2UtaWQ9NzY3NjBhOTlmZmVkYmU2MiN2MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6OWJhMzZmNjZmYmE2ZjJlM2I3ZGNlOTVkOTQxM2E3Mzg2ODhhYmNmY2U4YzNkMzhjNTgxYjI3NmY5NDM3ZDFjNiBmb3IgZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWNAdjAuMjEuMD9wYWNrYWdlLWlkPTE5NmYwYWZiZDRlN2JhNjQpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmE2ZTgzMDE3NGQ2MmRhZmFkM2E3MTgzODQ3NzJlYTFmNGMwZTI3OTg5ZjA1MDkzMmRjNDQyYTVlM2RkYWQwODAgZm9yIGdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjIgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MkB2MS4zOS40P3BhY2thZ2UtaWQ9N2M4ZjU4M2Y0NzViMjc5YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YThjODY5ZmJkYTgxOWFmYjhkODBlMGFjMTliYWM1MmU3NjZiYzZjMTljYjM4Y2Y5NGY1MmQ2NGM0YmUyYWFiNiBmb3IgZ2l0aHViLmNvbS9kb2NrZXIvY2xpIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZG9ja2VyL2NsaUB2MjcuNS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzNiNGIxYThmNWUzNGY1MikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YjQwZWM1YjE2MTgyMTAzZWYxY2Q2OWQ0MmEyMWM5ODM2OWUzNWJkNDgzYjM5NzM5MDJkYTQ4MDdjMDc1NTQ0NiBmb3IgZ2l0aHViLmNvbS9tb2J5L21vYnkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9tb2J5L21vYnlAdjI2LjEuMCUyQmluY29tcGF0aWJsZT9wYWNrYWdlLWlkPTc1MWM0YTU0YzRkMDYxNTYpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmQ0MjkwZWQ2NGMyZWRkMGZjZTFkODRlM2Y5ZGZiMjg4MTI0MGZlNTM0ZGVmNzZiOGNkMjllZDZhZjY4M2UyODcgZm9yIGdpdGh1Yi5jb20vYXdzL3NtaXRoeS1nbyAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9zbWl0aHktZ29AdjEuMjMuMT9wYWNrYWdlLWlkPTMwZjVjOGY5Mzc4YjFiMGIpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmQ2NDY3OGRhNTExY2MzYzc2ZTFiMjBjZDcwNzRjMTAyYTYyZGUwNjg1ZDQ4NmViYTE0NGUzZmY3YjNlZTYwZjMgZm9yIGdpdGh1Yi5jb20vb3Blbi1wb2xpY3ktYWdlbnQvb3BhIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vb3Blbi1wb2xpY3ktYWdlbnQvb3BhQHYxLjYuMD9wYWNrYWdlLWlkPWZmZmJmNWY4YjUwNzJkZGUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OmRjY2QyNmM2ZmQ5YzI5NmRhZjQ0ZDBiYzU2YmI0ZWZjNTY2ZWRkNDg4MDM4MWIzMzMxYzlhNjNlNmU0NzEzMzggZm9yIGdpdGh1Yi5jb20vY29yZW9zL2dvLW9pZGMvdjMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkY0B2My4xMS4wP3BhY2thZ2UtaWQ9YmRiNTg3N2RlZWVhN2VhNCN2MykiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZjE5ZDZhYWMzYTA2M2I0ZWE0MzE5NjQ3MjI0OGZmNjhlMjc3YjdjMmE5ZTBhMTkzNzk5MTM0Njc3ZDQ5NmNkYSBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifV0sICJ3aXRoIjp7ImFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIjoiIEFwYWNoZSAyLjAsIHNoYTI1NjpiOWE2ZDkzMjBiOGYyNjkzZThkNDFlNDk2Y2U1NmNhYWRhY2FkZGNjYTliZTJhNjRhNjE3NDkyNzhmNDI1Y2YyLCBzaGEyNTY6Y2Q2NTcyMTE3NmNlNWZkYmIwNTc3M2MwYjEzNDlmOTkzYjk0Y2U3N2E1MTA2MmNmYTdhNzhiMzRjYzgyZmM3MSIsICJsaWNlbnNlcyI6IkdQTCwgQUdQTCJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20sIHNlY3VyaXR5In0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGRvZXNuJ3QgaGF2ZSBhbnkgYmFubmVkIGNvbXBvbmVudHMuXG5JdCBhY2NlcHRzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wb25lbnRzLiBJZiBhIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGZhaWwgZm9yIHZlcnNpb25zIGVxdWFsIG9yIGxvd2VyLlxuICB3aXRoOlxuICAgIGNvbXBvbmVudHM6IGxvZzRqQDIuMTQuMSwgYmFubmVkLWNvbXBvbmVudC1uYW1lXCJcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiN2E3Mzc2OTU4NDdmMjBjYTg3NjE5NTEyNTcwZjUzYzBlMzBkODc1ZTEzZDBmMWVhMzlhZWYwYWQ3YmIyNTFmYyJ9LCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWJhbm5lZC1jb21wb25lbnRzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tY29tcGxpYW5jZSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImNvbXBvbmVudHMiOiJsb2c0akAyLjE0LjEifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyB0aGF0IHRoZSBTQk9NIGlzIG5vdCBvbGRlciB0aGFuIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4gU3VwcG9ydHMgQ3ljbG9uZURYLlxuSXQgYWNjZXB0cyBhIGxpbWl0IGFyZ3VtZW50IGRlbm90aW5nIHRoZSBudW1iZXIgb2YgZGF5cy4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIGRlYWN0aXZhdGUgdGhlIHBvbGljeTpcbiAgd2l0aDpcbiAgICBsaW1pdDogMjBcbiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYW1kNjQiLCAibmFtZSI6InNib20tbnRpYSIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tbnRpYSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJjNWYwMjI0MzQ3NTFjNGNkNTM0NDc2NTU0ZGE5Y2RiN2FhY2E2NThkM2ZlNjE0Y2NhYWVhYzM2MzRjNWFhOTM2In0sICJuYW1lIjoic2JvbS1udGlhIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1udGlhIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSIsICJjcmEvY3JhLXZ1bG5lcmFiaWxpdHktaGFuZGxpbmctcmVxLTEiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04ifSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIGZvciBjb21wb25lbnRzIHdpdGggdW5rbm93biBsaWNlbnNlcyBpbiB0aGUgQ3ljbG9uZURYIHJlcG9ydCIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hbWQ2NCIsICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImQzZDI1YjE2NGY5YTA5Y2RiNGJiN2EwZDdiMzJlM2I1ZDI1ZDY1OTYwMDI3OWJhMzI3NTVjNDc0M2Q4NWFmYWIifSwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXdpdGgtbGljZW5zZXMifSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJza2lwcGVkX3R5cGVzIjoiZmlsZSwgY29udGFpbmVyIn19XSwgImNvbnRyb2wtcGxhbmUtc2JvbS1hcm02NCI6W3siYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBhbiBTQk9NIHJlcG9ydCBmb3IgY29tcG9uZW50cyB3aXRoIGJhbm5lZCBsaWNlbnNlcy4gU3VwcG9ydHMgQ3ljbG9uZURYIDEuNSsuXG5cblRoaXMgcG9saWN5IHZhbGlkYXRlcyBzb2Z0d2FyZSBjb21wb25lbnRzIGFnYWluc3QgbGljZW5zZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBieTpcbi0gRGV0ZWN0aW5nIHNwZWNpZmllZCBiYW5uZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzXG4tIEZsYWdnaW5nIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlc1xuLSBBbGxvd2luZyBleGNlcHRpb25zIGZvciB1c2luZyBzcGVjaWZpYyBjdXN0b20gbGljZW5zZXNcblxuVVNBR0UgRVhBTVBMRVM6XG5cbjEuIEJhbiBzcGVjaWZpYyBsaWNlbnNlczpcbiAgIHdpdGg6XG4gICAgIGxpY2Vuc2VzOiBcIkFHUEwtMy4wLEdQTC0zLjAtb3ItbGF0ZXJcIlxuXG4yLiBCYW4gbGljZW5zZSBmYW1pbGllcyB1c2luZyB3aWxkY2FyZHM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJHUExcIiAgIyBtYXRjaGVzIEdQTC0yLjAsIEdQTC0zLjAsIEdQTC0zLjAtb3ItbGF0ZXIsIEdQTCouXG5cbjMuIEFsbG93IHNwZWNpZmljIGN1c3RvbS9wcm9wcmlldGFyeSBsaWNlbnNlcyB3aXRoIGV4Y2VwdGlvbnM6XG4gICB3aXRoOlxuICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkNvbW1lcmNpYWwgTGljZW5zZSxFbnRlcnByaXNlIExpY2Vuc2VcIiAjIG1hdGNoZXMgY29tcG9uZW50cyB3aXRoIFwiQ29tbWVyY2lhbCBMaWNlbnNlXCIgYW5kIGNvbXBvbmVudHMgd2l0aCBcIkVudGVycHJpc2UgTGljZW5zZVwiIChjYXNlLWluc2Vuc2l0aXZlKS5cblxuNC4gQ29tcHJlaGVuc2l2ZSBsaWNlbnNlIGNvbnRyb2w6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLEdQTCxMR1BMXCJcbiAgICAgYWxsb3dlZF9jdXN0b21fbGljZW5zZXM6IFwiQXBwcm92ZWQgUHJvcHJpZXRhcnkgTGljZW5zZVwiXG5cbkxJQ0VOU0UgREVURUNUSU9OOlxuLSBXaWxkY2FyZCBtYXRjaCBmb3IgbGljZW5zZXMgKHBhdHRlcm4qKSBpbiBleHByZXNzaW9ucyBhbmQgbGljZW5zZS5pZC4gRXhwcmVzc2lvbiBwYXJzaW5nIHN1cHBvcnRzIFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwgXCIoR1BMLTIuMCBBTkQgQlNELTMtQ2xhdXNlKVwiLCBjb21wbGV4IG5lc3RlZCBwYXJlbnRoZXNlcyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbi0gQ3VzdG9tIGxpY2Vuc2VzICh1c2Ugb2YgbGljZW5zZS5uYW1lIGZpZWxkKSBhcmUgZmxhZ2dlZCBieSBkZWZhdWx0LiBcbi0gRm9yIGN1c3RvbSBsaWNlbnNlLCBvbmx5IGV4YWN0IG1hdGNoIG9mIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzIGluIGxpY2Vuc2UubmFtZSBhcmUgYWNjZXB0ZWQgYW5kIGRvbid0IHRocm93cyBhIHZpb2xhdGlvbi4gXG4tIENhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgaXMgYXBwbGllZCB0byBhbGwgbGljZW5zZSBjb21wYXJpc29ucy5cblxuXG5MSU1JVEFUSU9OUzpcbi0gbGljZW5zZXMgaW5wdXQgdmFsdWVzIGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgU1BEWCBsaWNlbnNlIGxpc3QuIFRoaXMgbWVhbnMgdGhhdCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBjYW4gYmUgdXNlZCBhcyBhIGxpY2Vuc2UgaWRlbnRpZmllciwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBmYWxzZSBwb3NpdGl2ZXMgb3IgbmVnYXRpdmVzIGluIGxpY2Vuc2UgZGV0ZWN0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhbGxvd3MgZm9yIGZsZXhpYmlsaXR5IGluIGxpY2Vuc2UgbWF0Y2hpbmcuIFxuLSBTUERYIGV4cHJlc3Npb25zIHdpdGggbmVzdGVkIHBhcmVudGhlc2VzIChlLmcuLCAnKChNSVQgT1IgQlNEKSBBTkQgR1BMKScpIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGNhdXNlIHZpb2xhdGlvbnNcbi0gTGltaXRlZCBzdXBwb3J0IGZvciBleGNlcHRpb25zIHdpdGggV0lUSCBjbGF1c2VzIGluIGNvbXBsZXggZXhwcmVzc2lvbnMuIFdoaWxlIGJhbm5lZCBsaWNlbnNlcz1cIkdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIgd2lsbCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IFdJVEggQ2xhc3NwYXRoLWV4Y2VwdGlvbi0yLjApIE9SIE1JVFwiLFxuIGl0IHdpbGwgbm90IGJlIGZsYWdnZWQgaW4gdGhlIGNhc2Ugb2YgZXhwcmVzc2lvbj1cIihHUEwtMi4wLW9ubHkgT1IgTUlUKSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wXCIuXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tYXJtNjQiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD0xOTZmMGFmYmQ0ZTdiYTY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTM4NzRhYzAyNzJmOWJlZTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjQ5N2ZjZGI5ZmFlNTU5MjRjMTJmNTVmMDVjYmU4M2EwOTY2NjJlNWM1OTFkNzliNzRlNGE4ZjIzYmFiNWZmZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2Nmc0B2MC4xNi4xP3BhY2thZ2UtaWQ9NGJhNDIxYzQxNTdhMDc1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGI5MDcxZGFmNWY5OTc1ZWI5MzZjMzcwMjAwNzA5YmI3NDMzODYyYzVkNGEzMmQyMWRiNjU2MjAxMzNmNGE4ZSBmb3IgZ2l0aHViLmNvbS9qYWNrYy9wZ3gvdjUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9qYWNrYy9wZ3hAdjUuNy4yP3BhY2thZ2UtaWQ9NDhhYzZkZGYzOWE3MzIxMSN2NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9MmVhYzU4ZTg5NTEwNzUzMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPTU0ZjIwMGNiYTNmM2RkZDUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MzM5NmNiZDVlYTNjZGQ1ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTI4ZDU4Mjg5NjUzZTY4YWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD0xYzAxYjM1OTE2NDIyYWM5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9YmE1OWU4YTQzNzVjNjY1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODZjZTVlMmJiNzJmNjAzYTg4NDllMDg1NTI0MDIyYmRhYzY2NjhkZjRmMGJhY2E1MDcwMzM2MTAyMzczNjVmMyBmb3IgZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmL3YyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1ZkB2Mi4wLjE/cGFja2FnZS1pZD03Njc2MGE5OWZmZWRiZTYyI3YyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD03M2I0YjFhOGY1ZTM0ZjUyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiNDBlYzViMTYxODIxMDNlZjFjZDY5ZDQyYTIxYzk4MzY5ZTM1YmQ0ODNiMzk3MzkwMmRhNDgwN2MwNzU1NDQ2IGZvciBnaXRodWIuY29tL21vYnkvbW9ieSAocGtnOmdvbGFuZy9naXRodWIuY29tL21vYnkvbW9ieUB2MjYuMS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzUxYzRhNTRjNGQwNjE1NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9MzBmNWM4ZjkzNzhiMWIwYikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9ZmZmYmY1ZjhiNTA3MmRkZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD1iZGI1ODc3ZGVlZWE3ZWE0I3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTdjOGY1ODNmNDc1YjI3OWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI3YTczNzY5NTg0N2YyMGNhODc2MTk1MTI1NzBmNTNjMGUzMGQ4NzVlMTNkMGYxZWEzOWFlZjBhZDdiYjI1MWZjIn0sICJuYW1lIjoic2JvbS1iYW5uZWQtY29tcG9uZW50cyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tYmFubmVkLWNvbXBvbmVudHMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsiY29tcG9uZW50cyI6ImxvZzRqQDIuMTQuMSJ9fSwgeyJhbm5vdGF0aW9ucyI6eyJjYXRlZ29yeSI6InNib20ifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gaXMgbm90IG9sZGVyIHRoYW4gYSBzcGVjaWZpZWQgdGhyZXNob2xkLiBTdXBwb3J0cyBDeWNsb25lRFguXG5JdCBhY2NlcHRzIGEgbGltaXQgYXJndW1lbnQgZGVub3RpbmcgdGhlIG51bWJlciBvZiBkYXlzLiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgZGVhY3RpdmF0ZSB0aGUgcG9saWN5OlxuICB3aXRoOlxuICAgIGxpbWl0OiAyMFxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tZnJlc2huZXNzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjNhYzg0ODIyMjhiOWMxMDExYTAzYzU1ODZjZGMzOTVjY2VmOTE0ZTJjOGU3NTk4YmI5NDViY2FmZmJjODM1OWMifSwgIm5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tZnJlc2huZXNzIn0sICJyZXF1aXJlbWVudHMiOlsiY2hhaW5sb29wLWJlc3QtcHJhY3RpY2VzL3Nib20tcXVhbGl0eSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7ImxpbWl0IjoiMzAifX0sIHsiYW5ub3RhdGlvbnMiOnsiY2F0ZWdvcnkiOiJzZWN1cml0eSxzYm9tIn0sICJkZXNjcmlwdGlvbiI6IkNoZWNrcyBTQk9NIHJlcG9ydHMgZm9yIFtOVElBIFNCT00gTWluaW11bSBFbGVtZW50cyBSZXBvcnRdKGh0dHBzOi8vd3d3Lm50aWEuZ292L3NpdGVzL2RlZmF1bHQvZmlsZXMvcHVibGljYXRpb25zL3Nib21fbWluaW11bV9lbGVtZW50c19yZXBvcnRfMC5wZGYpLiBTdXBwb3J0cyBTUERYIDIuMyBhbmQgQ3ljbG9uZURYIDEuNCsuIFRoZSBwb2xpY3kgaWdub3JlcyBsb2NhbCBmaWxlcyB0aGF0IGRvIG5vdCBvcmlnaW5hdGUgZnJvbSBhIHBhY2thZ2UgbWFuYWdlciwgc3VjaCBhcyBhIGxvY2FsIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiIsICJncm91cFJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1xdWFsaXR5IiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6Ijg2MjIwMjNhOWU2YzZmMmMwYzAxM2NjYmZiOWIyNjI5MWZjZDYwYTBjZTllODNjNmJiMzU5OTBkZWNjNzQyZmQifSwgIm5hbWUiOiJzYm9tLXF1YWxpdHkiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLXF1YWxpdHkifSwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtc2JvbS1hcm02NCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLWFybTY0IiwgIm5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXdpdGgtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZDNkMjViMTY0ZjlhMDljZGI0YmI3YTBkN2IzMmUzYjVkMjVkNjU5NjAwMjc5YmEzMjc1NWM0NzQzZDg1YWZhYiJ9LCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20td2l0aC1saWNlbnNlcyJ9LCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiIsICJ3aXRoIjp7InNraXBwZWRfdHlwZXMiOiJmaWxlLCBjb250YWluZXIifX1dLCAiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgYW4gU0JPTSByZXBvcnQgZm9yIGNvbXBvbmVudHMgd2l0aCBiYW5uZWQgbGljZW5zZXMuIFN1cHBvcnRzIEN5Y2xvbmVEWCAxLjUrLlxuXG5UaGlzIHBvbGljeSB2YWxpZGF0ZXMgc29mdHdhcmUgY29tcG9uZW50cyBhZ2FpbnN0IGxpY2Vuc2UgY29tcGxpYW5jZSByZXF1aXJlbWVudHMgYnk6XG4tIERldGVjdGluZyBzcGVjaWZpZWQgYmFubmVkIFNQRFggbGljZW5zZSBpZGVudGlmaWVyc1xuLSBGbGFnZ2luZyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXNcbi0gQWxsb3dpbmcgZXhjZXB0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMgY3VzdG9tIGxpY2Vuc2VzXG5cblVTQUdFIEVYQU1QTEVTOlxuXG4xLiBCYW4gc3BlY2lmaWMgbGljZW5zZXM6XG4gICB3aXRoOlxuICAgICBsaWNlbnNlczogXCJBR1BMLTMuMCxHUEwtMy4wLW9yLWxhdGVyXCJcblxuMi4gQmFuIGxpY2Vuc2UgZmFtaWxpZXMgdXNpbmcgd2lsZGNhcmRzOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiR1BMXCIgICMgbWF0Y2hlcyBHUEwtMi4wLCBHUEwtMy4wLCBHUEwtMy4wLW9yLWxhdGVyLCBHUEwqLlxuXG4zLiBBbGxvdyBzcGVjaWZpYyBjdXN0b20vcHJvcHJpZXRhcnkgbGljZW5zZXMgd2l0aCBleGNlcHRpb25zOlxuICAgd2l0aDpcbiAgICBhbGxvd2VkX2N1c3RvbV9saWNlbnNlczogXCJDb21tZXJjaWFsIExpY2Vuc2UsRW50ZXJwcmlzZSBMaWNlbnNlXCIgIyBtYXRjaGVzIGNvbXBvbmVudHMgd2l0aCBcIkNvbW1lcmNpYWwgTGljZW5zZVwiIGFuZCBjb21wb25lbnRzIHdpdGggXCJFbnRlcnByaXNlIExpY2Vuc2VcIiAoY2FzZS1pbnNlbnNpdGl2ZSkuXG5cbjQuIENvbXByZWhlbnNpdmUgbGljZW5zZSBjb250cm9sOlxuICAgd2l0aDpcbiAgICAgbGljZW5zZXM6IFwiQUdQTCxHUEwsTEdQTFwiXG4gICAgIGFsbG93ZWRfY3VzdG9tX2xpY2Vuc2VzOiBcIkFwcHJvdmVkIFByb3ByaWV0YXJ5IExpY2Vuc2VcIlxuXG5MSUNFTlNFIERFVEVDVElPTjpcbi0gV2lsZGNhcmQgbWF0Y2ggZm9yIGxpY2Vuc2VzIChwYXR0ZXJuKikgaW4gZXhwcmVzc2lvbnMgYW5kIGxpY2Vuc2UuaWQuIEV4cHJlc3Npb24gcGFyc2luZyBzdXBwb3J0cyBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsIFwiKEdQTC0yLjAgQU5EIEJTRC0zLUNsYXVzZSlcIiwgY29tcGxleCBuZXN0ZWQgcGFyZW50aGVzZXMgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4tIEN1c3RvbSBsaWNlbnNlcyAodXNlIG9mIGxpY2Vuc2UubmFtZSBmaWVsZCkgYXJlIGZsYWdnZWQgYnkgZGVmYXVsdC4gXG4tIEZvciBjdXN0b20gbGljZW5zZSwgb25seSBleGFjdCBtYXRjaCBvZiBhbGxvd2VkX2N1c3RvbV9saWNlbnNlcyBpbiBsaWNlbnNlLm5hbWUgYXJlIGFjY2VwdGVkIGFuZCBkb24ndCB0aHJvd3MgYSB2aW9sYXRpb24uIFxuLSBDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGxpY2Vuc2UgY29tcGFyaXNvbnMuXG5cblxuTElNSVRBVElPTlM6XG4tIGxpY2Vuc2VzIGlucHV0IHZhbHVlcyBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IFNQRFggbGljZW5zZSBsaXN0LiBUaGlzIG1lYW5zIHRoYXQgYW55IGFyYml0cmFyeSBzdHJpbmcgY2FuIGJlIHVzZWQgYXMgYSBsaWNlbnNlIGlkZW50aWZpZXIsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gZmFsc2UgcG9zaXRpdmVzIG9yIG5lZ2F0aXZlcyBpbiBsaWNlbnNlIGRldGVjdGlvbi4gT24gdGhlIG90aGVyIGhhbmQsIHRoaXMgYWxsb3dzIGZvciBmbGV4aWJpbGl0eSBpbiBsaWNlbnNlIG1hdGNoaW5nLiBcbi0gU1BEWCBleHByZXNzaW9ucyB3aXRoIG5lc3RlZCBwYXJlbnRoZXNlcyAoZS5nLiwgJygoTUlUIE9SIEJTRCkgQU5EIEdQTCknKSBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBjYXVzZSB2aW9sYXRpb25zXG4tIExpbWl0ZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9ucyB3aXRoIFdJVEggY2xhdXNlcyBpbiBjb21wbGV4IGV4cHJlc3Npb25zLiBXaGlsZSBiYW5uZWQgbGljZW5zZXM9XCJHUEwtMi4wLW9ubHkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGUgY2FzZSBvZiBleHByZXNzaW9uPVwiKEdQTC0yLjAtb25seSBXSVRIIENsYXNzcGF0aC1leGNlcHRpb24tMi4wKSBPUiBNSVRcIixcbiBpdCB3aWxsIG5vdCBiZSBmbGFnZ2VkIGluIHRoZSBjYXNlIG9mIGV4cHJlc3Npb249XCIoR1BMLTIuMC1vbmx5IE9SIE1JVCkgV0lUSCBDbGFzc3BhdGgtZXhjZXB0aW9uLTIuMFwiLlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1iYW5uZWQtbGljZW5zZXMiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiZWU4YTg0ODYyMzg1MTZjNjgxMDIzZjlmNWQwMTMyYmRmNzFjZDE3YzQ2NWJiNjFmNmVmMjgxM2Q4YmNlOTExMCJ9LCAibmFtZSI6InNib20tYmFubmVkLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtbGljZW5zZXMifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1jb21wbGlhbmNlIl0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgInZpb2xhdGlvbnMiOlt7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjExMjgwZDM5Zjc1OWMxNTcwMjZkZDBmYWQ4NzQyZDk0NzgxOTFmMTVkYzk4MWIzOGQyZDllNmE2MDI5ODdiYmEgZm9yIGdpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjQHYwLjIxLjA/cGFja2FnZS1pZD0xOTZmMGFmYmQ0ZTdiYTY0KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjoxM2Y2MGU3MTk1NjQ5YzJiOTBiYTcwMDJjNzE0ODg3NGNhNzk5YzgzMTczNTIxNmRmNThjZjhiYjc5NDAyMzIyIGZvciBnaXRodWIuY29tL3pjbGNvbmYvZ28tY3R5LXlhbWwgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS96Y2xjb25mL2dvLWN0eS15YW1sQHYxLjEuMD9wYWNrYWdlLWlkPTM4NzRhYzAyNzJmOWJlZTUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjQ5N2ZjZGI5ZmFlNTU5MjRjMTJmNTVmMDVjYmU4M2EwOTY2NjJlNWM1OTFkNzliNzRlNGE4ZjIzYmFiNWZmZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9wcm9jZnMgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL3Byb2Nmc0B2MC4xNi4xP3BhY2thZ2UtaWQ9NGJhNDIxYzQxNTdhMDc1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGI5MDcxZGFmNWY5OTc1ZWI5MzZjMzcwMjAwNzA5YmI3NDMzODYyYzVkNGEzMmQyMWRiNjU2MjAxMzNmNGE4ZSBmb3IgZ2l0aHViLmNvbS9qYWNrYy9wZ3gvdjUgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9qYWNrYy9wZ3hAdjUuNy4yP3BhY2thZ2UtaWQ9NDhhYzZkZGYzOWE3MzIxMSN2NSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NGY3MmZlOTU3ZWQ0ZTA0ZTdlZGQyOTgwMTY1ZTI1MTU4YjhhMjZiYmU4NzUzMjdkNmI4OTYzN2Y2ZGI2MGQ1MSBmb3IgZ2l0aHViLmNvbS9pbWRhcmlvL21lcmdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vaW1kYXJpby9tZXJnb0B2MC4zLjE2P3BhY2thZ2UtaWQ9MmVhYzU4ZTg5NTEwNzUzMSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NWY4Y2ViYzlhYWIzY2U2OWFkZTkyMWVmYjE0Y2FlYzQ3MmMzNGYyMjU2NmUwMTVkZjk1MTIxMTFkY2FjYWUwNiBmb3IgZ2l0aHViLmNvbS9hZ2V4dC9sZXZlbnNodGVpbiAocGtnOmdvbGFuZy9naXRodWIuY29tL2FnZXh0L2xldmVuc2h0ZWluQHYxLjIuMz9wYWNrYWdlLWlkPTU0ZjIwMGNiYTNmM2RkZDUpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjYwMDI0NGM4MDUyYzhjMWQzMDcwNDNmYWZhY2JjODNiNDI5YzE3MWRkOGUwOGY1YTUzN2MwYTU0MDE0NTg1ZWUgZm9yIGdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jb21tb24gKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NvbW1vbkB2MC42My4wP3BhY2thZ2UtaWQ9MzM5NmNiZDVlYTNjZGQ1ZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6NmM3OWZhYTE1MTY4ODg1ZmI4OGEzMTZhZTBkZjE4ZjQ4NmRlYWZkZGVmZGMxNjgyNmNkYzU2ZGZiZDQyMWUyNCBmb3IgZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9tb2RlbCAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X21vZGVsQHYwLjYuMj9wYWNrYWdlLWlkPTI4ZDU4Mjg5NjUzZTY4YWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9LCB7Im1lc3NhZ2UiOiJGb3JiaWRkZW4gY3VzdG9tIGxpY2Vuc2Ugc2hhMjU2OjcxNThjYTNlZDlkMGZkNWYwNzE0ZjBhZWYxNDIzNmVhMjk5ZjcwMTVlODdmNDNjM2QzY2EwZWY3M2RiZDM5NTcgZm9yIGNvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10IChwa2c6Z29sYW5nL2NvZGUuY2xvdWRmb3VuZHJ5Lm9yZy9ieXRlZm10QHYwLjAuMC0yMDIzMDYxMjE1MTUwNy00MWVmNGQxZjY3YTQ/cGFja2FnZS1pZD0xYzAxYjM1OTE2NDIyYWM5KSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo4NTQ4YmZiMmJjMTkxMzM5NmRmMzhjNTQ4YTZlYzYwYjhkYmNhYzNiMDgwMDQ4NWE0MDU2OWM4YmRkMTg0NDcxIGZvciBnaXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZyAocGtnOmdvbGFuZy9naXRodWIuY29tL3Byb21ldGhldXMvY2xpZW50X2dvbGFuZ0B2MS4yMi4wP3BhY2thZ2UtaWQ9YmE1OWU4YTQzNzVjNjY1YSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ODZjZTVlMmJiNzJmNjAzYTg4NDllMDg1NTI0MDIyYmRhYzY2NjhkZjRmMGJhY2E1MDcwMzM2MTAyMzczNjVmMyBmb3IgZ2l0aHViLmNvbS90aGV1cGRhdGVmcmFtZXdvcmsvZ28tdHVmL3YyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vdGhldXBkYXRlZnJhbWV3b3JrL2dvLXR1ZkB2Mi4wLjE/cGFja2FnZS1pZD03Njc2MGE5OWZmZWRiZTYyI3YyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1Njo5YmEzNmY2NmZiYTZmMmUzYjdkY2U5NWQ5NDEzYTczODY4OGFiY2ZjZThjM2QzOGM1ODFiMjc2Zjk0MzdkMWM2IGZvciBnaXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYyAocGtnOmdvbGFuZy9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlY0B2MC4yMS4wP3BhY2thZ2UtaWQ9MTk2ZjBhZmJkNGU3YmE2NCkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6YTZlODMwMTc0ZDYyZGFmYWQzYTcxODM4NDc3MmVhMWY0YzBlMjc5ODlmMDUwOTMyZGM0NDJhNWUzZGRhZDA4MCBmb3IgZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby12MiAocGtnOmdvbGFuZy9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyQHYxLjM5LjQ/cGFja2FnZS1pZD03YzhmNTgzZjQ3NWIyNzlhKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjphOGM4NjlmYmRhODE5YWZiOGQ4MGUwYWMxOWJhYzUyZTc2NmJjNmMxOWNiMzhjZjk0ZjUyZDY0YzRiZTJhYWI2IGZvciBnaXRodWIuY29tL2RvY2tlci9jbGkgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9kb2NrZXIvY2xpQHYyNy41LjAlMkJpbmNvbXBhdGlibGU/cGFja2FnZS1pZD03M2I0YjFhOGY1ZTM0ZjUyKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpiNDBlYzViMTYxODIxMDNlZjFjZDY5ZDQyYTIxYzk4MzY5ZTM1YmQ0ODNiMzk3MzkwMmRhNDgwN2MwNzU1NDQ2IGZvciBnaXRodWIuY29tL21vYnkvbW9ieSAocGtnOmdvbGFuZy9naXRodWIuY29tL21vYnkvbW9ieUB2MjYuMS4wJTJCaW5jb21wYXRpYmxlP3BhY2thZ2UtaWQ9NzUxYzRhNTRjNGQwNjE1NikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDQyOTBlZDY0YzJlZGQwZmNlMWQ4NGUzZjlkZmIyODgxMjQwZmU1MzRkZWY3NmI4Y2QyOWVkNmFmNjgzZTI4NyBmb3IgZ2l0aHViLmNvbS9hd3Mvc21pdGh5LWdvIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL3NtaXRoeS1nb0B2MS4yMy4xP3BhY2thZ2UtaWQ9MzBmNWM4ZjkzNzhiMWIwYikiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZDY0Njc4ZGE1MTFjYzNjNzZlMWIyMGNkNzA3NGMxMDJhNjJkZTA2ODVkNDg2ZWJhMTQ0ZTNmZjdiM2VlNjBmMyBmb3IgZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGEgKHBrZzpnb2xhbmcvZ2l0aHViLmNvbS9vcGVuLXBvbGljeS1hZ2VudC9vcGFAdjEuNi4wP3BhY2thZ2UtaWQ9ZmZmYmY1ZjhiNTA3MmRkZSkiLCAic3ViamVjdCI6InNib20tYmFubmVkLWxpY2Vuc2VzIn0sIHsibWVzc2FnZSI6IkZvcmJpZGRlbiBjdXN0b20gbGljZW5zZSBzaGEyNTY6ZGNjZDI2YzZmZDljMjk2ZGFmNDRkMGJjNTZiYjRlZmM1NjZlZGQ0ODgwMzgxYjMzMzFjOWE2M2U2ZTQ3MTMzOCBmb3IgZ2l0aHViLmNvbS9jb3Jlb3MvZ28tb2lkYy92MyAocGtnOmdvbGFuZy9naXRodWIuY29tL2NvcmVvcy9nby1vaWRjQHYzLjExLjA/cGFja2FnZS1pZD1iZGI1ODc3ZGVlZWE3ZWE0I3YzKSIsICJzdWJqZWN0Ijoic2JvbS1iYW5uZWQtbGljZW5zZXMifSwgeyJtZXNzYWdlIjoiRm9yYmlkZGVuIGN1c3RvbSBsaWNlbnNlIHNoYTI1NjpmMTlkNmFhYzNhMDYzYjRlYTQzMTk2NDcyMjQ4ZmY2OGUyNzdiN2MyYTllMGExOTM3OTkxMzQ2NzdkNDk2Y2RhIGZvciBnaXRodWIuY29tL2F3cy9hd3Mtc2RrLWdvLXYyIChwa2c6Z29sYW5nL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28tdjJAdjEuMzkuND9wYWNrYWdlLWlkPTdjOGY1ODNmNDc1YjI3OWEpIiwgInN1YmplY3QiOiJzYm9tLWJhbm5lZC1saWNlbnNlcyJ9XSwgIndpdGgiOnsiYWxsb3dlZF9jdXN0b21fbGljZW5zZXMiOiIgQXBhY2hlIDIuMCwgc2hhMjU2OmI5YTZkOTMyMGI4ZjI2OTNlOGQ0MWU0OTZjZTU2Y2FhZGFjYWRkY2NhOWJlMmE2NGE2MTc0OTI3OGY0MjVjZjIsIHNoYTI1NjpjZDY1NzIxMTc2Y2U1ZmRiYjA1NzczYzBiMTM0OWY5OTNiOTRjZTc3YTUxMDYyY2ZhN2E3OGIzNGNjODJmYzcxIiwgImxpY2Vuc2VzIjoiR1BMLCBBR1BMIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSwgc2VjdXJpdHkifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIFNCT00gZG9lc24ndCBoYXZlIGFueSBiYW5uZWQgY29tcG9uZW50cy5cbkl0IGFjY2VwdHMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXBvbmVudHMuIElmIGEgdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgZmFpbCBmb3IgdmVyc2lvbnMgZXF1YWwgb3IgbG93ZXIuXG4gIHdpdGg6XG4gICAgY29tcG9uZW50czogbG9nNGpAMi4xNC4xLCBiYW5uZWQtY29tcG9uZW50LW5hbWVcIlxuIiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20tYmFubmVkLWNvbXBvbmVudHMiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjdhNzM3Njk1ODQ3ZjIwY2E4NzYxOTUxMjU3MGY1M2MwZTMwZDg3NWUxM2QwZjFlYTM5YWVmMGFkN2JiMjUxZmMifSwgIm5hbWUiOiJzYm9tLWJhbm5lZC1jb21wb25lbnRzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1iYW5uZWQtY29tcG9uZW50cyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLWNvbXBsaWFuY2UiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJjb21wb25lbnRzIjoibG9nNGpAMi4xNC4xIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgdGhhdCB0aGUgU0JPTSBpcyBub3Qgb2xkZXIgdGhhbiBhIHNwZWNpZmllZCB0aHJlc2hvbGQuIFN1cHBvcnRzIEN5Y2xvbmVEWC5cbkl0IGFjY2VwdHMgYSBsaW1pdCBhcmd1bWVudCBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIGRheXMuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBkZWFjdGl2YXRlIHRoZSBwb2xpY3k6XG4gIHdpdGg6XG4gICAgbGltaXQ6IDIwXG4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAicG9saWN5UmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLWZyZXNobmVzcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiIzYWM4NDgyMjI4YjljMTAxMWEwM2M1NTg2Y2RjMzk1Y2NlZjkxNGUyYzhlNzU5OGJiOTQ1YmNhZmZiYzgzNTljIn0sICJuYW1lIjoic2JvbS1mcmVzaG5lc3MiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLWZyZXNobmVzcyJ9LCAicmVxdWlyZW1lbnRzIjpbImNoYWlubG9vcC1iZXN0LXByYWN0aWNlcy9zYm9tLXF1YWxpdHkiXSwgInNraXBwZWQiOmZhbHNlLCAidHlwZSI6IlNCT01fQ1lDTE9ORURYX0pTT04iLCAid2l0aCI6eyJsaW1pdCI6IjMwIn19LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksc2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgU0JPTSByZXBvcnRzIGZvciBbTlRJQSBTQk9NIE1pbmltdW0gRWxlbWVudHMgUmVwb3J0XShodHRwczovL3d3dy5udGlhLmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL3B1YmxpY2F0aW9ucy9zYm9tX21pbmltdW1fZWxlbWVudHNfcmVwb3J0XzAucGRmKS4gU3VwcG9ydHMgU1BEWCAyLjMgYW5kIEN5Y2xvbmVEWCAxLjQrLiBUaGUgcG9saWN5IGlnbm9yZXMgbG9jYWwgZmlsZXMgdGhhdCBkbyBub3Qgb3JpZ2luYXRlIGZyb20gYSBwYWNrYWdlIG1hbmFnZXIsIHN1Y2ggYXMgYSBsb2NhbCBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4iLCAiZ3JvdXBSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20tcXVhbGl0eSIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiI4NjIyMDIzYTllNmM2ZjJjMGMwMTNjY2JmYjliMjYyOTFmY2Q2MGEwY2U5ZTgzYzZiYjM1OTkwZGVjYzc0MmZkIn0sICJuYW1lIjoic2JvbS1xdWFsaXR5IiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS1xdWFsaXR5In0sICJtYXRlcmlhbE5hbWUiOiJjb250cm9sLXBsYW5lLXNib20tdjEtNjAtMCIsICJuYW1lIjoic2JvbS1udGlhIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoic2JvbS1udGlhIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6ImM1ZjAyMjQzNDc1MWM0Y2Q1MzQ0NzY1NTRkYTljZGI3YWFjYTY1OGQzZmU2MTRjY2FhZWFjMzYzNGM1YWE5MzYifSwgIm5hbWUiOiJzYm9tLW50aWEiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9zYm9tLW50aWEifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvc2JvbS1xdWFsaXR5IiwgImNyYS9jcmEtdnVsbmVyYWJpbGl0eS1oYW5kbGluZy1yZXEtMSJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiU0JPTV9DWUNMT05FRFhfSlNPTiJ9LCB7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2JvbSJ9LCAiZGVzY3JpcHRpb24iOiJDaGVja3MgZm9yIGNvbXBvbmVudHMgd2l0aCB1bmtub3duIGxpY2Vuc2VzIGluIHRoZSBDeWNsb25lRFggcmVwb3J0IiwgImdyb3VwUmVmZXJlbmNlIjp7ImFubm90YXRpb25zIjp7Im5hbWUiOiJzYm9tLXF1YWxpdHkiLCAib3JnYW5pemF0aW9uIjoiIn0sICJkaWdlc3QiOnsic2hhMjU2IjoiODYyMjAyM2E5ZTZjNmYyYzBjMDEzY2NiZmI5YjI2MjkxZmNkNjBhMGNlOWU4M2M2YmIzNTk5MGRlY2M3NDJmZCJ9LCAibmFtZSI6InNib20tcXVhbGl0eSIsICJ1cmkiOiJjaGFpbmxvb3A6Ly9jaGFpbmxvb3AtcGxhdGZvcm0tYmFja2VuZC5wbGF0Zm9ybS1wcm9kLnN2Yy5jbHVzdGVyLmxvY2FsL3Nib20tcXVhbGl0eSJ9LCAibWF0ZXJpYWxOYW1lIjoiY29udHJvbC1wbGFuZS1zYm9tLXYxLTYwLTAiLCAibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJwb2xpY3lSZWZlcmVuY2UiOnsiYW5ub3RhdGlvbnMiOnsibmFtZSI6InNib20td2l0aC1saWNlbnNlcyIsICJvcmdhbml6YXRpb24iOiIifSwgImRpZ2VzdCI6eyJzaGEyNTYiOiJkM2QyNWIxNjRmOWEwOWNkYjRiYjdhMGQ3YjMyZTNiNWQyNWQ2NTk2MDAyNzliYTMyNzU1YzQ3NDNkODVhZmFiIn0sICJuYW1lIjoic2JvbS13aXRoLWxpY2Vuc2VzIiwgInVyaSI6ImNoYWlubG9vcDovL2NoYWlubG9vcC1wbGF0Zm9ybS1iYWNrZW5kLnBsYXRmb3JtLXByb2Quc3ZjLmNsdXN0ZXIubG9jYWwvc2JvbS13aXRoLWxpY2Vuc2VzIn0sICJza2lwcGVkIjpmYWxzZSwgInR5cGUiOiJTQk9NX0NZQ0xPTkVEWF9KU09OIiwgIndpdGgiOnsic2tpcHBlZF90eXBlcyI6ImZpbGUsIGNvbnRhaW5lciJ9fV0sICJjb250cm9sLXBsYW5lLXYxLTYwLTAiOlt7ImFubm90YXRpb25zIjp7ImNhdGVnb3J5Ijoic2VjdXJpdHksIHNpZ25pbmcifSwgImRlc2NyaXB0aW9uIjoiQ2hlY2tzIHRoYXQgdGhlIHByb3ZpZGVkIHBpZWNlIG9mIGV2aWRlbmNlIGhhcyBhIHNpZ25hdHVyZVxuIiwgIm1hdGVyaWFsTmFtZSI6ImNvbnRyb2wtcGxhbmUtdjEtNjAtMCIsICJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgInBvbGljeVJlZmVyZW5jZSI6eyJhbm5vdGF0aW9ucyI6eyJuYW1lIjoiYXJ0aWZhY3Qtc2lnbmVkIiwgIm9yZ2FuaXphdGlvbiI6IiJ9LCAiZGlnZXN0Ijp7InNoYTI1NiI6IjZkNTMxODFmZGUzODBjN2U0ZGI3ZmExNTM2MjJlYjY1ZjEzMzA5MzZmY2Y2NjQ4NThkMjI3ZWEwMTNiNTQ0YzkifSwgIm5hbWUiOiJhcnRpZmFjdC1zaWduZWQiLCAidXJpIjoiY2hhaW5sb29wOi8vY2hhaW5sb29wLXBsYXRmb3JtLWJhY2tlbmQucGxhdGZvcm0tcHJvZC5zdmMuY2x1c3Rlci5sb2NhbC9hcnRpZmFjdC1zaWduZWQifSwgInJlcXVpcmVtZW50cyI6WyJjaGFpbmxvb3AtYmVzdC1wcmFjdGljZXMvY29udGFpbmVyLXNpZ25lZCJdLCAic2tpcHBlZCI6ZmFsc2UsICJ0eXBlIjoiQ09OVEFJTkVSX0lNQUdFIn1dfSwgInBvbGljeUhhc1Zpb2xhdGlvbnMiOnRydWUsICJydW5uZXJBdXRoZW50aWNhdGVkIjp0cnVlLCAicnVubmVyRW52aXJvbm1lbnQiOiJtYW5hZ2VkIiwgInJ1bm5lclR5cGUiOiJHSVRIVUJfQUNUSU9OIiwgInJ1bm5lclVSTCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFpbmxvb3AtZGV2L2NoYWlubG9vcC9hY3Rpb25zL3J1bnMvMTk1NDcyNTc2MzciLCAicnVubmVyV29ya2Zsb3dGaWxlUGF0aCI6ImNoYWlubG9vcC1kZXYvY2hhaW5sb29wLy5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2UueWFtbEByZWZzL3RhZ3MvdjEuNjAuMCIsICJzaWduaW5nQ0EiOiJmaWxlQ0EiLCAic2lnbmluZ1RTQSI6Imh0dHA6Ly90aW1lc3RhbXAuZGlnaWNlcnQuY29tIn19", "payloadType":"application/vnd.in-toto+json", "signatures":[{"sig":"MEUCIQCeb5+gI01JWW+KmECMt7XQjEEkDavNCKo6AdGxiZQ5HAIgUsVjiiFOtpgitMBuI/LlBWxXSInc9gj7aaVgNuMaUm8="}]}} \ No newline at end of file diff --git a/policies/js/examples/attestation/esbuild.js b/policies/js/examples/attestation/esbuild.js new file mode 100644 index 000000000..78f632647 --- /dev/null +++ b/policies/js/examples/attestation/esbuild.js @@ -0,0 +1,28 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node', + external: [] +}).catch(() => process.exit(1)); diff --git a/policies/js/examples/attestation/package-lock.json b/policies/js/examples/attestation/package-lock.json new file mode 100644 index 000000000..b55a62bbb --- /dev/null +++ b/policies/js/examples/attestation/package-lock.json @@ -0,0 +1,445 @@ +{ + "name": "attestation-js-policy-example", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "attestation-js-policy-example", + "version": "1.0.0", + "devDependencies": { + "esbuild": "^0.19.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + } + } +} diff --git a/policies/js/examples/attestation/package.json b/policies/js/examples/attestation/package.json new file mode 100644 index 000000000..37f465ae5 --- /dev/null +++ b/policies/js/examples/attestation/package.json @@ -0,0 +1,11 @@ +{ + "name": "attestation-js-policy-example", + "version": "1.0.0", + "description": "In-toto attestation validation policy example", + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} diff --git a/policies/js/examples/attestation/policy.d.ts b/policies/js/examples/attestation/policy.d.ts new file mode 100644 index 000000000..4fc057ee4 --- /dev/null +++ b/policies/js/examples/attestation/policy.d.ts @@ -0,0 +1,3 @@ +declare module "main" { + export function Execute(): I32; +} diff --git a/policies/js/examples/attestation/policy.js b/policies/js/examples/attestation/policy.js new file mode 100644 index 000000000..4346dfebe --- /dev/null +++ b/policies/js/examples/attestation/policy.js @@ -0,0 +1,131 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Attestation policy that validates in-toto attestations for git commits. +// +// This example demonstrates: +// - Using run() wrapper for clean API +// - Parsing in-toto attestation materials +// - Complex validation logic with nested structs +// - Logging validation details +// +// Build: +// npm run build +// +// Test: +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material attestation.json \ +// --kind ATTESTATION + +const { + getMaterialJSON, + skip, + success, + outputResult, + logInfo, + logError, + logDebug, + run +} = require('../../index.js'); + +function Execute() { + return run(() => { + // Parse material + const attestation = getMaterialJSON(); + + logInfo(`Validating in-toto attestation with ${attestation.subject?.length || 0} subjects`); + + // Skip if not in-toto attestation + if (attestation._type !== "https://in-toto.io/Statement/v0.1" && + attestation._type !== "https://in-toto.io/Statement/v1") { + outputResult(skip("not an in-toto attestation")); + return; + } + + // Validate + const result = validateAttestation(attestation); + + if (result.hasViolations()) { + logError(`Attestation validation failed with ${result.violations.length} violations`); + } else { + logInfo(`Attestation validation passed`); + } + + // Output result + outputResult(result); + }); +} + +// validateAttestation checks the attestation for compliance. +function validateAttestation(attestation) { + const result = success(); + + // Check subjects exist + if (!attestation.subject || attestation.subject.length === 0) { + result.addViolation("attestation must contain at least one subject"); + return result; + } + + // Check for git commit subject + let hasGitCommit = false; + for (const subject of attestation.subject) { + if (subject.name === "git.head") { + hasGitCommit = true; + logDebug("Found git.head subject"); + + // Check if git commit has SHA1 digest + if (!subject.digest || !subject.digest.sha1) { + result.addViolation("git.head subject missing sha1 digest"); + } else { + const sha1 = subject.digest.sha1; + if (sha1 === "") { + result.addViolation("git.head subject has empty sha1 digest"); + } else if (sha1.length !== 40) { + result.addViolation(`git.head sha1 digest has invalid length: ${sha1.length} (expected 40)`); + } else if (!isValidHex(sha1)) { + result.addViolation("git.head sha1 digest contains invalid characters"); + } else { + logDebug(`Valid git commit SHA1: ${sha1}`); + } + } + } + } + + if (!hasGitCommit) { + result.addViolation("attestation must reference a git commit (git.head)"); + } + + // Check predicate type is not empty + if (!attestation.predicateType || attestation.predicateType === "") { + result.addViolation("attestation must have a predicateType"); + } + + return result; +} + +// isValidHex checks if a string contains only hexadecimal characters. +function isValidHex(s) { + const lowerS = s.toLowerCase(); + for (let i = 0; i < lowerS.length; i++) { + const c = lowerS[i]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'))) { + return false; + } + } + return true; +} + +module.exports = { Execute }; diff --git a/policies/js/examples/attestation/policy.wasm b/policies/js/examples/attestation/policy.wasm new file mode 100644 index 000000000..cfabaa9ee Binary files /dev/null and b/policies/js/examples/attestation/policy.wasm differ diff --git a/policies/js/examples/attestation/policy.yaml b/policies/js/examples/attestation/policy.yaml new file mode 100644 index 000000000..ebe44a408 --- /dev/null +++ b/policies/js/examples/attestation/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: git-commit-signature + description: Verifies that attestations reference a signed git commit +spec: + policies: + - kind: ATTESTATION + path: policy.wasm diff --git a/policies/js/examples/discover/README.md b/policies/js/examples/discover/README.md new file mode 100644 index 000000000..d2d01a9ab --- /dev/null +++ b/policies/js/examples/discover/README.md @@ -0,0 +1,164 @@ +# Discover JavaScript Policy Example + +A policy that checks for policy violations in related attestations using the Chainloop discover builtin function. + +## What This Policy Does + +Validates that container images do not have related attestations with policy violations: +1. Extracts the digest from container image metadata (`chainloop_metadata.digest.sha256`) +2. Uses the `discover()` function to explore the artifact graph +3. Checks all related attestations for policy violations +4. Reports violations with detailed metadata (name, project, organization) + +This matches the logic of the reference Rego policy for the discover builtin. + +## Building + +Install dependencies: + +```bash +npm install +``` + +Build the policy: + +```bash +npm run build +``` + +This will: +1. Use esbuild to bundle the policy with the Chainloop SDK +2. Use extism-js to compile the bundle to WASM + +The build process creates: +- `dist/policy.js` - Bundled JavaScript (includes SDK) +- `policy.wasm` - Compiled WASM binary + +## Testing + +### Test with container image: + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material docker://nginx:latest \ + --kind CONTAINER_IMAGE +``` + +Expected: **PASS** if no related attestations have policy violations, **FAIL** otherwise + +### Test with local image: + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material docker://myorg/myapp:v1.0.0 \ + --kind CONTAINER_IMAGE +``` + +### Test with debug logging: + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material docker://nginx:latest \ + --kind CONTAINER_IMAGE \ + --debug +``` + +Output will include: +``` +INF Discovering artifacts related to: sha256:abc123... +INF Found 3 references for artifact sha256:abc123... +INF Checking attestation: sha256:def456... +INF Validation passed: no related attestations have policy violations +``` + +## Prerequisites + +- The policy engine must have a gRPC connection configured +- The digest must correspond to an artifact in your Chainloop organization +- You must have access permissions to view the artifact and its references + +## Key Concepts Demonstrated + +1. **Container image metadata**: Extracting digest from `chainloop_metadata.digest.sha256` +2. **Discover function**: `discover(digest, kind)` to explore artifact graph +3. **Result processing**: Handling discover results with references array +4. **Metadata access**: Reading attestation metadata (hasPolicyViolations, name, project, organization) +5. **Conditional logic**: Building violations only for attestations with violations +6. **Error handling**: Gracefully handling missing gRPC connections + +## Files + +- `policy.js` - Main policy implementation with discover +- `policy.d.ts` - TypeScript type definitions for WASM exports +- `policy.yaml` - Policy configuration +- `esbuild.js` - Build configuration +- `package.json` - NPM dependencies and scripts +- `README.md` - This file + +## How Discover Works + +The discover function queries Chainloop's backend to find artifacts related to the input digest: + +```javascript +// Discover all references +const result = discover(digest, ""); + +// Or filter by kind +const result = discover(digest, "ATTESTATION"); +``` + +The result contains: +- `digest`: The queried artifact digest +- `kind`: The material type of the artifact +- `references`: Array of related artifacts with their metadata + +Each reference includes: +- `digest`: The referenced artifact digest +- `kind`: The material type +- `metadata`: Key-value pairs with additional information + +Common metadata keys: +- `hasPolicyViolations`: "true" if the attestation has policy violations +- Additional fields depending on artifact type + +## SDK Functions Used + +- `getMaterialJSON()` - Parse JSON material +- `discover()` - Query artifact graph +- `success()` - Create success result +- `skip()` - Create skip result +- `outputResult()` - Output result +- `logInfo()` - Log information +- `logWarn()` - Log warnings +- `logError()` - Log errors +- `run()` - Execution wrapper with error handling + +## Integration with Chainloop + +Add to workflow contract to validate container images: + +```yaml +apiVersion: chainloop.dev/v1 +kind: Contract +metadata: + name: secure-build +spec: + materials: + - type: CONTAINER_IMAGE + name: app-image + + policies: + materials: + - ref: ./discover/policy.yaml + selector: + name: app-image +``` + +This policy will check that the container image doesn't have related attestations with policy violations. + +## License + +Apache License 2.0 diff --git a/policies/js/examples/discover/esbuild.js b/policies/js/examples/discover/esbuild.js new file mode 100644 index 000000000..bfb595c2d --- /dev/null +++ b/policies/js/examples/discover/esbuild.js @@ -0,0 +1,27 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node' +}).catch(() => process.exit(1)); diff --git a/policies/js/examples/discover/package-lock.json b/policies/js/examples/discover/package-lock.json new file mode 100644 index 000000000..b1555364e --- /dev/null +++ b/policies/js/examples/discover/package-lock.json @@ -0,0 +1,445 @@ +{ + "name": "discover-js-policy-example", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "discover-js-policy-example", + "version": "1.0.0", + "devDependencies": { + "esbuild": "^0.19.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + } + } +} diff --git a/policies/js/examples/discover/package.json b/policies/js/examples/discover/package.json new file mode 100644 index 000000000..d66102b8a --- /dev/null +++ b/policies/js/examples/discover/package.json @@ -0,0 +1,12 @@ +{ + "name": "discover-js-policy-example", + "version": "1.0.0", + "description": "Discover JavaScript policy example using Chainloop SDK", + "private": true, + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} diff --git a/policies/js/examples/discover/policy.d.ts b/policies/js/examples/discover/policy.d.ts new file mode 100644 index 000000000..b70026807 --- /dev/null +++ b/policies/js/examples/discover/policy.d.ts @@ -0,0 +1,44 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * WebAssembly module interface for the discover policy example. + * This file is required by extism-js compiler to generate proper WASM exports. + */ + +/** + * Host functions provided by Chainloop runtime. + * These functions are implemented in the host (Chainloop engine) and callable from WASM. + */ +declare module "extism:host" { +// declare module "env" { + interface user { + /** + * Discover builtin function for exploring the artifact graph. + * @param digestOffset - Memory offset of the digest string + * @param kindOffset - Memory offset of the kind string (optional, can be 0) + * @returns Memory offset of the JSON result, or 0 on error + */ + chainloop_discover(digestOffset: I64, kindOffset: I64): I64; + } +} + +declare module "main" { + /** + * Main policy execution function exported to WASM. + * @returns Exit code (0 for success, 1 for error) + */ + export function Execute(): I32; +} diff --git a/policies/js/examples/discover/policy.js b/policies/js/examples/discover/policy.js new file mode 100644 index 000000000..fb898ebf5 --- /dev/null +++ b/policies/js/examples/discover/policy.js @@ -0,0 +1,134 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Discover policy example that checks for policy violations in related attestations. + * + * This policy validates that container images do not have any related attestations + * with policy violations. It uses the discover builtin from the Chainloop JS SDK + * to explore the artifact graph and check attestation metadata. + * + * This example demonstrates: + * - Extracting digest from container image metadata + * - Using the SDK's discover() function to explore artifact relationships + * - Checking for policy violations in related attestations + * - Processing attestation metadata (name, project, organization) + * + * Build: + * npm install + * npm run build + * + * Test with container image: + * chainloop policy develop eval \ + * --policy policy.yaml \ + * --material docker://nginx:latest \ + * --kind CONTAINER_IMAGE + */ + +// Import directly from specific modules +const { getMaterialJSON } = require('../../src/material.js'); +const { success, skip } = require('../../src/result.js'); +const { outputResult } = require('../../src/output.js'); +const { logInfo, logWarn, logError } = require('../../src/logging.js'); +const { run } = require('../../src/execute.js'); +const { discover } = require('../../src/discover.js'); + +/** + * Main policy execution function. + * This is the entry point called by the Chainloop engine. + */ +function Execute() { + return run(() => { + // Parse container image material to get the digest + const input = getMaterialJSON(); + + if (!input || !input.chainloop_metadata || !input.chainloop_metadata.digest || !input.chainloop_metadata.digest.sha256) { + outputResult(skip("no digest found in chainloop_metadata")); + return; + } + + // Construct full digest with sha256 prefix + const digest = `sha256:${input.chainloop_metadata.digest.sha256}`; + logInfo(`Discovering artifacts related to: ${digest}`); + + // Call the discover function to explore the artifact graph + let discoverResult; + try { + discoverResult = discover(digest, ""); + } catch (err) { + logError(`Discovery failed: ${err.message}`); + outputResult(skip(err.message)); + return; + } + + if (!discoverResult) { + logWarn("No discover result returned (gRPC connection may not be configured)"); + outputResult(skip("discover not available")); + return; + } + + // Check for policy violations in related attestations + const result = checkAttestationViolations(discoverResult); + + // Output result + outputResult(result); + }); +} + +/** + * Checks if any related attestations have policy violations. + * + * @param {Object} discoverResult - The result from the discover function + * @returns {Object} The validation result + */ +function checkAttestationViolations(discoverResult) { + const result = success(); + const references = discoverResult.references || []; + + logInfo(`Found ${references.length} references for artifact ${discoverResult.digest}`); + + // Check each reference for attestations with policy violations + for (const ref of references) { + // Only check attestations + if (ref.kind !== "ATTESTATION") { + continue; + } + + logInfo(`Checking attestation: ${ref.digest}`); + + // Check if this attestation has policy violations + if (ref.metadata && ref.metadata.hasPolicyViolations === "true") { + // Extract metadata for detailed violation message + const name = ref.metadata.name || ""; + const project = ref.metadata.project || ""; + const organization = ref.metadata.organization || ""; + + const msg = `attestation with digest ${ref.digest} contains policy violations [name: ${name}, project: ${project}, org: ${organization}]`; + result.addViolation(msg); + logError(msg); + } + } + + // Log summary + if (result.hasViolations()) { + logError("Validation failed: found attestations with policy violations"); + } else { + logInfo("Validation passed: no related attestations have policy violations"); + } + + return result; +} + +module.exports = { Execute }; diff --git a/policies/js/examples/discover/policy.wasm b/policies/js/examples/discover/policy.wasm new file mode 100644 index 000000000..7c469a459 Binary files /dev/null and b/policies/js/examples/discover/policy.wasm differ diff --git a/policies/js/examples/discover/policy.yaml b/policies/js/examples/discover/policy.yaml new file mode 100644 index 000000000..08d33a285 --- /dev/null +++ b/policies/js/examples/discover/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: policy-builtins + description: Policy that checks for policy violations in related attestations +spec: + policies: + - kind: CONTAINER_IMAGE + path: policy.wasm diff --git a/policies/js/examples/http/data.json b/policies/js/examples/http/data.json new file mode 100644 index 000000000..1f564c0f6 --- /dev/null +++ b/policies/js/examples/http/data.json @@ -0,0 +1,3 @@ +{ + "check_url": "https://httpbin.org/json" +} diff --git a/policies/js/examples/http/esbuild.js b/policies/js/examples/http/esbuild.js new file mode 100644 index 000000000..78f632647 --- /dev/null +++ b/policies/js/examples/http/esbuild.js @@ -0,0 +1,28 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node', + external: [] +}).catch(() => process.exit(1)); diff --git a/policies/js/examples/http/package-lock.json b/policies/js/examples/http/package-lock.json new file mode 100644 index 000000000..84d082173 --- /dev/null +++ b/policies/js/examples/http/package-lock.json @@ -0,0 +1,445 @@ +{ + "name": "http-js-policy-example", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "http-js-policy-example", + "version": "1.0.0", + "devDependencies": { + "esbuild": "^0.19.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + } + } +} diff --git a/policies/js/examples/http/package.json b/policies/js/examples/http/package.json new file mode 100644 index 000000000..5bfe2acf4 --- /dev/null +++ b/policies/js/examples/http/package.json @@ -0,0 +1,11 @@ +{ + "name": "http-js-policy-example", + "version": "1.0.0", + "description": "HTTP request policy example with hostname restrictions", + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} diff --git a/policies/js/examples/http/policy.d.ts b/policies/js/examples/http/policy.d.ts new file mode 100644 index 000000000..4fc057ee4 --- /dev/null +++ b/policies/js/examples/http/policy.d.ts @@ -0,0 +1,3 @@ +declare module "main" { + export function Execute(): I32; +} diff --git a/policies/js/examples/http/policy.js b/policies/js/examples/http/policy.js new file mode 100644 index 000000000..7e0445bd5 --- /dev/null +++ b/policies/js/examples/http/policy.js @@ -0,0 +1,92 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// HTTP example demonstrating how policies can make external API calls +// with hostname restrictions enforced by the policy engine. +// +// This example shows: +// - httpGet() to fetch data from allowed hostnames +// - httpGetJSON() to parse JSON responses +// - Hostname blocking for security +// +// Build: +// npm run build +// +// Test with allowed hostname: +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material data.json \ +// --kind EVIDENCE \ +// --allowed-hostnames httpbin.org +// +// Test with blocked hostname (will fail): +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material data.json \ +// --kind EVIDENCE \ +// --allowed-hostnames www.example.com + +const { + getMaterialJSON, + httpGetJSON, + skip, + success, + fail, + outputResult, + logInfo, + logError, + run +} = require('../../index.js'); + +function Execute() { + return run(() => { + // Parse material + const input = getMaterialJSON(); + + if (!input.check_url) { + outputResult(skip("Material missing 'check_url' field")); + return; + } + + logInfo(`Making HTTP request to: ${input.check_url}`); + + // Attempt HTTP request (will be blocked if hostname not allowed) + let apiResp; + try { + apiResp = httpGetJSON(input.check_url); + } catch (err) { + // This will fail if hostname is not in allowed list + logError(`HTTP request failed: ${err.message}`); + outputResult(fail(`failed to fetch data: ${err.message}`)); + return; + } + + logInfo(`HTTP request succeeded`); + + // Validate based on API response + const result = success(); + + // httpbin.org/json returns a slideshow object + if (apiResp.slideshow) { + logInfo(`Received slideshow data: ${apiResp.slideshow.title || 'untitled'}`); + } else { + result.addViolation("API response missing expected 'slideshow' field"); + } + + outputResult(result); + }); +} + +module.exports = { Execute }; diff --git a/policies/js/examples/http/policy.wasm b/policies/js/examples/http/policy.wasm new file mode 100644 index 000000000..a2a4d7351 Binary files /dev/null and b/policies/js/examples/http/policy.wasm differ diff --git a/policies/js/examples/http/policy.yaml b/policies/js/examples/http/policy.yaml new file mode 100644 index 000000000..e8eecd68e --- /dev/null +++ b/policies/js/examples/http/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: http-example + description: Example policy demonstrating HTTP requests with hostname restrictions +spec: + policies: + - kind: EVIDENCE + path: policy.wasm diff --git a/policies/js/examples/sbom/esbuild.js b/policies/js/examples/sbom/esbuild.js new file mode 100644 index 000000000..78f632647 --- /dev/null +++ b/policies/js/examples/sbom/esbuild.js @@ -0,0 +1,28 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node', + external: [] +}).catch(() => process.exit(1)); diff --git a/policies/js/examples/sbom/package-lock.json b/policies/js/examples/sbom/package-lock.json new file mode 100644 index 000000000..1706f131b --- /dev/null +++ b/policies/js/examples/sbom/package-lock.json @@ -0,0 +1,445 @@ +{ + "name": "sbom-js-policy-example", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sbom-js-policy-example", + "version": "1.0.0", + "devDependencies": { + "esbuild": "^0.19.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + } + } +} diff --git a/policies/js/examples/sbom/package.json b/policies/js/examples/sbom/package.json new file mode 100644 index 000000000..e5e7e7511 --- /dev/null +++ b/policies/js/examples/sbom/package.json @@ -0,0 +1,11 @@ +{ + "name": "sbom-js-policy-example", + "version": "1.0.0", + "description": "CycloneDX SBOM validation policy example", + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} diff --git a/policies/js/examples/sbom/policy.d.ts b/policies/js/examples/sbom/policy.d.ts new file mode 100644 index 000000000..4fc057ee4 --- /dev/null +++ b/policies/js/examples/sbom/policy.d.ts @@ -0,0 +1,3 @@ +declare module "main" { + export function Execute(): I32; +} diff --git a/policies/js/examples/sbom/policy.js b/policies/js/examples/sbom/policy.js new file mode 100644 index 000000000..f36b3e2d7 --- /dev/null +++ b/policies/js/examples/sbom/policy.js @@ -0,0 +1,95 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// SBOM policy example that validates CycloneDX BOMs. +// +// This example demonstrates: +// - Using run() wrapper for clean API +// - Parsing CycloneDX SBOM materials +// - Logging validation progress +// - Result building with violations +// +// Build: +// npm run build +// +// Test: +// chainloop policy develop eval \ +// --policy policy.yaml \ +// --material sbom.json \ +// --kind SBOM_CYCLONEDX_JSON + +const { + getMaterialJSON, + skip, + success, + outputResult, + logInfo, + logError, + logDebug, + run +} = require('../../index.js'); + +function Execute() { + return run(() => { + // Parse material + const sbom = getMaterialJSON(); + + logInfo(`Validating CycloneDX SBOM with ${sbom.components?.length || 0} components`); + + // Skip if not CycloneDX + if (sbom.bomFormat !== "CycloneDX") { + outputResult(skip("not a CycloneDX SBOM")); + return; + } + + // Validate + const result = validateSBOM(sbom); + + if (result.hasViolations()) { + logError(`SBOM validation failed with ${result.violations.length} violations`); + } else { + logInfo(`SBOM validation passed`); + } + + // Output result + outputResult(result); + }); +} + +// validateSBOM checks the SBOM for compliance. +function validateSBOM(sbom) { + const result = success(); + + // Check components exist + if (!sbom.components || sbom.components.length === 0) { + result.addViolation("SBOM must contain at least one component"); + return result; + } + + // Validate each component + for (let i = 0; i < sbom.components.length; i++) { + const comp = sbom.components[i]; + if (!comp.name || comp.name === "") { + result.addViolation(`component at index ${i} missing name`); + } + if (!comp.version || comp.version === "") { + result.addViolation(`component '${comp.name}' missing version`); + } + } + + return result; +} + +module.exports = { Execute }; diff --git a/policies/js/examples/sbom/policy.wasm b/policies/js/examples/sbom/policy.wasm new file mode 100644 index 000000000..3f26c6b15 Binary files /dev/null and b/policies/js/examples/sbom/policy.wasm differ diff --git a/policies/js/examples/sbom/policy.yaml b/policies/js/examples/sbom/policy.yaml new file mode 100644 index 000000000..95c72a7e0 --- /dev/null +++ b/policies/js/examples/sbom/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: sbom-validation + description: Validates CycloneDX SBOM structure and component completeness +spec: + policies: + - kind: SBOM_CYCLONEDX_JSON + path: policy.wasm diff --git a/policies/js/examples/sbom/sbom.json b/policies/js/examples/sbom/sbom.json new file mode 100644 index 000000000..38c8f3462 --- /dev/null +++ b/policies/js/examples/sbom/sbom.json @@ -0,0 +1 @@ +{"$schema":"http://cyclonedx.org/schema/bom-1.6.schema.json","bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:8b9701e9-13ef-41d0-8c4b-43931744639f","version":1,"metadata":{"timestamp":"2025-11-20T18:44:24Z","tools":{"components":[{"type":"application","author":"anchore","name":"syft","version":"1.38.0"}]},"component":{"bom-ref":"5cdd1fefd958c6fb","type":"container","name":"ghcr.io/chainloop-dev/chainloop/control-plane","version":"v1.60.0-arm64"}},"components":[{"bom-ref":"pkg:golang/ariga.io/atlas@v0.36.1?package-id=1b9a814ec1cc7228","type":"library","name":"ariga.io/atlas","version":"v0.36.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/ariga.io/atlas/@v/v0.36.1.zip#ariga.io/atlas@v0.36.1/LICENSE"}}],"purl":"pkg:golang/ariga.io/atlas@v0.36.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:w0BGAHPkzxpx0n9QWUVbtu7vUUihs7cDCTPsnnw9nck="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=edd00aa4e8dbad5f#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=576a923b75b0414a#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=0cf7cbf749d1cb4e#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=c6c3f160ac2104ef#bufbuild/protovalidate/protocolbuffers/go","type":"library","name":"buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go","version":"v1.33.0-20240401165935-b983156c5e99.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/@v/v1.33.0-20240401165935-b983156c5e99.1.zip#buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.33.0-20240401165935-b983156c5e99.1/LICENSE"}}],"cpe":"cpe:2.3:a:gen:go\\/bufbuild\\/protovalidate\\/protocolbuffers\\/go:v1.33.0-20240401165935-b983156c5e99.1:*:*:*:*:*:*:*","purl":"pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1#bufbuild/protovalidate/protocolbuffers/go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cel.dev/expr@v0.20.0?package-id=3991a4c476f16614","type":"library","name":"cel.dev/expr","version":"v0.20.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cel.dev/expr/@v/v0.20.0.zip#cel.dev/expr@v0.20.0/LICENSE"}}],"purl":"pkg:golang/cel.dev/expr@v0.20.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go@v0.120.0?package-id=8dfc7d3fa8a812b2","type":"library","name":"cloud.google.com/go","version":"v0.120.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/@v/v0.120.0.zip#cloud.google.com/go@v0.120.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/cloud.google.com/go/@v/v0.120.0.zip#cloud.google.com/go@v0.120.0/third_party/pkgsite/LICENSE"}}],"purl":"pkg:golang/cloud.google.com/go@v0.120.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wc6bgG9DHyKqF5/vQvX1CiZrtHnxJjBlKUyF9nP6meA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/auth@v0.16.1?package-id=de95518c0a391d5a","type":"library","name":"cloud.google.com/go/auth","version":"v0.16.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/auth/@v/v0.16.1.zip#cloud.google.com/go/auth@v0.16.1/LICENSE"}}],"cpe":"cpe:2.3:a:go:auth:v0.16.1:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/auth@v0.16.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/auth@v0.2.8?package-id=4c87e6e404b0d7a5#oauth2adapt","type":"library","name":"cloud.google.com/go/auth/oauth2adapt","version":"v0.2.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/auth/oauth2adapt/@v/v0.2.8.zip#cloud.google.com/go/auth/oauth2adapt@v0.2.8/LICENSE"}}],"cpe":"cpe:2.3:a:go:auth\\/oauth2adapt:v0.2.8:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/auth@v0.2.8#oauth2adapt","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/compute@v0.6.0?package-id=dfeda2f435435c8d#metadata","type":"library","name":"cloud.google.com/go/compute/metadata","version":"v0.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/compute/metadata/@v/v0.6.0.zip#cloud.google.com/go/compute/metadata@v0.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:compute\\/metadata:v0.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/compute@v0.6.0#metadata","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/iam@v1.5.0?package-id=e13018493ce7a2fc","type":"library","name":"cloud.google.com/go/iam","version":"v1.5.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/iam/@v/v1.5.0.zip#cloud.google.com/go/iam@v1.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:iam:v1.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/iam@v1.5.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QlLcVMhbLGOjRcGe6VTGGTyQib8dRLK2B/kYNV0+2xs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/monitoring@v1.24.0?package-id=2a4c84bd5a378b2b","type":"library","name":"cloud.google.com/go/monitoring","version":"v1.24.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/monitoring/@v/v1.24.0.zip#cloud.google.com/go/monitoring@v1.24.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:monitoring:v1.24.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/monitoring@v1.24.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:csSKiCJ+WVRgNkRzzz3BPoGjFhjPY23ZTcaenToJxMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/secretmanager@v1.14.5?package-id=c263d49fdc3ef135","type":"library","name":"cloud.google.com/go/secretmanager","version":"v1.14.5","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/secretmanager/@v/v1.14.5.zip#cloud.google.com/go/secretmanager@v1.14.5/LICENSE"}}],"cpe":"cpe:2.3:a:go:secretmanager:v1.14.5:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/secretmanager@v1.14.5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:W++V0EL9iL6T2+ec24Dm++bIti0tI6Gx6sCosDBters="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cloud.google.com/go/storage@v1.50.0?package-id=0634dfe0a1f7a05a","type":"library","name":"cloud.google.com/go/storage","version":"v1.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cloud.google.com/go/storage/@v/v1.50.0.zip#cloud.google.com/go/storage@v1.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:storage:v1.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/cloud.google.com/go/storage@v1.50.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3TbVkzTooBvnZsk7WaAQfOsNrdoM8QHusXA1cpk6QJs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4?package-id=1c01b35916422ac9","type":"library","name":"code.cloudfoundry.org/bytefmt","version":"v0.0.0-20230612151507-41ef4d1f67a4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/code.cloudfoundry.org/bytefmt/@v/v0.0.0-20230612151507-41ef4d1f67a4.zip#code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4/LICENSE"}},{"license":{"name":"sha256:7158ca3ed9d0fd5f0714f0aef14236ea299f7015e87f43c3d3ca0ef73dbd3957","url":"https://proxy.golang.org/code.cloudfoundry.org/bytefmt/@v/v0.0.0-20230612151507-41ef4d1f67a4.zip#code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4/NOTICE"}}],"purl":"pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9G5F8zgma5v0GdDvNz6iZwwJp3RS/z0SY/aHGfVwvTo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/cuelang.org/go@v0.9.2?package-id=29cc2b94fd47ac47","type":"library","name":"cuelang.org/go","version":"v0.9.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/NOTICE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/golangorgx/telemetry/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/cuelang.org/go/@v/v0.9.2.zip#cuelang.org/go@v0.9.2/internal/third_party/yaml/LICENSE.libyaml"}}],"purl":"pkg:golang/cuelang.org/go@v0.9.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:pfNiry2PdRBr02G/aKm5k2vhzmqbAOoaB4WurmEbWvs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/entgo.io/ent@v0.14.4?package-id=5714b0c40e1cbe7f","type":"library","name":"entgo.io/ent","version":"v0.14.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/entgo.io/ent/@v/v0.14.4.zip#entgo.io/ent@v0.14.4/LICENSE"}}],"purl":"pkg:golang/entgo.io/ent@v0.14.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/DhDraSLXIkBhyiVoJeSshr4ZYi7femzhj6/TckzZuI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/filippo.io/edwards25519@v1.1.0?package-id=f5a626a34354491b","type":"library","name":"filippo.io/edwards25519","version":"v1.1.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/filippo.io/edwards25519/@v/v1.1.0.zip#filippo.io/edwards25519@v1.1.0/LICENSE"}}],"purl":"pkg:golang/filippo.io/edwards25519@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.18.0?package-id=7769c345e6a41e06#sdk/azcore","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/azcore","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/azcore/@v/v1.18.0.zip#github.com/azure/azure-sdk-for-go/sdk/azcore@v1.18.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/azcore:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.18.0#sdk/azcore","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/azcore:v1.18.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.10.0?package-id=9f947e5321b6e309#sdk/azidentity","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/azidentity","version":"v1.10.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/azidentity/@v/v1.10.0.zip#github.com/azure/azure-sdk-for-go/sdk/azidentity@v1.10.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/azidentity:v1.10.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.10.0#sdk/azidentity","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/azidentity:v1.10.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j8BorDEigD8UFOSZQiSqAMOOleyQOOQPnUAwV+Ls1gA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.11.1?package-id=1a21d9c63d2fd37c#sdk/internal","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/internal","version":"v1.11.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/internal/@v/v1.11.1.zip#github.com/azure/azure-sdk-for-go/sdk/internal@v1.11.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/internal:v1.11.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.11.1#sdk/internal","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/internal:v1.11.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v0.12.0?package-id=8ec1a5515064cc0f#sdk/keyvault/azsecrets","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets","version":"v0.12.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/keyvault/azsecrets/@v/v0.12.0.zip#github.com/azure/azure-sdk-for-go/sdk/keyvault/azsecrets@v0.12.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/keyvault\\/azsecrets:v0.12.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v0.12.0#sdk/keyvault/azsecrets","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/keyvault\\/azsecrets:v0.12.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xnO4sFyG8UH2fElBkcqLTOZsAajvKfnSlgBBW8dXYjw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v0.7.1?package-id=8790a26c853352e6#sdk/keyvault/internal","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal","version":"v0.7.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/keyvault/internal/@v/v0.7.1.zip#github.com/azure/azure-sdk-for-go/sdk/keyvault/internal@v0.7.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/keyvault\\/internal:v0.7.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v0.7.1#sdk/keyvault/internal","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/keyvault\\/internal:v0.7.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azure/azure-sdk-for-go@v1.3.1?package-id=dfd4cdfbd839595e#sdk/storage/azblob","type":"library","name":"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob","version":"v1.3.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azure/azure-sdk-for-go/sdk/storage/azblob/@v/v1.3.1.zip#github.com/azure/azure-sdk-for-go/sdk/storage/azblob@v1.3.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:Azure:azure-sdk-for-go\\/sdk\\/storage\\/azblob:v1.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/Azure/azure-sdk-for-go@v1.3.1#sdk/storage/azblob","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:Azure:azure_sdk_for_go\\/sdk\\/storage\\/azblob:v1.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fXPMAmuh0gDuRDey0atC8cXBuKIlqCzCkL8sm1n9Ov0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/azuread/microsoft-authentication-library-for-go@v1.4.2?package-id=e7582017408a48f8","type":"library","name":"github.com/AzureAD/microsoft-authentication-library-for-go","version":"v1.4.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/azuread/microsoft-authentication-library-for-go/@v/v1.4.2.zip#github.com/azuread/microsoft-authentication-library-for-go@v1.4.2/LICENSE"}}],"cpe":"cpe:2.3:a:AzureAD:microsoft-authentication-library-for-go:v1.4.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.4.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:AzureAD:microsoft_authentication_library_for_go:v1.4.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v1.26.0?package-id=327d6284d3ae9a8c#detectors/gcp","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp","version":"v1.26.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/detectors/gcp/@v/v1.26.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/detectors/gcp@v1.26.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/detectors\\/gcp:v1.26.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v1.26.0#detectors/gcp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/detectors\\/gcp:v1.26.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=1a4431c12ff4b138#exporter/metric","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric","version":"v0.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/exporter/metric/@v/v0.50.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/exporter/metric@v0.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/exporter\\/metric:v0.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v0.50.0#exporter/metric","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/exporter\\/metric:v0.50.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5IT7xOdq17MtcdtL/vtl6mGfzhaq4m4vpollPRmlsBQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=662c5f3202aacc2e#internal/resourcemapping","type":"library","name":"github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping","version":"v0.50.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googlecloudplatform/opentelemetry-operations-go/internal/resourcemapping/@v/v0.50.0.zip#github.com/googlecloudplatform/opentelemetry-operations-go/internal/resourcemapping@v0.50.0/LICENSE"}}],"cpe":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry-operations-go\\/internal\\/resourcemapping:v0.50.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/GoogleCloudPlatform/opentelemetry-operations-go@v0.50.0#internal/resourcemapping","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:GoogleCloudPlatform:opentelemetry_operations_go\\/internal\\/resourcemapping:v0.50.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ig/FpDD2JofP/NExKQUbn7uOSZzJAQqogfqluZK4ed4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/agext/levenshtein@v1.2.3?package-id=54f200cba3f3ddd5","type":"library","name":"github.com/agext/levenshtein","version":"v1.2.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/agext/levenshtein/@v/v1.2.3.zip#github.com/agext/levenshtein@v1.2.3/LICENSE"}},{"license":{"name":"sha256:5f8cebc9aab3ce69ade921efb14caec472c34f22566e015df9512111dcacae06","url":"https://proxy.golang.org/github.com/agext/levenshtein/@v/v1.2.3.zip#github.com/agext/levenshtein@v1.2.3/NOTICE"}}],"cpe":"cpe:2.3:a:agext:levenshtein:v1.2.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/agext/levenshtein@v1.2.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/agnivade/levenshtein@v1.2.1?package-id=e7e9a5338c9a97b3","type":"library","name":"github.com/agnivade/levenshtein","version":"v1.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/agnivade/levenshtein/@v/v1.2.1.zip#github.com/agnivade/levenshtein@v1.2.1/License.txt"}}],"cpe":"cpe:2.3:a:agnivade:levenshtein:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/agnivade/levenshtein@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=e358fd7c8804e192#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9778da3f20bdc413#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9862b73e3588ea9c#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=7767baf99c2c72da#v4","type":"library","name":"github.com/antlr4-go/antlr/v4","version":"v4.13.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/antlr4-go/antlr/v4/@v/v4.13.0.zip#github.com/antlr4-go/antlr/v4@v4.13.0/LICENSE"}}],"cpe":"cpe:2.3:a:antlr4-go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/antlr4-go/antlr@v4.13.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4_go:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:antlr4:antlr\\/v4:v4.13.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0?package-id=3261f7b0bd4ec0ee#v15","type":"library","name":"github.com/apparentlymart/go-textseg/v15","version":"v15.0.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}},{"license":{"id":"Unicode-DFS-2016","url":"https://proxy.golang.org/github.com/apparentlymart/go-textseg/v15/@v/v15.0.0.zip#github.com/apparentlymart/go-textseg/v15@v15.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:apparentlymart:go-textseg\\/v15:v15.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0#v15","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:apparentlymart:go_textseg\\/v15:v15.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2?package-id=cf99884dade6c2fa","type":"library","name":"github.com/asaskevich/govalidator","version":"v0.0.0-20230301143203-a9d515a09cc2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/asaskevich/govalidator/@v/v0.0.0-20230301143203-a9d515a09cc2.zip#github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2/LICENSE"}}],"cpe":"cpe:2.3:a:asaskevich:govalidator:v0.0.0-20230301143203-a9d515a09cc2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4?package-id=7c8f583f475b279a","type":"library","name":"github.com/aws/aws-sdk-go-v2","version":"v1.39.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/LICENSE.txt"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/internal/sync/singleflight/LICENSE"}},{"license":{"name":"sha256:a6e830174d62dafad3a718384772ea1f4c0e27989f050932dc442a5e3ddad080","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/NOTICE.txt"}},{"license":{"name":"sha256:f19d6aac3a063b4ea43196472248ff68e277b7c2a9e0a193799134677d496cda","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/@v/v1.39.4.zip#github.com/aws/aws-sdk-go-v2@v1.39.4/.github/workflows/license-check.yml"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2:v1.39.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2:v1.39.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:qTsQKcdQPHnfGYBBs+Btl8QwxJeoWcOcPcixK90mRhg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2?package-id=88f41ccaf0fcf0d2#aws/protocol/eventstream","type":"library","name":"github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream","version":"v1.7.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream/@v/v1.7.2.zip#github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream@v1.7.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/aws\\/protocol\\/eventstream:v1.7.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2#aws/protocol/eventstream","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/aws\\/protocol\\/eventstream:v1.7.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:t9yYsydLYNBk9cJ73rgPhPWqOh/52fcWDQB5b1JsKSY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19?package-id=229a4160f6bd6fea#credentials","type":"library","name":"github.com/aws/aws-sdk-go-v2/credentials","version":"v1.18.19","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/credentials/@v/v1.18.19.zip#github.com/aws/aws-sdk-go-v2/credentials@v1.18.19/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/credentials:v1.18.19:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19#credentials","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/credentials:v1.18.19:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Jc1zzwkSY1QbkEcLujwqRTXOdvW8ppND3jRBb/VhBQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1?package-id=255c307a498c37fb#feature/s3/manager","type":"library","name":"github.com/aws/aws-sdk-go-v2/feature/s3/manager","version":"v1.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/feature/s3/manager/@v/v1.20.1.zip#github.com/aws/aws-sdk-go-v2/feature/s3/manager@v1.20.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/feature\\/s3\\/manager:v1.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1#feature/s3/manager","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/feature\\/s3\\/manager:v1.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EfS+tBgFwzrR/skkhKdyClU0pCx/VgSKSo8OIzMEiQM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=fd05241447fbad2a#internal/configsources","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/configsources","version":"v1.4.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/configsources/@v/v1.4.11.zip#github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/configsources:v1.4.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11#internal/configsources","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/configsources:v1.4.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:7AANQZkF3ihM8fbdftpjhken0TP9sBzFbV/Ze/Y4HXA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11?package-id=7fff74c6179c99c8#internal/endpoints/v2","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/endpoints/v2","version":"v2.7.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/@v/v2.7.11.zip#github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/endpoints\\/v2:v2.7.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11#internal/endpoints/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/endpoints\\/v2:v2.7.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ShdtWUZT37LCAA4Mw2kJAJtzaszfSHFb5n25sdcv4YE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=bf9073ca13d2633d#internal/v4a","type":"library","name":"github.com/aws/aws-sdk-go-v2/internal/v4a","version":"v1.4.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/internal/v4a/@v/v1.4.11.zip#github.com/aws/aws-sdk-go-v2/internal/v4a@v1.4.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/internal\\/v4a:v1.4.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11#internal/v4a","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/internal\\/v4a:v1.4.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bKgSxk1TW//00PGQqYmrq83c+2myGidEclp+t9pPqVI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2?package-id=b6bf3c75b9158e55#service/internal/accept-encoding","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding","version":"v1.13.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/@v/v1.13.2.zip#github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/accept-encoding:v1.13.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2#service/internal/accept-encoding","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/accept_encoding:v1.13.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2?package-id=471dd6301d957ee5#service/internal/checksum","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/checksum","version":"v1.9.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/checksum/@v/v1.9.2.zip#github.com/aws/aws-sdk-go-v2/service/internal/checksum@v1.9.2/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/checksum:v1.9.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2#service/internal/checksum","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/checksum:v1.9.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DGFpGybmutVsCuF6vSuLZ25Vh55E3VmsnJmFfjeBx4M="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11?package-id=0850673146fa4015#service/internal/presigned-url","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/presigned-url","version":"v1.13.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/@v/v1.13.11.zip#github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/presigned-url:v1.13.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11#service/internal/presigned-url","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/presigned_url:v1.13.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GpMf3z2KJa4RnJ0ew3Hac+hRFYLZ9DDjfgXjuW+pB54="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11?package-id=bcfc4a1504bc9d1e#service/internal/s3shared","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/internal/s3shared","version":"v1.19.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/internal/s3shared/@v/v1.19.11.zip#github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.19.11/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/internal\\/s3shared:v1.19.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11#service/internal/s3shared","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/internal\\/s3shared:v1.19.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:weapBOuuFIBEQ9OX/NVW3tFQCvSutyjZYk/ga5jDLPo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0?package-id=cb0a0f1ed8b5fcfb#service/s3","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/s3","version":"v1.89.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/s3/@v/v1.89.0.zip#github.com/aws/aws-sdk-go-v2/service/s3@v1.89.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/s3:v1.89.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0#service/s3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/s3:v1.89.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JbCUlVDEjmhpvpIgXP9QN+/jW61WWWj99cGmxMC49hM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6?package-id=944d656d4937b3d7#service/secretsmanager","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/secretsmanager","version":"v1.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/secretsmanager/@v/v1.28.6.zip#github.com/aws/aws-sdk-go-v2/service/secretsmanager@v1.28.6/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/secretsmanager:v1.28.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6#service/secretsmanager","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/secretsmanager:v1.28.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TIOEjw0i2yyhmhRry3Oeu9YtiiHWISZ6j/irS1W3gX4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8?package-id=ae03c469d9964d5f#service/sso","type":"library","name":"github.com/aws/aws-sdk-go-v2/service/sso","version":"v1.29.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/aws-sdk-go-v2/service/sso/@v/v1.29.8.zip#github.com/aws/aws-sdk-go-v2/service/sso@v1.29.8/LICENSE.txt"}}],"cpe":"cpe:2.3:a:aws:aws-sdk-go-v2\\/service\\/sso:v1.29.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8#service/sso","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:aws_sdk_go_v2\\/service\\/sso:v1.29.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:M5nimZmugcZUO9wG7iVtROxPhiqyZX6ejS1lxlDPbTU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/aws/smithy-go@v1.23.1?package-id=30f5c8f9378b1b0b","type":"library","name":"github.com/aws/smithy-go","version":"v1.23.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/internal/sync/singleflight/LICENSE"}},{"license":{"name":"sha256:d4290ed64c2edd0fce1d84e3f9dfb2881240fe534def76b8cd29ed6af683e287","url":"https://proxy.golang.org/github.com/aws/smithy-go/@v/v1.23.1.zip#github.com/aws/smithy-go@v1.23.1/NOTICE"}}],"cpe":"cpe:2.3:a:aws:smithy-go:v1.23.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/aws/smithy-go@v1.23.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:aws:smithy_go:v1.23.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=4a504023edc43053","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=0107fda3b9a62652","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=f111cd0ff25be54b","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=851d702929c90d6b","type":"library","name":"github.com/bahlo/generic-list-go","version":"v0.2.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/bahlo/generic-list-go/@v/v0.2.0.zip#github.com/bahlo/generic-list-go@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:bahlo:generic-list-go:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bahlo/generic-list-go@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bahlo:generic_list_go:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/beorn7/perks@v1.0.1?package-id=88b001c4d4d0b5f3","type":"library","name":"github.com/beorn7/perks","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/beorn7/perks/@v/v1.0.1.zip#github.com/beorn7/perks@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:beorn7:perks:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/beorn7/perks@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible?package-id=69b16326119c3de9","type":"library","name":"github.com/blang/semver","version":"v3.5.1+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/blang/semver/@v/v3.5.1+incompatible.zip#github.com/blang/semver@v3.5.1+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:blang:semver:v3.5.1\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bmatcuk/doublestar@v1.3.4?package-id=5bb1becc5084463d","type":"library","name":"github.com/bmatcuk/doublestar","version":"v1.3.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/bmatcuk/doublestar/@v/v1.3.4.zip#github.com/bmatcuk/doublestar@v1.3.4/LICENSE"}}],"cpe":"cpe:2.3:a:bmatcuk:doublestar:v1.3.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bmatcuk/doublestar@v1.3.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bmatcuk/doublestar@v4.8.1?package-id=bceca9a757c8b716#v4","type":"library","name":"github.com/bmatcuk/doublestar/v4","version":"v4.8.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/bmatcuk/doublestar/v4/@v/v4.8.1.zip#github.com/bmatcuk/doublestar/v4@v4.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:bmatcuk:doublestar\\/v4:v4.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bmatcuk/doublestar@v4.8.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:54Bopc5c2cAvhLRAzqOGCYHYyhcDHsFF4wWIR5wKP38="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=1548bdb64ee27afb","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7ce5bfe8a2d6da39","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7957d791a206fc3a","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=424dc008cddfac27","type":"library","name":"github.com/bufbuild/protovalidate-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protovalidate-go/@v/v0.6.1.zip#github.com/bufbuild/protovalidate-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protovalidate-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protovalidate_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uzW8r0CDvqApUChNj87VzZVoQSKhcVdw5UWOE605UIw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11?package-id=44532fe0070003be","type":"library","name":"github.com/bufbuild/protoyaml-go","version":"v0.1.11","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/bufbuild/protoyaml-go/@v/v0.1.11.zip#github.com/bufbuild/protoyaml-go@v0.1.11/LICENSE"}}],"cpe":"cpe:2.3:a:bufbuild:protoyaml-go:v0.1.11:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:bufbuild:protoyaml_go:v0.1.11:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Iyixd6Y5dx6ws6Uh8APgC1lMyvXt710NayoY8cY0Vj8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=8feb6a0a369f06b4","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=6579eb971ced0e83","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=3611af2062999f69","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=063662c0e5be2d12","type":"library","name":"github.com/buger/jsonparser","version":"v1.1.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/buger/jsonparser/@v/v1.1.1.zip#github.com/buger/jsonparser@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:buger:jsonparser:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/buger/jsonparser@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/casbin/casbin@v2.103.0?package-id=398770942b4a4b45#v2","type":"library","name":"github.com/casbin/casbin/v2","version":"v2.103.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/casbin/casbin/v2/@v/v2.103.0.zip#github.com/casbin/casbin/v2@v2.103.0/LICENSE"}}],"cpe":"cpe:2.3:a:casbin:casbin\\/v2:v2.103.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/casbin/casbin@v2.103.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dHElatNXNrr8XcseUov0ZSiWjauwmZZE6YMV3eU1yic="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/casbin/govaluate@v1.3.0?package-id=ae0d6aa8b0fbf5ad","type":"library","name":"github.com/casbin/govaluate","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/casbin/govaluate/@v/v1.3.0.zip#github.com/casbin/govaluate@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:casbin:govaluate:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/casbin/govaluate@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:VA0eSY0M2lA86dYd5kPPuNZMUD9QkWnOCnavGrw9myc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cenkalti/backoff@v4.3.0?package-id=db2757ee2d4c3bd9#v4","type":"library","name":"github.com/cenkalti/backoff/v4","version":"v4.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/cenkalti/backoff/v4/@v/v4.3.0.zip#github.com/cenkalti/backoff/v4@v4.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:cenkalti:backoff\\/v4:v4.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cenkalti/backoff@v4.3.0#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cespare/xxhash@v2.3.0?package-id=9aa1e7125da5e681#v2","type":"library","name":"github.com/cespare/xxhash/v2","version":"v2.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/cespare/xxhash/v2/@v/v2.3.0.zip#github.com/cespare/xxhash/v2@v2.3.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:cespare:xxhash\\/v2:v2.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cespare/xxhash@v2.3.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7c759c1569fbe75d","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=54b2042dbb967bfb","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7082a29b4f621514","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=07be1822274ac6c2","type":"library","name":"github.com/chainloop-dev/chainloop","version":"v1.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/LICENSE.md"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/chainloop-dev/chainloop/@v/v1.60.0.zip#github.com/chainloop-dev/chainloop@v1.60.0/deployment/chainloop/LICENSE.md"}}],"cpe":"cpe:2.3:a:chainloop-dev:chainloop:v1.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop_dev:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:chainloop:chainloop:v1.60.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42?package-id=fd055dca9cd4684e#go","type":"library","name":"github.com/cncf/xds/go","version":"v0.0.0-20250121191232-2f005788dc42","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cncf/xds/go/@v/v0.0.0-20250121191232-2f005788dc42.zip#github.com/cncf/xds/go@v0.0.0-20250121191232-2f005788dc42/LICENSE"}}],"cpe":"cpe:2.3:a:cncf:xds\\/go:v0.0.0-20250121191232-2f005788dc42:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42#go","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cockroachdb/apd@v3.2.1?package-id=a7e8dec354ec137e#v3","type":"library","name":"github.com/cockroachdb/apd/v3","version":"v3.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cockroachdb/apd/v3/@v/v3.2.1.zip#github.com/cockroachdb/apd/v3@v3.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:cockroachdb:apd\\/v3:v3.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cockroachdb/apd@v3.2.1#v3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3?package-id=ce2cc16c91eae9c8#estargz","type":"library","name":"github.com/containerd/stargz-snapshotter/estargz","version":"v0.16.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/containerd/stargz-snapshotter/estargz/@v/v0.16.3.zip#github.com/containerd/stargz-snapshotter/estargz@v0.16.3/LICENSE"}}],"cpe":"cpe:2.3:a:containerd:stargz-snapshotter\\/estargz:v0.16.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3#estargz","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:containerd:stargz_snapshotter\\/estargz:v0.16.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/coreos/go-oidc@v3.11.0?package-id=bdb5877deeea7ea4#v3","type":"library","name":"github.com/coreos/go-oidc/v3","version":"v3.11.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/coreos/go-oidc/v3/@v/v3.11.0.zip#github.com/coreos/go-oidc/v3@v3.11.0/LICENSE"}},{"license":{"name":"sha256:dccd26c6fd9c296daf44d0bc56bb4efc566edd4880381b3331c9a63e6e471338","url":"https://proxy.golang.org/github.com/coreos/go-oidc/v3/@v/v3.11.0.zip#github.com/coreos/go-oidc/v3@v3.11.0/NOTICE"}}],"cpe":"cpe:2.3:a:coreos:go-oidc\\/v3:v3.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/coreos/go-oidc@v3.11.0#v3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:coreos:go_oidc\\/v3:v3.11.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46?package-id=4395ed3109692990","type":"library","name":"github.com/cyberphone/json-canonicalization","version":"v0.0.0-20231011164504-785e29786b46","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/cyberphone/json-canonicalization/@v/v0.0.0-20231011164504-785e29786b46.zip#github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46/LICENSE"}},{"license":{"name":"sha256:b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2","url":"https://proxy.golang.org/github.com/cyberphone/json-canonicalization/@v/v0.0.0-20231011164504-785e29786b46.zip#github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46/python3/src/org/webpki/json/LICENSE"}}],"cpe":"cpe:2.3:a:cyberphone:json-canonicalization:v0.0.0-20231011164504-785e29786b46:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:cyberphone:json_canonicalization:v0.0.0-20231011164504-785e29786b46:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2Dx4IHfC1yHWI12AxQDJM1QbRCDfk6M+blLzlZCXdrc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f?package-id=929f518e1a2c29f7","type":"library","name":"github.com/desertbit/timer","version":"v0.0.0-20180107155436-c41aec40b27f","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/desertbit/timer/@v/v0.0.0-20180107155436-c41aec40b27f.zip#github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f/LICENSE"}}],"cpe":"cpe:2.3:a:desertbit:timer:v0.0.0-20180107155436-c41aec40b27f:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352?package-id=4c6df587dc437bee","type":"library","name":"github.com/digitorus/pkcs7","version":"v0.0.0-20230818184609-3a137a874352","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/digitorus/pkcs7/@v/v0.0.0-20230818184609-3a137a874352.zip#github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352/LICENSE"}}],"cpe":"cpe:2.3:a:digitorus:pkcs7:v0.0.0-20230818184609-3a137a874352:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7?package-id=af6c3e471dd91674","type":"library","name":"github.com/digitorus/timestamp","version":"v0.0.0-20231217203849-220c5c2851b7","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/digitorus/timestamp/@v/v0.0.0-20231217203849-220c5c2851b7.zip#github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7/LICENSE"}}],"cpe":"cpe:2.3:a:digitorus:timestamp:v0.0.0-20231217203849-220c5c2851b7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible?package-id=73b4b1a8f5e34f52","type":"library","name":"github.com/docker/cli","version":"v27.5.0+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/docker/cli/@v/v27.5.0+incompatible.zip#github.com/docker/cli@v27.5.0+incompatible/LICENSE"}},{"license":{"name":"sha256:a8c869fbda819afb8d80e0ac19bac52e766bc6c19cb38cf94f52d64c4be2aab6","url":"https://proxy.golang.org/github.com/docker/cli/@v/v27.5.0+incompatible.zip#github.com/docker/cli@v27.5.0+incompatible/NOTICE"}}],"cpe":"cpe:2.3:a:docker:cli:v27.5.0\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible?package-id=78d5b6f50e970040","type":"library","name":"github.com/docker/distribution","version":"v2.8.3+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/docker/distribution/@v/v2.8.3+incompatible.zip#github.com/docker/distribution@v2.8.3+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:docker:distribution:v2.8.3\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2?package-id=b028d0936bd37abe","type":"library","name":"github.com/docker/docker-credential-helpers","version":"v0.8.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/docker/docker-credential-helpers/@v/v0.8.2.zip#github.com/docker/docker-credential-helpers@v0.8.2/LICENSE"}}],"cpe":"cpe:2.3:a:docker:docker-credential-helpers:v0.8.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:docker:docker_credential_helpers:v0.8.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/dustin/go-humanize@v1.0.1?package-id=1c8aeec87e8e24de","type":"library","name":"github.com/dustin/go-humanize","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/dustin/go-humanize/@v/v1.0.1.zip#github.com/dustin/go-humanize@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:dustin:go-humanize:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/dustin/go-humanize@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:dustin:go_humanize:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4?package-id=371937f3b334bbeb#envoy","type":"library","name":"github.com/envoyproxy/go-control-plane/envoy","version":"v1.32.4","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/envoyproxy/go-control-plane/envoy/@v/v1.32.4.zip#github.com/envoyproxy/go-control-plane/envoy@v1.32.4/LICENSE"}}],"cpe":"cpe:2.3:a:envoyproxy:go-control-plane\\/envoy:v1.32.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4#envoy","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:envoyproxy:go_control_plane\\/envoy:v1.32.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1?package-id=a0559b8fcb70cb2f","type":"library","name":"github.com/envoyproxy/protoc-gen-validate","version":"v1.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/envoyproxy/protoc-gen-validate/@v/v1.2.1.zip#github.com/envoyproxy/protoc-gen-validate@v1.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:envoyproxy:protoc-gen-validate:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:envoyproxy:protoc_gen_validate:v1.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=d5e6198899daee7e","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=62beb9f5b781efb1","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=1e02106cb6ebeea4","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fatih/color@v1.18.0?package-id=cb051690d181c233","type":"library","name":"github.com/fatih/color","version":"v1.18.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/fatih/color/@v/v1.18.0.zip#github.com/fatih/color@v1.18.0/LICENSE.md"}}],"cpe":"cpe:2.3:a:fatih:color:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fatih/color@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/felixge/httpsnoop@v1.0.4?package-id=c901d5e81f25b249","type":"library","name":"github.com/felixge/httpsnoop","version":"v1.0.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/felixge/httpsnoop/@v/v1.0.4.zip#github.com/felixge/httpsnoop@v1.0.4/LICENSE.txt"}}],"cpe":"cpe:2.3:a:felixge:httpsnoop:v1.0.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/felixge/httpsnoop@v1.0.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?package-id=80e8c41308342846","type":"library","name":"github.com/fsnotify/fsnotify","version":"v1.9.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/fsnotify/fsnotify/@v/v1.9.0.zip#github.com/fsnotify/fsnotify@v1.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:fsnotify:fsnotify:v1.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=831fe61af73b9147","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=2de66667dfa130f9","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=d5943fbe3beaa11d","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=1ad16a54ed2f28c5","type":"library","name":"github.com/getsentry/sentry-go","version":"v0.23.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/getsentry/sentry-go/@v/v0.23.0.zip#github.com/getsentry/sentry-go@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:getsentry:sentry-go:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/getsentry/sentry-go@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:getsentry:sentry_go:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible?package-id=f93d251151171bc4","type":"library","name":"github.com/go-chi/chi","version":"v4.1.2+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-chi/chi/@v/v4.1.2+incompatible.zip#github.com/go-chi/chi@v4.1.2+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:go-chi:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_chi:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:chi:v4.1.2\\+incompatible:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-ini/ini@v1.67.0?package-id=32115deda06adada","type":"library","name":"github.com/go-ini/ini","version":"v1.67.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-ini/ini/@v/v1.67.0.zip#github.com/go-ini/ini@v1.67.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-ini:ini:v1.67.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-ini/ini@v1.67.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_ini:ini:v1.67.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:ini:v1.67.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-jose/go-jose@v4.0.5?package-id=36b333231e79d98a#v4","type":"library","name":"github.com/go-jose/go-jose/v4","version":"v4.0.5","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-jose/go-jose/v4/@v/v4.0.5.zip#github.com/go-jose/go-jose/v4@v4.0.5/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/go-jose/go-jose/v4/@v/v4.0.5.zip#github.com/go-jose/go-jose/v4@v4.0.5/json/LICENSE"}}],"cpe":"cpe:2.3:a:go-jose:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-jose/go-jose@v4.0.5#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go-jose:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_jose:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_jose:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:go-jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:go_jose\\/v4:v4.0.5:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=bd1d3e5ba0e9bfb1","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=a2bbea604cfa7200","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=fda7ea06592dbc40","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=ee59c03e7d282beb","type":"library","name":"github.com/go-kratos/aegis","version":"v0.2.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/aegis/@v/v0.2.0.zip#github.com/go-kratos/aegis@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:aegis:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/aegis@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:aegis:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=e5872d58195061ff#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=7f555049bfdb22ec#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=dd14cd1e530f3d81#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=bb81d2fa42aca450#contrib/log/zap/v2","type":"library","name":"github.com/go-kratos/kratos/contrib/log/zap/v2","version":"v2.0.0-20230823024326-a09f4d8ebba9","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/contrib/log/zap/v2/@v/v2.0.0-20230823024326-a09f4d8ebba9.zip#github.com/go-kratos/kratos/contrib/log/zap/v2@v2.0.0-20230823024326-a09f4d8ebba9/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9#contrib/log/zap/v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/contrib\\/log\\/zap\\/v2:v2.0.0-20230823024326-a09f4d8ebba9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:j7EHWoqShY20lGhhC1j6v6QkftAqLCBUCHGwDkHL8pU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3656a52531615238#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1f298e5178f0f0a2#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3eb3682621d00528#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1c4c20be5a74352a#v2","type":"library","name":"github.com/go-kratos/kratos/v2","version":"v2.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-kratos/kratos/v2/@v/v2.7.0.zip#github.com/go-kratos/kratos/v2@v2.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-kratos/kratos@v2.7.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_kratos:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:kratos\\/v2:v2.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9DaVgU9YoHPb/BxDVqeVlVCMduRhiSewG3xE+e9ZAZ8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-logr/logr@v1.4.3?package-id=90817d8d0fa3e94e","type":"library","name":"github.com/go-logr/logr","version":"v1.4.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-logr/logr/@v/v1.4.3.zip#github.com/go-logr/logr@v1.4.3/LICENSE"}}],"cpe":"cpe:2.3:a:go-logr:logr:v1.4.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-logr/logr@v1.4.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_logr:logr:v1.4.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:logr:v1.4.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-logr/stdr@v1.2.2?package-id=fb15d49009e571a5","type":"library","name":"github.com/go-logr/stdr","version":"v1.2.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-logr/stdr/@v/v1.2.2.zip#github.com/go-logr/stdr@v1.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:go-logr:stdr:v1.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-logr/stdr@v1.2.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_logr:stdr:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:stdr:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/analysis@v0.23.0?package-id=f9fdf5fc55590e97","type":"library","name":"github.com/go-openapi/analysis","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/analysis/@v/v0.23.0.zip#github.com/go-openapi/analysis@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:analysis:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/analysis@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:analysis:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:analysis:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/errors@v0.22.0?package-id=0f17926ab738cdf9","type":"library","name":"github.com/go-openapi/errors","version":"v0.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/errors/@v/v0.22.0.zip#github.com/go-openapi/errors@v0.22.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:errors:v0.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/errors@v0.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:errors:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:errors:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/inflect@v0.21.0?package-id=eb3a0d70b1b77c64","type":"library","name":"github.com/go-openapi/inflect","version":"v0.21.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-openapi/inflect/@v/v0.21.0.zip#github.com/go-openapi/inflect@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:inflect:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/inflect@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:inflect:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:inflect:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FoBjBTQEcbg2cJUWX6uwL9OyIW8eqc9k4KhN4lfbeYk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0?package-id=f06d5883d33095f4","type":"library","name":"github.com/go-openapi/jsonpointer","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/jsonpointer/@v/v0.21.0.zip#github.com/go-openapi/jsonpointer@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:jsonpointer:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:jsonpointer:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:jsonpointer:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/jsonreference@v0.21.0?package-id=6928ba45ffb2aa76","type":"library","name":"github.com/go-openapi/jsonreference","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/jsonreference/@v/v0.21.0.zip#github.com/go-openapi/jsonreference@v0.21.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:jsonreference:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/jsonreference@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:jsonreference:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:jsonreference:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/loads@v0.22.0?package-id=3c34dcb636bcd4ee","type":"library","name":"github.com/go-openapi/loads","version":"v0.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/loads/@v/v0.22.0.zip#github.com/go-openapi/loads@v0.22.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:loads:v0.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/loads@v0.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:loads:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:loads:v0.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/runtime@v0.28.0?package-id=dceb9829096d1353","type":"library","name":"github.com/go-openapi/runtime","version":"v0.28.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/runtime/@v/v0.28.0.zip#github.com/go-openapi/runtime@v0.28.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-openapi/runtime/@v/v0.28.0.zip#github.com/go-openapi/runtime@v0.28.0/middleware/denco/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:runtime:v0.28.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/runtime@v0.28.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:runtime:v0.28.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:runtime:v0.28.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/spec@v0.21.0?package-id=196f0afbd4e7ba64","type":"library","name":"github.com/go-openapi/spec","version":"v0.21.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/LICENSE"}},{"license":{"name":"sha256:11280d39f759c157026dd0fad8742d9478191f15dc981b38d2d9e6a602987bba","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/license_test.go"}},{"license":{"name":"sha256:9ba36f66fba6f2e3b7dce95d9413a738688abcfce8c3d38c581b276f9437d1c6","url":"https://proxy.golang.org/github.com/go-openapi/spec/@v/v0.21.0.zip#github.com/go-openapi/spec@v0.21.0/license.go"}}],"cpe":"cpe:2.3:a:go-openapi:spec:v0.21.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/spec@v0.21.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:spec:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:spec:v0.21.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/strfmt@v0.23.0?package-id=0aeebfa7ab4224ee","type":"library","name":"github.com/go-openapi/strfmt","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/strfmt/@v/v0.23.0.zip#github.com/go-openapi/strfmt@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:strfmt:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/strfmt@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:strfmt:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:strfmt:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/swag@v0.23.0?package-id=f1d8a9eb475739f4","type":"library","name":"github.com/go-openapi/swag","version":"v0.23.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/swag/@v/v0.23.0.zip#github.com/go-openapi/swag@v0.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:swag:v0.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/swag@v0.23.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:swag:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:swag:v0.23.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-openapi/validate@v0.24.0?package-id=ec70f68d0a6875d0","type":"library","name":"github.com/go-openapi/validate","version":"v0.24.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/go-openapi/validate/@v/v0.24.0.zip#github.com/go-openapi/validate@v0.24.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-openapi:validate:v0.24.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-openapi/validate@v0.24.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_openapi:validate:v0.24.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:validate:v0.24.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=09580f4007c841fc#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=3e411e71b19b728c#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=b1a427e5d3abba3b#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-playground/form@v4.2.1?package-id=1ef9a86c0dba97da#v4","type":"library","name":"github.com/go-playground/form/v4","version":"v4.2.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-playground/form/v4/@v/v4.2.1.zip#github.com/go-playground/form/v4@v4.2.1/LICENSE"}}],"cpe":"cpe:2.3:a:go-playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-playground/form@v4.2.1#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_playground:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:form\\/v4:v4.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HjdRDKO0fftVMU5epjPW2SOREcZ6/wLUzEobqUGJuPw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/go-viper/mapstructure@v2.4.0?package-id=e524e8add11aefe6#v2","type":"library","name":"github.com/go-viper/mapstructure/v2","version":"v2.4.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/go-viper/mapstructure/v2/@v/v2.4.0.zip#github.com/go-viper/mapstructure/v2@v2.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:go-viper:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/go-viper/mapstructure@v2.4.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:go_viper:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:go:mapstructure\\/v2:v2.4.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible?package-id=76ce5e210fee0918","type":"library","name":"github.com/goadesign/goa","version":"v2.2.5+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/goadesign/goa/@v/v2.2.5+incompatible.zip#github.com/goadesign/goa@v2.2.5+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:goadesign:goa:v2.2.5\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:SLgzk0V+QfFs7MVz9sbDHelbTDI9B/d4W7Hl5udTynY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gobwas/glob@v0.2.3?package-id=673637cb391153df","type":"library","name":"github.com/gobwas/glob","version":"v0.2.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/gobwas/glob/@v/v0.2.3.zip#github.com/gobwas/glob@v0.2.3/LICENSE"}}],"cpe":"cpe:2.3:a:gobwas:glob:v0.2.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gobwas/glob@v0.2.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang-jwt/jwt@v4.5.2?package-id=5ab2d6f620ff174b#v4","type":"library","name":"github.com/golang-jwt/jwt/v4","version":"v4.5.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/golang-jwt/jwt/v4/@v/v4.5.2.zip#github.com/golang-jwt/jwt/v4@v4.5.2/LICENSE"}}],"cpe":"cpe:2.3:a:golang-jwt:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang-jwt/jwt@v4.5.2#v4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang_jwt:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang:jwt\\/v4:v4.5.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang-jwt/jwt@v5.2.2?package-id=e8c96702be6e043a#v5","type":"library","name":"github.com/golang-jwt/jwt/v5","version":"v5.2.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/golang-jwt/jwt/v5/@v/v5.2.2.zip#github.com/golang-jwt/jwt/v5@v5.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:golang-jwt:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang-jwt/jwt@v5.2.2#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang_jwt:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:golang:jwt\\/v5:v5.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=a709ab10b7f70081","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=81ad5a7203a1d871","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=f5372c52b2fd34a5","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=1a32c40755e6569e","type":"library","name":"github.com/golang/protobuf","version":"v1.5.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/protobuf/@v/v1.5.4.zip#github.com/golang/protobuf@v1.5.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:protobuf:v1.5.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/protobuf@v1.5.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/golang/snappy@v0.0.4?package-id=dd5ef1bf3f5e04f9","type":"library","name":"github.com/golang/snappy","version":"v0.0.4","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/golang/snappy/@v/v0.0.4.zip#github.com/golang/snappy@v0.0.4/LICENSE"}}],"cpe":"cpe:2.3:a:golang:snappy:v0.0.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/golang/snappy@v0.0.4","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=c5b5cd84e974d96c","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=bd5968f2afcc0ac3","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=192004540d7108a8","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/cel-go@v0.20.1?package-id=a970d450c768e802","type":"library","name":"github.com/google/cel-go","version":"v0.20.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/cel-go/@v/v0.20.1.zip#github.com/google/cel-go@v0.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:google:cel-go:v0.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/cel-go@v0.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:cel_go:v0.20.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/certificate-transparency-go@v1.2.1?package-id=9e5ccce5924b4341","type":"library","name":"github.com/google/certificate-transparency-go","version":"v1.2.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/certificate-transparency-go/@v/v1.2.1.zip#github.com/google/certificate-transparency-go@v1.2.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/certificate-transparency-go/@v/v1.2.1.zip#github.com/google/certificate-transparency-go@v1.2.1/third_party/prometheus/LICENSE"}}],"cpe":"cpe:2.3:a:google:certificate-transparency-go:v1.2.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/certificate-transparency-go@v1.2.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:certificate_transparency_go:v1.2.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:4iW/NwzqOqYEEoCBEFP+jPbBXbLqMpq3CifMyOnDUME="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-cmp@v0.7.0?package-id=c78b751d993e9fbe","type":"library","name":"github.com/google/go-cmp","version":"v0.7.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/go-cmp/@v/v0.7.0.zip#github.com/google/go-cmp@v0.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-cmp:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-cmp@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_cmp:v0.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=f218f28c514368a2","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=7b7615f9c732e196","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=a54ae79f7278ff5b","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=5e213c869c2dbf74","type":"library","name":"github.com/google/go-containerregistry","version":"v0.20.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/go-containerregistry/@v/v0.20.3.zip#github.com/google/go-containerregistry@v0.20.3/LICENSE"}}],"cpe":"cpe:2.3:a:google:go-containerregistry:v0.20.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/go-containerregistry@v0.20.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:go_containerregistry:v0.20.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/s2a-go@v0.1.9?package-id=7a1389864cd6d13f","type":"library","name":"github.com/google/s2a-go","version":"v0.1.9","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/s2a-go/@v/v0.1.9.zip#github.com/google/s2a-go@v0.1.9/LICENSE.md"}}],"cpe":"cpe:2.3:a:google:s2a-go:v0.1.9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/s2a-go@v0.1.9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:google:s2a_go:v0.1.9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=eb4089a97fc4b824","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=c078af9202eb67fb","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=e69639bf52e19d1c","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/uuid@v1.6.0?package-id=ee10cf9fe598515a","type":"library","name":"github.com/google/uuid","version":"v1.6.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/google/uuid/@v/v1.6.0.zip#github.com/google/uuid@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:uuid:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/uuid@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/google/wire@v0.6.0?package-id=7c2a8843a50dda97","type":"library","name":"github.com/google/wire","version":"v0.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/google/wire/@v/v0.6.0.zip#github.com/google/wire@v0.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:google:wire:v0.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/google/wire@v0.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6?package-id=f3ffb85c873e294c","type":"library","name":"github.com/googleapis/enterprise-certificate-proxy","version":"v0.3.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/googleapis/enterprise-certificate-proxy/@v/v0.3.6.zip#github.com/googleapis/enterprise-certificate-proxy@v0.3.6/LICENSE"}}],"cpe":"cpe:2.3:a:googleapis:enterprise-certificate-proxy:v0.3.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:googleapis:enterprise_certificate_proxy:v0.3.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/googleapis/gax-go@v2.14.1?package-id=b45d298b550bdf23#v2","type":"library","name":"github.com/googleapis/gax-go/v2","version":"v2.14.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/googleapis/gax-go/v2/@v/v2.14.1.zip#github.com/googleapis/gax-go/v2@v2.14.1/LICENSE"}}],"cpe":"cpe:2.3:a:googleapis:gax-go\\/v2:v2.14.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/googleapis/gax-go@v2.14.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:googleapis:gax_go\\/v2:v2.14.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=8aa5a15ae995870a","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=89a381c67bb09fcd","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=754a4646b8d5bfb0","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=f7c3c61f9541e3cc","type":"library","name":"github.com/gorilla/mux","version":"v1.8.1","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/gorilla/mux/@v/v1.8.1.zip#github.com/gorilla/mux@v1.8.1/LICENSE"}}],"cpe":"cpe:2.3:a:gorilla:mux:v1.8.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/gorilla/mux@v1.8.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0?package-id=5ca59ab756b5d1df","type":"library","name":"github.com/grpc-ecosystem/go-grpc-middleware","version":"v1.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-middleware/@v/v1.4.0.zip#github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_middleware:v1.4.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0?package-id=146e3303564149c1#v2","type":"library","name":"github.com/grpc-ecosystem/go-grpc-middleware/v2","version":"v2.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-middleware/v2/@v/v2.1.0.zip#github.com/grpc-ecosystem/go-grpc-middleware/v2@v2.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_middleware\\/v2:v2.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99?package-id=303abf1a07dde40f","type":"library","name":"github.com/grpc-ecosystem/go-grpc-prometheus","version":"v1.2.1-0.20210315223345-82c243799c99","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/grpc-ecosystem/go-grpc-prometheus/@v/v1.2.1-0.20210315223345-82c243799c99.zip#github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99/LICENSE"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go-grpc-prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:go_grpc_prometheus:v1.2.1-0.20210315223345-82c243799c99:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=5d0b50ea309daf7d#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=d8362605b5f7bba7#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=a1eebd635a0ec603#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=ff52797c54226f91#v2","type":"library","name":"github.com/grpc-ecosystem/grpc-gateway/v2","version":"v2.26.3","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/grpc-ecosystem/grpc-gateway/v2/@v/v2.26.3.zip#github.com/grpc-ecosystem/grpc-gateway/v2@v2.26.3/internal/casing/LICENSE.md"}}],"cpe":"cpe:2.3:a:grpc-ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc-ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc_ecosystem:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc-gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:grpc:grpc_gateway\\/v2:v2.26.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/errwrap@v1.1.0?package-id=c8d193cf3d3d5208","type":"library","name":"github.com/hashicorp/errwrap","version":"v1.1.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/errwrap/@v/v1.1.0.zip#github.com/hashicorp/errwrap@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:errwrap:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/errwrap@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2?package-id=4403b5c086d6844d","type":"library","name":"github.com/hashicorp/go-cleanhttp","version":"v0.5.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-cleanhttp/@v/v0.5.2.zip#github.com/hashicorp/go-cleanhttp@v0.5.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-cleanhttp:v0.5.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_cleanhttp:v0.5.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=f0554539af1194c4","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=20deff1e7bad1eca","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=8e211380b05c4b06","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=e0d2948a5094766b","type":"library","name":"github.com/hashicorp/go-hclog","version":"v1.6.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/hashicorp/go-hclog/@v/v1.6.3.zip#github.com/hashicorp/go-hclog@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-hclog:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-hclog@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_hclog:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-multierror@v1.1.1?package-id=bb7e66578f669275","type":"library","name":"github.com/hashicorp/go-multierror","version":"v1.1.1","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-multierror/@v/v1.1.1.zip#github.com/hashicorp/go-multierror@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-multierror:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-multierror@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_multierror:v1.1.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=519b9b87f98927ad","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=95985da18f5e22b1","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=cafa939434ad6849","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=e48b4da1770afa58","type":"library","name":"github.com/hashicorp/go-plugin","version":"v1.6.3","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-plugin/@v/v1.6.3.zip#github.com/hashicorp/go-plugin@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-plugin:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-plugin@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_plugin:v1.6.3:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7?package-id=81674d20af43830a","type":"library","name":"github.com/hashicorp/go-retryablehttp","version":"v0.7.7","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-retryablehttp/@v/v0.7.7.zip#github.com/hashicorp/go-retryablehttp@v0.7.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:retryablehttp:v0.7.7:*:*:*:*:go:*:*","purl":"pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2?package-id=d87cb63fecb47921","type":"library","name":"github.com/hashicorp/go-rootcerts","version":"v1.0.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-rootcerts/@v/v1.0.2.zip#github.com/hashicorp/go-rootcerts@v1.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-rootcerts:v1.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_rootcerts:v1.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7?package-id=56ba1a1c5da75fa7#parseutil","type":"library","name":"github.com/hashicorp/go-secure-stdlib/parseutil","version":"v0.1.7","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-secure-stdlib/parseutil/@v/v0.1.7.zip#github.com/hashicorp/go-secure-stdlib/parseutil@v0.1.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-secure-stdlib\\/parseutil:v0.1.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7#parseutil","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_secure_stdlib\\/parseutil:v0.1.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2?package-id=d4a726e4fd1d30d5#strutil","type":"library","name":"github.com/hashicorp/go-secure-stdlib/strutil","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-secure-stdlib/strutil/@v/v0.1.2.zip#github.com/hashicorp/go-secure-stdlib/strutil@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-secure-stdlib\\/strutil:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2#strutil","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_secure_stdlib\\/strutil:v0.1.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5?package-id=00472b1e17d8e4fc","type":"library","name":"github.com/hashicorp/go-sockaddr","version":"v1.0.5","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/go-sockaddr/@v/v1.0.5.zip#github.com/hashicorp/go-sockaddr@v1.0.5/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:go-sockaddr:v1.0.5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:go_sockaddr:v1.0.5:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?package-id=fe6ee6a5b4e61613","type":"library","name":"github.com/hashicorp/golang-lru","version":"v1.0.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/@v/v1.0.2.zip#github.com/hashicorp/golang-lru@v1.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:golang-lru:v1.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:golang_lru:v1.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/golang-lru@v2.0.7?package-id=c9a0b90fbeb554b5#v2","type":"library","name":"github.com/hashicorp/golang-lru/v2","version":"v2.0.7","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/v2/@v/v2.0.7.zip#github.com/hashicorp/golang-lru/v2@v2.0.7/simplelru/LICENSE_list"}},{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/golang-lru/v2/@v/v2.0.7.zip#github.com/hashicorp/golang-lru/v2@v2.0.7/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:golang-lru\\/v2:v2.0.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/golang-lru@v2.0.7#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:hashicorp:golang_lru\\/v2:v2.0.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5?package-id=b65d0cda66da588f","type":"library","name":"github.com/hashicorp/hcl","version":"v1.0.1-vault-5","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/hcl/@v/v1.0.1-vault-5.zip#github.com/hashicorp/hcl@v1.0.1-vault-5/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:hcl:v1.0.1-vault-5:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/hcl@v2.23.0?package-id=86c28d7af5c7c329#v2","type":"library","name":"github.com/hashicorp/hcl/v2","version":"v2.23.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/hcl/v2/@v/v2.23.0.zip#github.com/hashicorp/hcl/v2@v2.23.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:hcl\\/v2:v2.23.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/hcl@v2.23.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/vault@v1.16.0?package-id=ffba91e4de2dce61#api","type":"library","name":"github.com/hashicorp/vault/api","version":"v1.16.0","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/vault/api/@v/v1.16.0.zip#github.com/hashicorp/vault/api@v1.16.0/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:vault\\/api:v1.16.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/vault@v1.16.0#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nbEYGJiAPGzT9U4oWgaaB0g+Rj8E59QuHKyA5LhwQN4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=c377430d817c17dd","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=80ec3347f65f9063","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=492646b6007e49ec","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=29fb43cd2962eb24","type":"library","name":"github.com/hashicorp/yamux","version":"v0.1.2","licenses":[{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/hashicorp/yamux/@v/v0.1.2.zip#github.com/hashicorp/yamux@v0.1.2/LICENSE"}}],"cpe":"cpe:2.3:a:hashicorp:yamux:v0.1.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/hashicorp/yamux@v0.1.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/imdario/mergo@v0.3.16?package-id=2eac58e895107531","type":"library","name":"github.com/imdario/mergo","version":"v0.3.16","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/imdario/mergo/@v/v0.3.16.zip#github.com/imdario/mergo@v0.3.16/LICENSE"}},{"license":{"name":"sha256:4f72fe957ed4e04e7edd2980165e25158b8a26bbe875327d6b89637f6db60d51","url":"https://proxy.golang.org/github.com/imdario/mergo/@v/v0.3.16.zip#github.com/imdario/mergo@v0.3.16/testdata/license.yml"}}],"cpe":"cpe:2.3:a:imdario:mergo:v0.3.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/imdario/mergo@v0.3.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0?package-id=4fc2df847e89d183","type":"library","name":"github.com/improbable-eng/grpc-web","version":"v0.15.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/improbable-eng/grpc-web/@v/v0.15.0.zip#github.com/improbable-eng/grpc-web@v0.15.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:improbable-eng:grpc-web:v0.15.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable-eng:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable_eng:grpc-web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable_eng:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable:grpc-web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:improbable:grpc_web:v0.15.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=2c63849bc3d02a56","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c672598b9b353d42","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=30f470de4bd763d3","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c943f48f28ff29c8","type":"library","name":"github.com/in-toto/attestation","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/attestation/@v/v1.1.0.zip#github.com/in-toto/attestation@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:attestation:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/attestation@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:attestation:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0?package-id=d86f38a835568fce","type":"library","name":"github.com/in-toto/in-toto-golang","version":"v0.9.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/in-toto/in-toto-golang/@v/v0.9.0.zip#github.com/in-toto/in-toto-golang@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:in-toto:in-toto-golang:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:in-toto:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:in-toto-golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in_toto:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:in-toto-golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:in:in_toto_golang:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=7f50552cc0f341bf","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=a5fb3cc1c46db20a","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=3821e4b956d84344","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=ea387fce7a195090","type":"library","name":"github.com/invopop/jsonschema","version":"v0.13.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/invopop/jsonschema/@v/v0.13.0.zip#github.com/invopop/jsonschema@v0.13.0/COPYING"}}],"cpe":"cpe:2.3:a:invopop:jsonschema:v0.13.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/invopop/jsonschema@v0.13.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgpassfile@v1.0.0?package-id=fc90a6dc24a94c10","type":"library","name":"github.com/jackc/pgpassfile","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgpassfile/@v/v1.0.0.zip#github.com/jackc/pgpassfile@v1.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:pgpassfile:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgpassfile@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761?package-id=d5bbbda9af0b5db7","type":"library","name":"github.com/jackc/pgservicefile","version":"v0.0.0-20240606120523-5a60cdf6a761","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgservicefile/@v/v0.0.0-20240606120523-5a60cdf6a761.zip#github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:pgservicefile:v0.0.0-20240606120523-5a60cdf6a761:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/pgx@v5.7.2?package-id=48ac6ddf39a73211#v5","type":"library","name":"github.com/jackc/pgx/v5","version":"v5.7.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/pgx/v5/@v/v5.7.2.zip#github.com/jackc/pgx/v5@v5.7.2/LICENSE"}},{"license":{"name":"sha256:4b9071daf5f9975eb936c370200709bb7433862c5d4a32d21db65620133f4a8e","url":"https://proxy.golang.org/github.com/jackc/pgx/v5/@v/v5.7.2.zip#github.com/jackc/pgx/v5@v5.7.2/pgproto3/notice_response.go"}}],"cpe":"cpe:2.3:a:jackc:pgx\\/v5:v5.7.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/pgx@v5.7.2#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jackc/puddle@v2.2.2?package-id=5946bd50e2bafc70#v2","type":"library","name":"github.com/jackc/puddle/v2","version":"v2.2.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jackc/puddle/v2/@v/v2.2.2.zip#github.com/jackc/puddle/v2@v2.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:jackc:puddle\\/v2:v2.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jackc/puddle@v2.2.2#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=55ef3c2f98d458e7#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=9c061dcb97d86801#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=f6a92e444bcf1dba#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=831798331ec72ec1#v6","type":"library","name":"github.com/jedib0t/go-pretty/v6","version":"v6.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedib0t/go-pretty/v6/@v/v6.4.7.zip#github.com/jedib0t/go-pretty/v6@v6.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:jedib0t:go-pretty\\/v6:v6.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedib0t/go-pretty@v6.4.7#v6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedib0t:go_pretty\\/v6:v6.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lwiTJr1DEkAgzljsUsORmWsVn5MQjt1BPJdPCtJ6KXE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267?package-id=9146b36f53e18d22","type":"library","name":"github.com/jedisct1/go-minisign","version":"v0.0.0-20230811132847-661be99b8267","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/jedisct1/go-minisign/@v/v0.0.0-20230811132847-661be99b8267.zip#github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267/LICENSE"}}],"cpe":"cpe:2.3:a:jedisct1:go-minisign:v0.0.0-20230811132847-661be99b8267:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:jedisct1:go_minisign:v0.0.0-20230811132847-661be99b8267:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/josharian/intern@v1.0.0?package-id=375bd940772b5112","type":"library","name":"github.com/josharian/intern","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/josharian/intern/@v/v1.0.0.zip#github.com/josharian/intern@v1.0.0/license.md"}}],"cpe":"cpe:2.3:a:josharian:intern:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/josharian/intern@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=a51c1ed59ac235b6","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=2788587718847dd6","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=183b708ed190a6b3","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=34566d6d108b781c","type":"library","name":"github.com/joshdk/go-junit","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/joshdk/go-junit/@v/v1.0.0.zip#github.com/joshdk/go-junit@v1.0.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:joshdk:go-junit:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/joshdk/go-junit@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:joshdk:go_junit:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/klauspost/compress@v1.18.0?package-id=38fec71e4cde6246","type":"library","name":"github.com/klauspost/compress","version":"v1.18.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/gzhttp/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/internal/lz4ref/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/internal/snapref/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/snappy/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/cmd/internal/filepathx/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/s2/cmd/internal/readahead/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/snappy/xerial/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/klauspost/compress/@v/v1.18.0.zip#github.com/klauspost/compress@v1.18.0/zstd/internal/xxhash/LICENSE.txt"}}],"cpe":"cpe:2.3:a:klauspost:compress:v1.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/klauspost/compress@v1.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/kylelemons/godebug@v1.1.0?package-id=4678812fa04f717d","type":"library","name":"github.com/kylelemons/godebug","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/kylelemons/godebug/@v/v1.1.0.zip#github.com/kylelemons/godebug@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:kylelemons:godebug:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/kylelemons/godebug@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec?package-id=8aa7b3357e7d0080","type":"library","name":"github.com/letsencrypt/boulder","version":"v0.0.0-20240620165639-de9c06129bec","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/letsencrypt/boulder/@v/v0.0.0-20240620165639-de9c06129bec.zip#github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec/ocsp/responder/testdata/LICENSE"}},{"license":{"id":"MPL-2.0","url":"https://proxy.golang.org/github.com/letsencrypt/boulder/@v/v0.0.0-20240620165639-de9c06129bec.zip#github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec/LICENSE.txt"}}],"cpe":"cpe:2.3:a:letsencrypt:boulder:v0.0.0-20240620165639-de9c06129bec:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=45f59cb2f9906c68","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=5c6a32993694b68b","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677d378fed89cec5","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677a2b71f97847ad","type":"library","name":"github.com/mailru/easyjson","version":"v0.9.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mailru/easyjson/@v/v0.9.1.zip#github.com/mailru/easyjson@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:mailru:easyjson:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mailru/easyjson@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=4efdc889817fde22","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=a7015c7c03cd0220","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=afd2afa2d25e0b2f","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=23537ff564074bad","type":"library","name":"github.com/mattn/go-colorable","version":"v0.1.13","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-colorable/@v/v0.1.13.zip#github.com/mattn/go-colorable@v0.1.13/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-colorable:v0.1.13:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-colorable@v0.1.13","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_colorable:v0.1.13:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=82811dc235b0ea9a","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=892879401868db3e","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=3a2f5fdaa8b76a2a","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=251fa42070b8e1f5","type":"library","name":"github.com/mattn/go-isatty","version":"v0.0.20","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-isatty/@v/v0.0.20.zip#github.com/mattn/go-isatty@v0.0.20/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-isatty:v0.0.20:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-isatty@v0.0.20","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_isatty:v0.0.20:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=e2e8eef85cf14e1b","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=cdb9a8aad36b1428","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=28efaff8a0bb5995","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=1a05c8cd3eddba93","type":"library","name":"github.com/mattn/go-runewidth","version":"v0.0.16","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mattn/go-runewidth/@v/v0.0.16.zip#github.com/mattn/go-runewidth@v0.0.16/LICENSE"}}],"cpe":"cpe:2.3:a:mattn:go-runewidth:v0.0.16:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mattn/go-runewidth@v0.0.16","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mattn:go_runewidth:v0.0.16:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?package-id=ffb0e9892861fe1d","type":"library","name":"github.com/mitchellh/go-homedir","version":"v1.1.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/go-homedir/@v/v1.1.0.zip#github.com/mitchellh/go-homedir@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:mitchellh:go-homedir:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/go-homedir@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mitchellh:go_homedir:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1?package-id=46269e7f390a7e59","type":"library","name":"github.com/mitchellh/go-wordwrap","version":"v1.0.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/go-wordwrap/@v/v1.0.1.zip#github.com/mitchellh/go-wordwrap@v1.0.1/LICENSE.md"}}],"cpe":"cpe:2.3:a:mitchellh:go-wordwrap:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:mitchellh:go_wordwrap:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/mitchellh/mapstructure@v1.5.0?package-id=e454360c4c30677e","type":"library","name":"github.com/mitchellh/mapstructure","version":"v1.5.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/mitchellh/mapstructure/@v/v1.5.0.zip#github.com/mitchellh/mapstructure@v1.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:mitchellh:mapstructure:v1.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/mitchellh/mapstructure@v1.5.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible?package-id=751c4a54c4d06156","type":"library","name":"github.com/moby/moby","version":"v26.1.0+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/contrib/busybox/LICENSE"}},{"license":{"name":"sha256:b40ec5b16182103ef1cd69d42a21c98369e35bd483b3973902da4807c0755446","url":"https://proxy.golang.org/github.com/moby/moby/@v/v26.1.0+incompatible.zip#github.com/moby/moby@v26.1.0+incompatible/NOTICE"}}],"cpe":"cpe:2.3:a:moby:moby:v26.1.0\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mjepCwMH0KpCgPvrXjqqyCeTCHgzO7p9TwZ2nQMI2qU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=d199848386663b2a","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=fcf034275fb92db5","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=f4bc6aa705a417e3","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=6977296306a736dc","type":"library","name":"github.com/muesli/reflow","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/muesli/reflow/@v/v0.3.0.zip#github.com/muesli/reflow@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:muesli:reflow:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/muesli/reflow@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?package-id=2e8a67d0a37c0c11","type":"library","name":"github.com/munnerz/goautoneg","version":"v0.0.0-20191010083416-a7dc8b61c822","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/munnerz/goautoneg/@v/v0.0.0-20191010083416-a7dc8b61c822.zip#github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822/LICENSE"}}],"cpe":"cpe:2.3:a:munnerz:goautoneg:v0.0.0-20191010083416-a7dc8b61c822:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nats.go@v1.34.0?package-id=e54b42463787b0dc","type":"library","name":"github.com/nats-io/nats.go","version":"v1.34.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nats.go/@v/v1.34.0.zip#github.com/nats-io/nats.go@v1.34.0/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nats.go:v1.34.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nats.go@v1.34.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nats.go:v1.34.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nats.go:v1.34.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fnxnPCNiwIG5w08rlMcEKTUw4AV/nKyGCOJE8TdhSPk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nkeys@v0.4.7?package-id=584bd6116fde734b","type":"library","name":"github.com/nats-io/nkeys","version":"v0.4.7","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nkeys/@v/v0.4.7.zip#github.com/nats-io/nkeys@v0.4.7/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nkeys:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nkeys@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nkeys:v0.4.7:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nkeys:v0.4.7:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nats-io/nuid@v1.0.1?package-id=11f0db942d14c258","type":"library","name":"github.com/nats-io/nuid","version":"v1.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nats-io/nuid/@v/v1.0.1.zip#github.com/nats-io/nuid@v1.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:nats-io:nuid:v1.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nats-io/nuid@v1.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats_io:nuid:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:nats:nuid:v1.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481?package-id=73b7c1bb1efbc9f2","type":"library","name":"github.com/nozzle/throttler","version":"v0.0.0-20180817012639-2ea982251481","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/nozzle/throttler/@v/v0.0.0-20180817012639-2ea982251481.zip#github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481/LICENSE"}}],"cpe":"cpe:2.3:a:nozzle:throttler:v0.0.0-20180817012639-2ea982251481:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=f9716f8bbd6a86d3","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=8e270da511dcf471","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=bc2cb77a3c64fb1d","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/run@v1.1.0?package-id=504a7581f5de0d8a","type":"library","name":"github.com/oklog/run","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/run/@v/v1.1.0.zip#github.com/oklog/run@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:run:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/run@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/oklog/ulid@v1.3.1?package-id=3ed6fb0e0b250709","type":"library","name":"github.com/oklog/ulid","version":"v1.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/oklog/ulid/@v/v1.3.1.zip#github.com/oklog/ulid@v1.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:oklog:ulid:v1.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/oklog/ulid@v1.3.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/open-policy-agent/opa@v1.6.0?package-id=fffbf5f8b5072dde","type":"library","name":"github.com/open-policy-agent/opa","version":"v1.6.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/gojsonschema/LICENSE-APACHE-2.0.txt"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/semver/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/edittree/bitvector/license.txt"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/jwx/LICENSE"}},{"license":{"name":"sha256:d64678da511cc3c76e1b20cd7074c102a62de0685d486eba144e3ff7b3ee60f3","url":"https://proxy.golang.org/github.com/open-policy-agent/opa/@v/v1.6.0.zip#github.com/open-policy-agent/opa@v1.6.0/internal/providers/aws/NOTICE.txt"}}],"cpe":"cpe:2.3:a:open-policy-agent:opa:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/open-policy-agent/opa@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:open_policy_agent:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open-policy:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open_policy:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:open:opa:v1.6.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/S/cnNQJ2MUMNzizHPbisTWBHowmLkPrugY5jjkPlRQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opencontainers/go-digest@v1.0.0?package-id=6c70f6c5d8943923","type":"library","name":"github.com/opencontainers/go-digest","version":"v1.0.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opencontainers/go-digest/@v/v1.0.0.zip#github.com/opencontainers/go-digest@v1.0.0/LICENSE"}},{"license":{"id":"CC-BY-SA-4.0","url":"https://proxy.golang.org/github.com/opencontainers/go-digest/@v/v1.0.0.zip#github.com/opencontainers/go-digest@v1.0.0/LICENSE.docs"}}],"cpe":"cpe:2.3:a:opencontainers:go-digest:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opencontainers/go-digest@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opencontainers:go_digest:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opencontainers/image-spec@v1.1.1?package-id=49cd6c2b271fe64c","type":"library","name":"github.com/opencontainers/image-spec","version":"v1.1.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opencontainers/image-spec/@v/v1.1.1.zip#github.com/opencontainers/image-spec@v1.1.1/LICENSE"}}],"cpe":"cpe:2.3:a:opencontainers:image-spec:v1.1.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opencontainers/image-spec@v1.1.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opencontainers:image_spec:v1.1.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?package-id=fec1bf6deefcda93","type":"library","name":"github.com/opentracing/opentracing-go","version":"v1.2.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/opentracing/opentracing-go/@v/v1.2.0.zip#github.com/opentracing/opentracing-go@v1.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:opentracing:opentracing-go:v1.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:opentracing:opentracing_go:v1.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pelletier/go-toml@v2.2.4?package-id=413c3223db6885b6#v2","type":"library","name":"github.com/pelletier/go-toml/v2","version":"v2.2.4","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/pelletier/go-toml/v2/@v/v2.2.4.zip#github.com/pelletier/go-toml/v2@v2.2.4/LICENSE"}}],"cpe":"cpe:2.3:a:pelletier:go-toml\\/v2:v2.2.4:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pelletier/go-toml@v2.2.4#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:pelletier:go_toml\\/v2:v2.2.4:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?package-id=37fb8712c1644376","type":"library","name":"github.com/pkg/browser","version":"v0.0.0-20240102092130-5ac0b6a4141c","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/pkg/browser/@v/v0.0.0-20240102092130-5ac0b6a4141c.zip#github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c/LICENSE"}}],"cpe":"cpe:2.3:a:pkg:browser:v0.0.0-20240102092130-5ac0b6a4141c:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/pkg/errors@v0.9.1?package-id=2360ee24db547993","type":"library","name":"github.com/pkg/errors","version":"v0.9.1","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/pkg/errors/@v/v0.9.1.zip#github.com/pkg/errors@v0.9.1/LICENSE"}}],"cpe":"cpe:2.3:a:pkg:errors:v0.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/pkg/errors@v0.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/client_golang@v1.22.0?package-id=ba59e8a4375c665a","type":"library","name":"github.com/prometheus/client_golang","version":"v1.22.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/internal/github.com/golang/gddo/LICENSE"}},{"license":{"name":"sha256:8548bfb2bc1913396df38c548a6ec60b8dbcac3b0800485a40569c8bdd184471","url":"https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.22.0.zip#github.com/prometheus/client_golang@v1.22.0/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:client-golang:v1.22.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/client_golang@v1.22.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:prometheus:client_golang:v1.22.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/client_model@v0.6.2?package-id=28d58289653e68aa","type":"library","name":"github.com/prometheus/client_model","version":"v0.6.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/client_model/@v/v0.6.2.zip#github.com/prometheus/client_model@v0.6.2/LICENSE"}},{"license":{"name":"sha256:6c79faa15168885fb88a316ae0df18f486deafddefdc16826cdc56dfbd421e24","url":"https://proxy.golang.org/github.com/prometheus/client_model/@v/v0.6.2.zip#github.com/prometheus/client_model@v0.6.2/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:client-model:v0.6.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/client_model@v0.6.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:prometheus:client_model:v0.6.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/common@v0.63.0?package-id=3396cbd5ea3cdd5e","type":"library","name":"github.com/prometheus/common","version":"v0.63.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/common/@v/v0.63.0.zip#github.com/prometheus/common@v0.63.0/LICENSE"}},{"license":{"name":"sha256:600244c8052c8c1d307043fafacbc83b429c171dd8e08f5a537c0a54014585ee","url":"https://proxy.golang.org/github.com/prometheus/common/@v/v0.63.0.zip#github.com/prometheus/common@v0.63.0/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:common:v0.63.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/common@v0.63.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/prometheus/procfs@v0.16.1?package-id=4ba421c4157a075a","type":"library","name":"github.com/prometheus/procfs","version":"v0.16.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/prometheus/procfs/@v/v0.16.1.zip#github.com/prometheus/procfs@v0.16.1/LICENSE"}},{"license":{"name":"sha256:497fcdb9fae55924c12f55f05cbe83a096662e5c591d79b74e4a8f23bab5ffee","url":"https://proxy.golang.org/github.com/prometheus/procfs/@v/v0.16.1.zip#github.com/prometheus/procfs@v0.16.1/NOTICE"}}],"cpe":"cpe:2.3:a:prometheus:procfs:v0.16.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/prometheus/procfs@v0.16.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9?package-id=d68b41c72972f980","type":"library","name":"github.com/rcrowley/go-metrics","version":"v0.0.0-20250401214520-65e299d6c5c9","licenses":[{"license":{"id":"BSD-2-Clause-Views","url":"https://proxy.golang.org/github.com/rcrowley/go-metrics/@v/v0.0.0-20250401214520-65e299d6c5c9.zip#github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9/LICENSE"}}],"cpe":"cpe:2.3:a:rcrowley:go-metrics:v0.0.0-20250401214520-65e299d6c5c9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:rcrowley:go_metrics:v0.0.0-20250401214520-65e299d6c5c9:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=26670e6d26c61375","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=46c6a48df530e826","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=7a3e880a3ff477b6","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=c4f0d3acc64e8a84","type":"library","name":"github.com/rivo/uniseg","version":"v0.4.7","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rivo/uniseg/@v/v0.4.7.zip#github.com/rivo/uniseg@v0.4.7/LICENSE.txt"}}],"cpe":"cpe:2.3:a:rivo:uniseg:v0.4.7:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rivo/uniseg@v0.4.7","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/cors@v1.11.0?package-id=75b9b988256ae5dc","type":"library","name":"github.com/rs/cors","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/cors/@v/v1.11.0.zip#github.com/rs/cors@v1.11.0/LICENSE"}}],"cpe":"cpe:2.3:a:rs:cors:v1.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/cors@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ba121567cc067a37","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ec57861ae0738879","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=5a7c2d2cc0752498","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=a6567b0f41d46330","type":"library","name":"github.com/rs/zerolog","version":"v1.32.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/rs/zerolog/@v/v1.32.0.zip#github.com/rs/zerolog@v1.32.0/hlog/internal/mutil/LICENSE"}}],"cpe":"cpe:2.3:a:rs:zerolog:v1.32.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/rs/zerolog@v1.32.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/ryanuber/go-glob@v1.0.0?package-id=a496fe059de8f7d2","type":"library","name":"github.com/ryanuber/go-glob","version":"v1.0.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/ryanuber/go-glob/@v/v1.0.0.zip#github.com/ryanuber/go-glob@v1.0.0/LICENSE"}}],"cpe":"cpe:2.3:a:ryanuber:go-glob:v1.0.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/ryanuber/go-glob@v1.0.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:ryanuber:go_glob:v1.0.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sagikazarmark/locafero@v0.7.0?package-id=8fda646d7df9e7a9","type":"library","name":"github.com/sagikazarmark/locafero","version":"v0.7.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sagikazarmark/locafero/@v/v0.7.0.zip#github.com/sagikazarmark/locafero@v0.7.0/LICENSE"}}],"cpe":"cpe:2.3:a:sagikazarmark:locafero:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sagikazarmark/locafero@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=3ebe647b2b7a0fd2#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=312080e827250f9f#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=6ffdbec30efea770#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=b6cae4a0031d28c9#v5","type":"library","name":"github.com/santhosh-tekuri/jsonschema/v5","version":"v5.3.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/santhosh-tekuri/jsonschema/v5/@v/v5.3.1.zip#github.com/santhosh-tekuri/jsonschema/v5@v5.3.1/LICENSE"}}],"cpe":"cpe:2.3:a:santhosh-tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1#v5","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh_tekuri:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:santhosh:jsonschema\\/v5:v5.3.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible?package-id=57d48b6338ba4447","type":"library","name":"github.com/sassoftware/relic","version":"v7.2.1+incompatible","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sassoftware/relic/@v/v7.2.1+incompatible.zip#github.com/sassoftware/relic@v7.2.1+incompatible/LICENSE"}}],"cpe":"cpe:2.3:a:sassoftware:relic:v7.2.1\\+incompatible:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=5e815f65fbbededf","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=831ff9a8f3c979eb","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=84270e0cb713b341","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=d758de4faa5efa02","type":"library","name":"github.com/secure-systems-lab/go-securesystemslib","version":"v0.9.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/secure-systems-lab/go-securesystemslib/@v/v0.9.0.zip#github.com/secure-systems-lab/go-securesystemslib@v0.9.0/LICENSE"}}],"cpe":"cpe:2.3:a:secure-systems-lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems-lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems_lab:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure-systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure_systems:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go-securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:secure:go_securesystemslib:v0.9.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/shibumi/go-pathspec@v1.3.0?package-id=d67d872c4177113d","type":"library","name":"github.com/shibumi/go-pathspec","version":"v1.3.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/shibumi/go-pathspec/@v/v1.3.0.zip#github.com/shibumi/go-pathspec@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:shibumi:go-pathspec:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/shibumi/go-pathspec@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:shibumi:go_pathspec:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/cosign@v2.4.1?package-id=03cfd2c433da4add#v2","type":"library","name":"github.com/sigstore/cosign/v2","version":"v2.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/cosign/v2/@v/v2.4.1.zip#github.com/sigstore/cosign/v2@v2.4.1/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:cosign\\/v2:v2.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/cosign@v2.4.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:b8UXEfJFks3hmTwyxrRNrn6racpmccUycBHxDMkEPvU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/fulcio@v1.6.3?package-id=f8baa9f2ffac0f22","type":"library","name":"github.com/sigstore/fulcio","version":"v1.6.3","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/fulcio/@v/v1.6.3.zip#github.com/sigstore/fulcio@v1.6.3/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:fulcio:v1.6.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/fulcio@v1.6.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mvm/bP6ELHgazqZehL8TANS1maAkRoM23CRAdkM4xQI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=9e39a559192d9d43","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=05c1d24775970882","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=fd17d0d46e4be5f0","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=0f62165063737ef3","type":"library","name":"github.com/sigstore/protobuf-specs","version":"v0.4.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-python/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-ruby/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/protobuf-specs/@v/v0.4.1.zip#github.com/sigstore/protobuf-specs@v0.4.1/gen/pb-typescript/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:protobuf-specs:v0.4.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:protobuf_specs:v0.4.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/rekor@v1.3.6?package-id=c3584927ec4886b0","type":"library","name":"github.com/sigstore/rekor","version":"v1.3.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/rekor/@v/v1.3.6.zip#github.com/sigstore/rekor@v1.3.6/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:rekor:v1.3.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/rekor@v1.3.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QvpMMJVWAp69a3CHzdrLelqEqpTM3ByQRt5B5Kspbi8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/sigstore@v1.8.9?package-id=d7c5e2057451495d","type":"library","name":"github.com/sigstore/sigstore","version":"v1.8.9","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/sigstore/@v/v1.8.9.zip#github.com/sigstore/sigstore@v1.8.9/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:sigstore:v1.8.9:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/sigstore@v1.8.9","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:NiUZIVWywgYuVTxXmRoTT4O4QAGiTEKup4N1wdxFadk="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/sigstore-go@v0.6.1?package-id=a192b09bb8ac2b12","type":"library","name":"github.com/sigstore/sigstore-go","version":"v0.6.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/sigstore-go/@v/v0.6.1.zip#github.com/sigstore/sigstore-go@v0.6.1/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:sigstore-go:v0.6.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/sigstore-go@v0.6.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:sigstore_go:v0.6.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:tGkkv1oDIER+QYU5MrjqlttQOVDWfSkmYwMqkJhB/cg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2?package-id=363ab614c878c9aa","type":"library","name":"github.com/sigstore/timestamp-authority","version":"v1.2.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/sigstore/timestamp-authority/@v/v1.2.2.zip#github.com/sigstore/timestamp-authority@v1.2.2/LICENSE"}}],"cpe":"cpe:2.3:a:sigstore:timestamp-authority:v1.2.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:sigstore:timestamp_authority:v1.2.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:X4qyutnCQqJ0apMewFyx+3t7Tws00JQ/JonBiu3QvLE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sirupsen/logrus@v1.9.3?package-id=9fe179472ead2c12","type":"library","name":"github.com/sirupsen/logrus","version":"v1.9.3","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sirupsen/logrus/@v/v1.9.3.zip#github.com/sirupsen/logrus@v1.9.3/LICENSE"}}],"cpe":"cpe:2.3:a:sirupsen:logrus:v1.9.3:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sirupsen/logrus@v1.9.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/sourcegraph/conc@v0.3.0?package-id=a67352f726c85707","type":"library","name":"github.com/sourcegraph/conc","version":"v0.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/sourcegraph/conc/@v/v0.3.0.zip#github.com/sourcegraph/conc@v0.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:sourcegraph:conc:v0.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/sourcegraph/conc@v0.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/afero@v1.12.0?package-id=a51fa46d067f2f92","type":"library","name":"github.com/spf13/afero","version":"v1.12.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spf13/afero/@v/v1.12.0.zip#github.com/spf13/afero@v1.12.0/LICENSE.txt"}}],"cpe":"cpe:2.3:a:spf13:afero:v1.12.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/afero@v1.12.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/cast@v1.7.1?package-id=041498db4977f256","type":"library","name":"github.com/spf13/cast","version":"v1.7.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/spf13/cast/@v/v1.7.1.zip#github.com/spf13/cast@v1.7.1/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:cast:v1.7.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/cast@v1.7.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/cobra@v1.9.1?package-id=fcc4bdd1cadd331a","type":"library","name":"github.com/spf13/cobra","version":"v1.9.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spf13/cobra/@v/v1.9.1.zip#github.com/spf13/cobra@v1.9.1/LICENSE.txt"}}],"cpe":"cpe:2.3:a:spf13:cobra:v1.9.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/cobra@v1.9.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/pflag@v1.0.6?package-id=f97be186276d93aa","type":"library","name":"github.com/spf13/pflag","version":"v1.0.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/spf13/pflag/@v/v1.0.6.zip#github.com/spf13/pflag@v1.0.6/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:pflag:v1.0.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/pflag@v1.0.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spf13/viper@v1.20.1?package-id=ab3bcc5d5ff8530f","type":"library","name":"github.com/spf13/viper","version":"v1.20.1","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/spf13/viper/@v/v1.20.1.zip#github.com/spf13/viper@v1.20.1/LICENSE"}}],"cpe":"cpe:2.3:a:spf13:viper:v1.20.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spf13/viper@v1.20.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/spiffe/go-spiffe@v2.5.0?package-id=85d997951c37d5c3#v2","type":"library","name":"github.com/spiffe/go-spiffe/v2","version":"v2.5.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/spiffe/go-spiffe/v2/@v/v2.5.0.zip#github.com/spiffe/go-spiffe/v2@v2.5.0/LICENSE"}}],"cpe":"cpe:2.3:a:spiffe:go-spiffe\\/v2:v2.5.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/spiffe/go-spiffe@v2.5.0#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:spiffe:go_spiffe\\/v2:v2.5.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=e6afe4f522ea6683","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=3817cc426cfb808c","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=0ee1a83a49b4c64b","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=02686d6216219020","type":"library","name":"github.com/stoewer/go-strcase","version":"v1.3.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/stoewer/go-strcase/@v/v1.3.0.zip#github.com/stoewer/go-strcase@v1.3.0/LICENSE"}}],"cpe":"cpe:2.3:a:stoewer:go-strcase:v1.3.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/stoewer/go-strcase@v1.3.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:stoewer:go_strcase:v1.3.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/subosito/gotenv@v1.6.0?package-id=4a8f33d4149fa817","type":"library","name":"github.com/subosito/gotenv","version":"v1.6.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/subosito/gotenv/@v/v1.6.0.zip#github.com/subosito/gotenv@v1.6.0/LICENSE"}}],"cpe":"cpe:2.3:a:subosito:gotenv:v1.6.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/subosito/gotenv@v1.6.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d?package-id=5ef412fac3cbf7e9","type":"library","name":"github.com/syndtr/goleveldb","version":"v1.0.1-0.20220721030215-126854af5e6d","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/github.com/syndtr/goleveldb/@v/v1.0.1-0.20220721030215-126854af5e6d.zip#github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d/LICENSE"}}],"cpe":"cpe:2.3:a:syndtr:goleveldb:v1.0.1-0.20220721030215-126854af5e6d:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/tchap/go-patricia@v2.3.2?package-id=076464ff44d0c48b#v2","type":"library","name":"github.com/tchap/go-patricia/v2","version":"v2.3.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/tchap/go-patricia/v2/@v/v2.3.2.zip#github.com/tchap/go-patricia/v2@v2.3.2/LICENSE"}}],"cpe":"cpe:2.3:a:tchap:go-patricia\\/v2:v2.3.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/tchap/go-patricia@v2.3.2#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:tchap:go_patricia\\/v2:v2.3.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0?package-id=07913fd074f4bb4e","type":"library","name":"github.com/theupdateframework/go-tuf","version":"v0.7.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/@v/v0.7.0.zip#github.com/theupdateframework/go-tuf@v0.7.0/LICENSE"}},{"license":{"name":"sha256:cd65721176ce5fdbb05773c0b1349f993b94ce77a51062cfa7a78b34cc82fc71","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/@v/v0.7.0.zip#github.com/theupdateframework/go-tuf@v0.7.0/client/python_interop/testdata/LICENSE.txt"}}],"cpe":"cpe:2.3:a:theupdateframework:go-tuf:v0.7.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:theupdateframework:go_tuf:v0.7.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1?package-id=76760a99ffedbe62#v2","type":"library","name":"github.com/theupdateframework/go-tuf/v2","version":"v2.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/v2/@v/v2.0.1.zip#github.com/theupdateframework/go-tuf/v2@v2.0.1/LICENSE"}},{"license":{"name":"sha256:86ce5e2bb72f603a8849e085524022bdac6668df4f0baca507033610237365f3","url":"https://proxy.golang.org/github.com/theupdateframework/go-tuf/v2/@v/v2.0.1.zip#github.com/theupdateframework/go-tuf/v2@v2.0.1/NOTICE"}}],"cpe":"cpe:2.3:a:theupdateframework:go-tuf\\/v2:v2.0.1:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:theupdateframework:go_tuf\\/v2:v2.0.1:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:11p9tXpq10KQEujxjcIjDSivMKCMLguls7erXHZnxJQ="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399?package-id=d1ef9fdb1b0b7d43","type":"library","name":"github.com/titanous/rocacheck","version":"v0.0.0-20171023193734-afe73141d399","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/titanous/rocacheck/@v/v0.0.0-20171023193734-afe73141d399.zip#github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399/LICENSE"}}],"cpe":"cpe:2.3:a:titanous:rocacheck:v0.0.0-20171023193734-afe73141d399:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/transparency-dev/merkle@v0.0.2?package-id=ad385bf50623e9b9","type":"library","name":"github.com/transparency-dev/merkle","version":"v0.0.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/transparency-dev/merkle/@v/v0.0.2.zip#github.com/transparency-dev/merkle@v0.0.2/LICENSE"}}],"cpe":"cpe:2.3:a:transparency-dev:merkle:v0.0.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/transparency-dev/merkle@v0.0.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:transparency_dev:merkle:v0.0.2:*:*:*:*:*:*:*"},{"name":"syft:cpe23","value":"cpe:2.3:a:transparency:merkle:v0.0.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/vbatts/tar-split@v0.11.6?package-id=4a9e94de8b24b30f","type":"library","name":"github.com/vbatts/tar-split","version":"v0.11.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/vbatts/tar-split/@v/v0.11.6.zip#github.com/vbatts/tar-split@v0.11.6/LICENSE"}}],"cpe":"cpe:2.3:a:vbatts:tar-split:v0.11.6:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/vbatts/tar-split@v0.11.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:vbatts:tar_split:v0.11.6:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/vektah/gqlparser@v2.5.28?package-id=904b164e13443ce7#v2","type":"library","name":"github.com/vektah/gqlparser/v2","version":"v2.5.28","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/github.com/vektah/gqlparser/v2/@v/v2.5.28.zip#github.com/vektah/gqlparser/v2@v2.5.28/validator/imported/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/vektah/gqlparser/v2/@v/v2.5.28.zip#github.com/vektah/gqlparser/v2@v2.5.28/LICENSE"}}],"cpe":"cpe:2.3:a:vektah:gqlparser\\/v2:v2.5.28:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/vektah/gqlparser@v2.5.28#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:bIulcl3LF69ba6EiZVGD88y4MkM+Jxrf3P2MX8xLRkY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=1afeb7fa0c88e9b6#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=c486262f6d6f8d4e#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=9d063d199f36b49a#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=91eff46e7d1353aa#v2","type":"library","name":"github.com/wk8/go-ordered-map/v2","version":"v2.1.8","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/wk8/go-ordered-map/v2/@v/v2.1.8.zip#github.com/wk8/go-ordered-map/v2@v2.1.8/LICENSE"}}],"cpe":"cpe:2.3:a:wk8:go-ordered-map\\/v2:v2.1.8:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/wk8/go-ordered-map@v2.1.8#v2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:wk8:go_ordered_map\\/v2:v2.1.8:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb?package-id=bb70c229bf71cc4f","type":"library","name":"github.com/xeipuuv/gojsonpointer","version":"v0.0.0-20190905194746-02993c407bfb","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/xeipuuv/gojsonpointer/@v/v0.0.0-20190905194746-02993c407bfb.zip#github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb/LICENSE-APACHE-2.0.txt"}}],"cpe":"cpe:2.3:a:xeipuuv:gojsonpointer:v0.0.0-20190905194746-02993c407bfb:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415?package-id=99db612f912a11c5","type":"library","name":"github.com/xeipuuv/gojsonreference","version":"v0.0.0-20180127040603-bd5ef7bd5415","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/xeipuuv/gojsonreference/@v/v0.0.0-20180127040603-bd5ef7bd5415.zip#github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415/LICENSE-APACHE-2.0.txt"}}],"cpe":"cpe:2.3:a:xeipuuv:gojsonreference:v0.0.0-20180127040603-bd5ef7bd5415:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0?package-id=282f35c4b1f6d2bd","type":"library","name":"github.com/yashtewari/glob-intersection","version":"v0.2.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/yashtewari/glob-intersection/@v/v0.2.0.zip#github.com/yashtewari/glob-intersection@v0.2.0/LICENSE"}}],"cpe":"cpe:2.3:a:yashtewari:glob-intersection:v0.2.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:yashtewari:glob_intersection:v0.2.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zclconf/go-cty@v1.16.2?package-id=f20005539e6795e9","type":"library","name":"github.com/zclconf/go-cty","version":"v1.16.2","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zclconf/go-cty/@v/v1.16.2.zip#github.com/zclconf/go-cty@v1.16.2/LICENSE"}}],"cpe":"cpe:2.3:a:zclconf:go-cty:v1.16.2:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zclconf/go-cty@v1.16.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:zclconf:go_cty:v1.16.2:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0?package-id=3874ac0272f9bee5","type":"library","name":"github.com/zclconf/go-cty-yaml","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/LICENSE.libyaml"}},{"license":{"name":"sha256:13f60e7195649c2b90ba7002c7148874ca799c831735216df58cf8bb79402322","url":"https://proxy.golang.org/github.com/zclconf/go-cty-yaml/@v/v1.1.0.zip#github.com/zclconf/go-cty-yaml@v1.1.0/NOTICE"}}],"cpe":"cpe:2.3:a:zclconf:go-cty-yaml:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:cpe23","value":"cpe:2.3:a:zclconf:go_cty_yaml:v1.1.0:*:*:*:*:*:*:*"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:nP+jp0qPHv2IhUVqmQSzjvqAWcObN0KBkUl2rWBdig0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/github.com/zeebo/errs@v1.4.0?package-id=50865a0ab5462184","type":"library","name":"github.com/zeebo/errs","version":"v1.4.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/github.com/zeebo/errs/@v/v1.4.0.zip#github.com/zeebo/errs@v1.4.0/LICENSE"}}],"cpe":"cpe:2.3:a:zeebo:errs:v1.4.0:*:*:*:*:*:*:*","purl":"pkg:golang/github.com/zeebo/errs@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.mongodb.org/mongo-driver@v1.14.0?package-id=79335c76ac742872","type":"library","name":"go.mongodb.org/mongo-driver","version":"v1.14.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.mongodb.org/mongo-driver/@v/v1.14.0.zip#go.mongodb.org/mongo-driver@v1.14.0/LICENSE"}}],"purl":"pkg:golang/go.mongodb.org/mongo-driver@v1.14.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0?package-id=2389f138092105a7","type":"library","name":"go.opentelemetry.io/auto/sdk","version":"v1.1.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/auto/sdk/@v/v1.1.0.zip#go.opentelemetry.io/auto/sdk@v1.1.0/LICENSE"}}],"cpe":"cpe:2.3:a:auto:sdk:v1.1.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0?package-id=947897b6c35d0bea#gcp","type":"library","name":"go.opentelemetry.io/contrib/detectors/gcp","version":"v1.34.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/detectors/gcp/@v/v1.34.0.zip#go.opentelemetry.io/contrib/detectors/gcp@v1.34.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:detectors\\/gcp:v1.34.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0#gcp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0?package-id=d17d8ef0b84597f1#google.golang.org/grpc/otelgrpc","type":"library","name":"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc","version":"v0.60.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/@v/v0.60.0.zip#go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc@v0.60.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:instrumentation\\/google.golang.org\\/grpc\\/otelgrpc:v0.60.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0#google.golang.org/grpc/otelgrpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0?package-id=e659c3247ca4ea17#net/http/otelhttp","type":"library","name":"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp","version":"v0.61.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/@v/v0.61.0.zip#go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.61.0/LICENSE"}}],"cpe":"cpe:2.3:a:contrib:instrumentation\\/net\\/http\\/otelhttp:v0.61.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0#net/http/otelhttp","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel@v1.36.0?package-id=750c8cdf1e715b3d","type":"library","name":"go.opentelemetry.io/otel","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/@v/v1.36.0.zip#go.opentelemetry.io/otel@v1.36.0/LICENSE"}}],"purl":"pkg:golang/go.opentelemetry.io/otel@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0?package-id=f5280a8e73526779","type":"library","name":"go.opentelemetry.io/otel/metric","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/metric/@v/v1.36.0.zip#go.opentelemetry.io/otel/metric@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:metric:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=dbe4622886a7eb23","type":"library","name":"go.opentelemetry.io/otel/sdk","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/sdk/@v/v1.36.0.zip#go.opentelemetry.io/otel/sdk@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:sdk:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=2f79f854422b4e6b#metric","type":"library","name":"go.opentelemetry.io/otel/sdk/metric","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/sdk/metric/@v/v1.36.0.zip#go.opentelemetry.io/otel/sdk/metric@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:sdk\\/metric:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0#metric","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0?package-id=8e6777f9e3937c9a","type":"library","name":"go.opentelemetry.io/otel/trace","version":"v1.36.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.opentelemetry.io/otel/trace/@v/v1.36.0.zip#go.opentelemetry.io/otel/trace@v1.36.0/LICENSE"}}],"cpe":"cpe:2.3:a:otel:trace:v1.36.0:*:*:*:*:*:*:*","purl":"pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.step.sm/crypto@v0.51.2?package-id=0b7ba6230440bae9","type":"library","name":"go.step.sm/crypto","version":"v0.51.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/internal/utils/utfbom/LICENSE"}},{"license":{"id":"BSD-2-Clause","url":"https://proxy.golang.org/go.step.sm/crypto/@v/v0.51.2.zip#go.step.sm/crypto@v0.51.2/internal/bcrypt_pbkdf/LICENSE"}}],"purl":"pkg:golang/go.step.sm/crypto@v0.51.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:5EiCGIMg7IvQTGmJrwRosbXeprtT80OhoS/PJarg60o="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=3616c5a233680802","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=ae5c7aef61b60ede","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=f280d904397a39ce","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/multierr@v1.11.0?package-id=aba8aea3b9fb97ec","type":"library","name":"go.uber.org/multierr","version":"v1.11.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/multierr/@v/v1.11.0.zip#go.uber.org/multierr@v1.11.0/LICENSE.txt"}}],"purl":"pkg:golang/go.uber.org/multierr@v1.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=ea2962d9f09e39f6","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=a21da72ed70aaf0e","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=c86a603927e0ee21","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/go.uber.org/zap@v1.27.0?package-id=89b56947df944587","type":"library","name":"go.uber.org/zap","version":"v1.27.0","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/go.uber.org/zap/@v/v1.27.0.zip#go.uber.org/zap@v1.27.0/LICENSE"}}],"purl":"pkg:golang/go.uber.org/zap@v1.27.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/goa.design/goa@v2.2.5%2Bincompatible?package-id=8ec7a6ac6a99e82d","type":"library","name":"goa.design/goa","version":"v2.2.5+incompatible","licenses":[{"license":{"id":"MIT","url":"https://proxy.golang.org/goa.design/goa/@v/v2.2.5+incompatible.zip#goa.design/goa@v2.2.5+incompatible/LICENSE"}}],"purl":"pkg:golang/goa.design/goa@v2.2.5%2Bincompatible","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mjAtiy7ZdZIkj974hpFxCR6bL69qprfV00Veu3Vybts="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=ba6a2ecacf7e5510","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=1acb772cccf69586","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=31a548c3ace1a87e","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/crypto@v0.45.0?package-id=55c317c948b27d75","type":"library","name":"golang.org/x/crypto","version":"v0.45.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/crypto/@v/v0.45.0.zip#golang.org/x/crypto@v0.45.0/LICENSE"}}],"cpe":"cpe:2.3:a:go:ssh:v0.45.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/crypto@v0.45.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=37c6a231ba3db4c5","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=449c43c79ddffda6","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=e29946d1fbabc7c6","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=08de3f7d19d06529","type":"library","name":"golang.org/x/exp","version":"v0.0.0-20241108190413-2d47ceb2692f","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/exp/@v/v0.0.0-20241108190413-2d47ceb2692f.zip#golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/exp:v0.0.0-20241108190413-2d47ceb2692f:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/mod@v0.29.0?package-id=7f41366fb70070b3","type":"library","name":"golang.org/x/mod","version":"v0.29.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/mod/@v/v0.29.0.zip#golang.org/x/mod@v0.29.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/mod:v0.29.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/mod@v0.29.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=6b3b1afdab5bff0c","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=f7ecedbec1f16008","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=e8c099d5a1f3d773","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/net@v0.47.0?package-id=e9404f5605699c07","type":"library","name":"golang.org/x/net","version":"v0.47.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/net/@v/v0.47.0.zip#golang.org/x/net@v0.47.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:networking:v0.47.0:*:*:*:*:go:*:*","purl":"pkg:golang/golang.org/x/net@v0.47.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/oauth2@v0.30.0?package-id=b00071d52c186fdc","type":"library","name":"golang.org/x/oauth2","version":"v0.30.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/oauth2/@v/v0.30.0.zip#golang.org/x/oauth2@v0.30.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/oauth2:v0.30.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/oauth2@v0.30.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sync@v0.18.0?package-id=b9eebbfdeabf6835","type":"library","name":"golang.org/x/sync","version":"v0.18.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sync/@v/v0.18.0.zip#golang.org/x/sync@v0.18.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sync:v0.18.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sync@v0.18.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=8ed33a3fa34b3bad","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=fd59895cdad1b945","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=5878c8eb708573fe","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/sys@v0.38.0?package-id=fc6de1d47d31929c","type":"library","name":"golang.org/x/sys","version":"v0.38.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/sys/@v/v0.38.0.zip#golang.org/x/sys@v0.38.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/sys:v0.38.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/sys@v0.38.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/term@v0.37.0?package-id=67f320a45385d632","type":"library","name":"golang.org/x/term","version":"v0.37.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/term/@v/v0.37.0.zip#golang.org/x/term@v0.37.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/term:v0.37.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/term@v0.37.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=9f93033556a3e7c6","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=6c5c5d29f81fa5c6","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=e013e22bd88d997d","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/text@v0.31.0?package-id=d93788a4490de800","type":"library","name":"golang.org/x/text","version":"v0.31.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/text/@v/v0.31.0.zip#golang.org/x/text@v0.31.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:text:v0.31.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/text@v0.31.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/golang.org/x/time@v0.11.0?package-id=b71333688b641fdb","type":"library","name":"golang.org/x/time","version":"v0.11.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/golang.org/x/time/@v/v0.11.0.zip#golang.org/x/time@v0.11.0/LICENSE"}}],"cpe":"cpe:2.3:a:golang:x\\/time:v0.11.0:*:*:*:*:*:*:*","purl":"pkg:golang/golang.org/x/time@v0.11.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/api@v0.233.0?package-id=53ece5b247645b00","type":"library","name":"google.golang.org/api","version":"v0.233.0","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/api/@v/v0.233.0.zip#google.golang.org/api@v0.233.0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/api/@v/v0.233.0.zip#google.golang.org/api@v0.233.0/internal/third_party/uritemplates/LICENSE"}}],"cpe":"cpe:2.3:a:google:api:v0.233.0:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/api@v0.233.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:iGZfjXAJiUFSSaekVB7LzXl6tRfEKhUN7FkZN++07tI="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb?package-id=0e616ace83e4891b","type":"library","name":"google.golang.org/genproto","version":"v0.0.0-20250303144028-a0af3efb3deb","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/@v/v0.0.0-20250303144028-a0af3efb3deb.zip#google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250303144028-a0af3efb3deb:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=c99e85a81cdb82c8#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=929a0a0b01ae1148#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=b7f068e4fee3d9ae#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=9a4ddc6747229345#api","type":"library","name":"google.golang.org/genproto/googleapis/api","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/api/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/api@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#api","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2?package-id=643149bbba8adf45#bytestream","type":"library","name":"google.golang.org/genproto/googleapis/bytestream","version":"v0.0.0-20250505200425-f936aa4a68b2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/bytestream/@v/v0.0.0-20250505200425-f936aa4a68b2.zip#google.golang.org/genproto/googleapis/bytestream@v0.0.0-20250505200425-f936aa4a68b2/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250505200425-f936aa4a68b2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2#bytestream","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:DbpkGFGRkd4GORg+IWQW2EhxUaa/My/PM8d1CGyTDMY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=2425b3dd1423c423#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=8e28b2fbdf57da53#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=5d9d6c1b1a9a5f87#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=970a97e1cfafadd3#rpc","type":"library","name":"google.golang.org/genproto/googleapis/rpc","version":"v0.0.0-20250519155744-55703ea1f237","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/genproto/googleapis/rpc/@v/v0.0.0-20250519155744-55703ea1f237.zip#google.golang.org/genproto/googleapis/rpc@v0.0.0-20250519155744-55703ea1f237/LICENSE"}}],"cpe":"cpe:2.3:a:google:genproto:v0.0.0-20250519155744-55703ea1f237:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237#rpc","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=4f2f5da79d52f9ac","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=2091eecfa7eb4b1f","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=1dd8f9a88116e8b2","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/grpc@v1.72.2?package-id=9d7ce4ac8ec41338","type":"library","name":"google.golang.org/grpc","version":"v1.72.2","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/google.golang.org/grpc/@v/v1.72.2.zip#google.golang.org/grpc@v1.72.2/NOTICE.txt"}}],"cpe":"cpe:2.3:a:google:grpc:v1.72.2:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/grpc@v1.72.2","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=b2f2ed000f228add","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=14a90e9027eb6aba","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=da57caf889d11b40","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=953eadb614af7da9","type":"library","name":"google.golang.org/protobuf","version":"v1.36.6","licenses":[{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/google.golang.org/protobuf/@v/v1.36.6.zip#google.golang.org/protobuf@v1.36.6/LICENSE"}}],"cpe":"cpe:2.3:a:google:protobuf:v1.36.6:*:*:*:*:*:*:*","purl":"pkg:golang/google.golang.org/protobuf@v1.36.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v2@v2.4.0?package-id=a2b03ddc6fa94e5f","type":"library","name":"gopkg.in/yaml.v2","version":"v2.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip#gopkg.in/yaml.v2@v2.4.0/LICENSE.libyaml"}}],"purl":"pkg:golang/gopkg.in/yaml.v2@v2.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=7fbe175931da9944","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=c5a23787b8526cc2","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1514a584b70e13ce","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=a02c8cc4dd1588ac","type":"library","name":"gopkg.in/yaml.v3","version":"v3.0.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/NOTICE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/gopkg.in/yaml.v3/@v/v3.0.1.zip#gopkg.in/yaml.v3@v3.0.1/LICENSE"}}],"cpe":"cpe:2.3:a:yaml_project:yaml:v3.0.1:*:*:*:*:go:*:*","purl":"pkg:golang/gopkg.in/yaml.v3@v3.0.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=de533d8c18fe73e6","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=29c719ea8826697d","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=23c20b13799cbd61","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=adbffd440580540e","type":"library","name":"k8s.io/apimachinery","version":"v0.28.6","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/apimachinery/@v/v0.28.6.zip#k8s.io/apimachinery@v0.28.6/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/apimachinery@v0.28.6","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/klog/v2@v2.120.1?package-id=c154b07c875996b9","type":"library","name":"k8s.io/klog/v2","version":"v2.120.1","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/klog/v2/@v/v2.120.1.zip#k8s.io/klog/v2@v2.120.1/LICENSE"}}],"cpe":"cpe:2.3:a:klog:v2:v2.120.1:*:*:*:*:*:*:*","purl":"pkg:golang/k8s.io/klog/v2@v2.120.1","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=ca6764c0602ab7ea","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=4e83502b30cbeac1","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=7f6d282b21b57645","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=96e0da6c18f8895a","type":"library","name":"k8s.io/utils","version":"v0.0.0-20240502163921-fe8a2dddb1d0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/inotify/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/internal/third_party/forked/golang/LICENSE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/k8s.io/utils/@v/v0.0.0-20240502163921-fe8a2dddb1d0.zip#k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0/third_party/forked/golang/LICENSE"}}],"purl":"pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/nhooyr.io/websocket@v1.8.10?package-id=0f4456df679cfa47","type":"library","name":"nhooyr.io/websocket","version":"v1.8.10","licenses":[{"license":{"id":"ISC","url":"https://proxy.golang.org/nhooyr.io/websocket/@v/v1.8.10.zip#nhooyr.io/websocket@v1.8.10/LICENSE.txt"}}],"purl":"pkg:golang/nhooyr.io/websocket@v1.8.10","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/sigs.k8s.io/yaml@v1.4.0?package-id=6a1c0b030cc12f11","type":"library","name":"sigs.k8s.io/yaml","version":"v1.4.0","licenses":[{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/NOTICE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/LICENSE"}},{"license":{"id":"Apache-2.0","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/NOTICE"}},{"license":{"id":"BSD-3-Clause","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/LICENSE"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v2/LICENSE.libyaml"}},{"license":{"id":"MIT","url":"https://proxy.golang.org/sigs.k8s.io/yaml/@v/v1.4.0.zip#sigs.k8s.io/yaml@v1.4.0/goyaml.v3/LICENSE"}}],"purl":"pkg:golang/sigs.k8s.io/yaml@v1.4.0","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:architecture","value":"amd64"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"},{"name":"syft:metadata:h1Digest","value":"h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E="},{"name":"syft:metadata:mainModule","value":"github.com/chainloop-dev/chainloop"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=32e9973a0467da41","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:7670d45203a62e4821d768a7d7f8b0186620e72c8923d4dfdee4a05236c057ec"},{"name":"syft:location:0:path","value":"/control-plane"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=4544fe6d1a31dc26","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:5fb840ba5cfcb37fadb159fc8795666f9e916e922fb0b76962a371794c327994"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-dependency-track"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=d7129e05ab4c678a","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:3e9cc927e3a6bc9e59b25172df4123bc52205002357ca65e224c06ffbc8cfe04"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-discord-webhook"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"pkg:golang/stdlib@1.25.3?package-id=6120b838505e29a8","type":"library","name":"stdlib","version":"go1.25.3","licenses":[{"license":{"id":"BSD-3-Clause"}}],"cpe":"cpe:2.3:a:golang:go:1.25.3:-:*:*:*:*:*:*","purl":"pkg:golang/stdlib@1.25.3","properties":[{"name":"syft:package:foundBy","value":"go-module-binary-cataloger"},{"name":"syft:package:language","value":"go"},{"name":"syft:package:type","value":"go-module"},{"name":"syft:package:metadataType","value":"go-module-buildinfo-entry"},{"name":"syft:location:0:layerID","value":"sha256:a3483782a03146f100be96bf70e4eafc93d40d64f118117c677f53d279d71e34"},{"name":"syft:location:0:path","value":"/plugins/chainloop-plugin-smtp"},{"name":"syft:metadata:goCompiledVersion","value":"go1.25.3"}]},{"bom-ref":"83b862befcdcb449","type":"file","name":"/control-plane","hashes":[{"alg":"SHA-1","content":"e52b5a42c9007d86c4716426baa5b013977c159a"},{"alg":"SHA-256","content":"8644bbae888cc0dea0707334abd9fa7755dce0f5024475ce6c2d24ce3f62dc33"}]},{"bom-ref":"8cddf93201a11996","type":"file","name":"/plugins/chainloop-plugin-discord-webhook","hashes":[{"alg":"SHA-1","content":"8ed5e3ba74a0b898d6e38de7eabc8de7a765ea15"},{"alg":"SHA-256","content":"5a6b7b416b162c25156a244bab13c55896b61a6ae9756fea7e534ccca67e0fb8"}]},{"bom-ref":"3204fd42f76e7368","type":"file","name":"/plugins/chainloop-plugin-dependency-track","hashes":[{"alg":"SHA-1","content":"73d95d6f158f47f110227bb2998c5f050cf259cd"},{"alg":"SHA-256","content":"44a58bcb25ab72b9ae47584f9a00b1f69de0452aebb719c4b19c745f0eee2784"}]},{"bom-ref":"1b4647ea29d7931f","type":"file","name":"/plugins/chainloop-plugin-smtp","hashes":[{"alg":"SHA-1","content":"60f6e9977c0a3ad9cbf3f784f3c5618f293fcdec"},{"alg":"SHA-256","content":"f722f2594fea1dfc6cbab4aa9ec182aad7134500ea3c427a2f4f2ec7b22fca77"}]}],"dependencies":[{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=07be1822274ac6c2","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=c6c3f160ac2104ef#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=7767baf99c2c72da#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=851d702929c90d6b","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=424dc008cddfac27","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=063662c0e5be2d12","pkg:golang/github.com/fatih/color@v1.18.0?package-id=cb051690d181c233","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=1ad16a54ed2f28c5","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=ee59c03e7d282beb","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=bb81d2fa42aca450#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1c4c20be5a74352a#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=1ef9a86c0dba97da#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=1a32c40755e6569e","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=a970d450c768e802","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=5e213c869c2dbf74","pkg:golang/github.com/google/uuid@v1.6.0?package-id=ee10cf9fe598515a","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=f7c3c61f9541e3cc","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=ff52797c54226f91#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=e0d2948a5094766b","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=e48b4da1770afa58","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=29fb43cd2962eb24","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c943f48f28ff29c8","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=ea387fce7a195090","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=831798331ec72ec1#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=34566d6d108b781c","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677a2b71f97847ad","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=23537ff564074bad","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=251fa42070b8e1f5","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=1a05c8cd3eddba93","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=6977296306a736dc","pkg:golang/github.com/oklog/run@v1.1.0?package-id=504a7581f5de0d8a","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=c4f0d3acc64e8a84","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=a6567b0f41d46330","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=b6cae4a0031d28c9#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=d758de4faa5efa02","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=0f62165063737ef3","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=02686d6216219020","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=91eff46e7d1353aa#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=aba8aea3b9fb97ec","pkg:golang/go.uber.org/zap@v1.27.0?package-id=89b56947df944587","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=55c317c948b27d75","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=08de3f7d19d06529","pkg:golang/golang.org/x/net@v0.47.0?package-id=e9404f5605699c07","pkg:golang/golang.org/x/sys@v0.38.0?package-id=fc6de1d47d31929c","pkg:golang/golang.org/x/text@v0.31.0?package-id=d93788a4490de800","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=970a97e1cfafadd3#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=9a4ddc6747229345#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=9d7ce4ac8ec41338","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=953eadb614af7da9","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=a02c8cc4dd1588ac","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=adbffd440580540e","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=96e0da6c18f8895a","pkg:golang/stdlib@1.25.3?package-id=6120b838505e29a8"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=54b2042dbb967bfb","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=576a923b75b0414a#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9778da3f20bdc413#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=0107fda3b9a62652","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7ce5bfe8a2d6da39","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=6579eb971ced0e83","pkg:golang/github.com/fatih/color@v1.18.0?package-id=62beb9f5b781efb1","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=2de66667dfa130f9","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=a2bbea604cfa7200","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=7f555049bfdb22ec#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=1f298e5178f0f0a2#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=3e411e71b19b728c#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=81ad5a7203a1d871","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=bd5968f2afcc0ac3","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=7b7615f9c732e196","pkg:golang/github.com/google/uuid@v1.6.0?package-id=c078af9202eb67fb","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=89a381c67bb09fcd","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=d8362605b5f7bba7#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=20deff1e7bad1eca","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=95985da18f5e22b1","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=80ec3347f65f9063","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=c672598b9b353d42","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=a5fb3cc1c46db20a","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=9c061dcb97d86801#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=2788587718847dd6","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=5c6a32993694b68b","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=a7015c7c03cd0220","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=892879401868db3e","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=cdb9a8aad36b1428","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=fcf034275fb92db5","pkg:golang/github.com/oklog/run@v1.1.0?package-id=8e270da511dcf471","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=46c6a48df530e826","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ec57861ae0738879","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=312080e827250f9f#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=831ff9a8f3c979eb","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=05c1d24775970882","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=3817cc426cfb808c","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=c486262f6d6f8d4e#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=ae5c7aef61b60ede","pkg:golang/go.uber.org/zap@v1.27.0?package-id=a21da72ed70aaf0e","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=1acb772cccf69586","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=449c43c79ddffda6","pkg:golang/golang.org/x/net@v0.47.0?package-id=f7ecedbec1f16008","pkg:golang/golang.org/x/sys@v0.38.0?package-id=fd59895cdad1b945","pkg:golang/golang.org/x/text@v0.31.0?package-id=6c5c5d29f81fa5c6","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=8e28b2fbdf57da53#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=929a0a0b01ae1148#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=2091eecfa7eb4b1f","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=14a90e9027eb6aba","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=c5a23787b8526cc2","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=29c719ea8826697d","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=4e83502b30cbeac1","pkg:golang/stdlib@1.25.3?package-id=4544fe6d1a31dc26"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7082a29b4f621514","dependsOn":["pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=0cf7cbf749d1cb4e#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=9862b73e3588ea9c#v4","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=f111cd0ff25be54b","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=7957d791a206fc3a","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=3611af2062999f69","pkg:golang/github.com/fatih/color@v1.18.0?package-id=1e02106cb6ebeea4","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=d5943fbe3beaa11d","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=fda7ea06592dbc40","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=dd14cd1e530f3d81#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3eb3682621d00528#v2","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=b1a427e5d3abba3b#v4","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=f5372c52b2fd34a5","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=192004540d7108a8","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=a54ae79f7278ff5b","pkg:golang/github.com/google/uuid@v1.6.0?package-id=e69639bf52e19d1c","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=754a4646b8d5bfb0","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=a1eebd635a0ec603#v2","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=8e211380b05c4b06","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=cafa939434ad6849","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=492646b6007e49ec","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=30f470de4bd763d3","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=3821e4b956d84344","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=f6a92e444bcf1dba#v6","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=183b708ed190a6b3","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=677d378fed89cec5","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=afd2afa2d25e0b2f","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=3a2f5fdaa8b76a2a","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=28efaff8a0bb5995","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=f4bc6aa705a417e3","pkg:golang/github.com/oklog/run@v1.1.0?package-id=bc2cb77a3c64fb1d","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=7a3e880a3ff477b6","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=5a7c2d2cc0752498","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=6ffdbec30efea770#v5","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=84270e0cb713b341","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=fd17d0d46e4be5f0","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=0ee1a83a49b4c64b","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=9d063d199f36b49a#v2","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=f280d904397a39ce","pkg:golang/go.uber.org/zap@v1.27.0?package-id=c86a603927e0ee21","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=31a548c3ace1a87e","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=e29946d1fbabc7c6","pkg:golang/golang.org/x/net@v0.47.0?package-id=e8c099d5a1f3d773","pkg:golang/golang.org/x/sys@v0.38.0?package-id=5878c8eb708573fe","pkg:golang/golang.org/x/text@v0.31.0?package-id=e013e22bd88d997d","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=5d9d6c1b1a9a5f87#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=b7f068e4fee3d9ae#api","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=1dd8f9a88116e8b2","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=da57caf889d11b40","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1514a584b70e13ce","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=23c20b13799cbd61","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=7f6d282b21b57645","pkg:golang/stdlib@1.25.3?package-id=d7129e05ab4c678a"]},{"ref":"pkg:golang/github.com/chainloop-dev/chainloop@v1.60.0?package-id=7c759c1569fbe75d","dependsOn":["pkg:golang/ariga.io/atlas@v0.36.1?package-id=1b9a814ec1cc7228","pkg:golang/buf.build/gen/go@v1.33.0-20240401165935-b983156c5e99.1?package-id=edd00aa4e8dbad5f#bufbuild/protovalidate/protocolbuffers/go","pkg:golang/cel.dev/expr@v0.20.0?package-id=3991a4c476f16614","pkg:golang/cloud.google.com/go/auth@v0.16.1?package-id=de95518c0a391d5a","pkg:golang/cloud.google.com/go/auth@v0.2.8?package-id=4c87e6e404b0d7a5#oauth2adapt","pkg:golang/cloud.google.com/go/compute@v0.6.0?package-id=dfeda2f435435c8d#metadata","pkg:golang/cloud.google.com/go/iam@v1.5.0?package-id=e13018493ce7a2fc","pkg:golang/cloud.google.com/go/monitoring@v1.24.0?package-id=2a4c84bd5a378b2b","pkg:golang/cloud.google.com/go/secretmanager@v1.14.5?package-id=c263d49fdc3ef135","pkg:golang/cloud.google.com/go/storage@v1.50.0?package-id=0634dfe0a1f7a05a","pkg:golang/cloud.google.com/go@v0.120.0?package-id=8dfc7d3fa8a812b2","pkg:golang/code.cloudfoundry.org/bytefmt@v0.0.0-20230612151507-41ef4d1f67a4?package-id=1c01b35916422ac9","pkg:golang/cuelang.org/go@v0.9.2?package-id=29cc2b94fd47ac47","pkg:golang/entgo.io/ent@v0.14.4?package-id=5714b0c40e1cbe7f","pkg:golang/filippo.io/edwards25519@v1.1.0?package-id=f5a626a34354491b","pkg:golang/github.com/agext/levenshtein@v1.2.3?package-id=54f200cba3f3ddd5","pkg:golang/github.com/agnivade/levenshtein@v1.2.1?package-id=e7e9a5338c9a97b3","pkg:golang/github.com/antlr4-go/antlr@v4.13.0?package-id=e358fd7c8804e192#v4","pkg:golang/github.com/apparentlymart/go-textseg@v15.0.0?package-id=3261f7b0bd4ec0ee#v15","pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20230301143203-a9d515a09cc2?package-id=cf99884dade6c2fa","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.11?package-id=0850673146fa4015#service/internal/presigned-url","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.13.2?package-id=b6bf3c75b9158e55#service/internal/accept-encoding","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.18.19?package-id=229a4160f6bd6fea#credentials","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.19.11?package-id=bcfc4a1504bc9d1e#service/internal/s3shared","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.20.1?package-id=255c307a498c37fb#feature/s3/manager","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.28.6?package-id=944d656d4937b3d7#service/secretsmanager","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.29.8?package-id=ae03c469d9964d5f#service/sso","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.39.4?package-id=7c8f583f475b279a","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=bf9073ca13d2633d#internal/v4a","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.4.11?package-id=fd05241447fbad2a#internal/configsources","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.7.2?package-id=88f41ccaf0fcf0d2#aws/protocol/eventstream","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.89.0?package-id=cb0a0f1ed8b5fcfb#service/s3","pkg:golang/github.com/aws/aws-sdk-go-v2@v1.9.2?package-id=471dd6301d957ee5#service/internal/checksum","pkg:golang/github.com/aws/aws-sdk-go-v2@v2.7.11?package-id=7fff74c6179c99c8#internal/endpoints/v2","pkg:golang/github.com/aws/smithy-go@v1.23.1?package-id=30f5c8f9378b1b0b","pkg:golang/github.com/azure/azure-sdk-for-go@v0.12.0?package-id=8ec1a5515064cc0f#sdk/keyvault/azsecrets","pkg:golang/github.com/azure/azure-sdk-for-go@v0.7.1?package-id=8790a26c853352e6#sdk/keyvault/internal","pkg:golang/github.com/azure/azure-sdk-for-go@v1.10.0?package-id=9f947e5321b6e309#sdk/azidentity","pkg:golang/github.com/azure/azure-sdk-for-go@v1.11.1?package-id=1a21d9c63d2fd37c#sdk/internal","pkg:golang/github.com/azure/azure-sdk-for-go@v1.18.0?package-id=7769c345e6a41e06#sdk/azcore","pkg:golang/github.com/azure/azure-sdk-for-go@v1.3.1?package-id=dfd4cdfbd839595e#sdk/storage/azblob","pkg:golang/github.com/azuread/microsoft-authentication-library-for-go@v1.4.2?package-id=e7582017408a48f8","pkg:golang/github.com/bahlo/generic-list-go@v0.2.0?package-id=4a504023edc43053","pkg:golang/github.com/beorn7/perks@v1.0.1?package-id=88b001c4d4d0b5f3","pkg:golang/github.com/blang/semver@v3.5.1%2Bincompatible?package-id=69b16326119c3de9","pkg:golang/github.com/bmatcuk/doublestar@v1.3.4?package-id=5bb1becc5084463d","pkg:golang/github.com/bmatcuk/doublestar@v4.8.1?package-id=bceca9a757c8b716#v4","pkg:golang/github.com/bufbuild/protovalidate-go@v0.6.1?package-id=1548bdb64ee27afb","pkg:golang/github.com/bufbuild/protoyaml-go@v0.1.11?package-id=44532fe0070003be","pkg:golang/github.com/buger/jsonparser@v1.1.1?package-id=8feb6a0a369f06b4","pkg:golang/github.com/casbin/casbin@v2.103.0?package-id=398770942b4a4b45#v2","pkg:golang/github.com/casbin/govaluate@v1.3.0?package-id=ae0d6aa8b0fbf5ad","pkg:golang/github.com/cenkalti/backoff@v4.3.0?package-id=db2757ee2d4c3bd9#v4","pkg:golang/github.com/cespare/xxhash@v2.3.0?package-id=9aa1e7125da5e681#v2","pkg:golang/github.com/cncf/xds@v0.0.0-20250121191232-2f005788dc42?package-id=fd055dca9cd4684e#go","pkg:golang/github.com/cockroachdb/apd@v3.2.1?package-id=a7e8dec354ec137e#v3","pkg:golang/github.com/containerd/stargz-snapshotter@v0.16.3?package-id=ce2cc16c91eae9c8#estargz","pkg:golang/github.com/coreos/go-oidc@v3.11.0?package-id=bdb5877deeea7ea4#v3","pkg:golang/github.com/cyberphone/json-canonicalization@v0.0.0-20231011164504-785e29786b46?package-id=4395ed3109692990","pkg:golang/github.com/desertbit/timer@v0.0.0-20180107155436-c41aec40b27f?package-id=929f518e1a2c29f7","pkg:golang/github.com/digitorus/pkcs7@v0.0.0-20230818184609-3a137a874352?package-id=4c6df587dc437bee","pkg:golang/github.com/digitorus/timestamp@v0.0.0-20231217203849-220c5c2851b7?package-id=af6c3e471dd91674","pkg:golang/github.com/docker/cli@v27.5.0%2Bincompatible?package-id=73b4b1a8f5e34f52","pkg:golang/github.com/docker/distribution@v2.8.3%2Bincompatible?package-id=78d5b6f50e970040","pkg:golang/github.com/docker/docker-credential-helpers@v0.8.2?package-id=b028d0936bd37abe","pkg:golang/github.com/dustin/go-humanize@v1.0.1?package-id=1c8aeec87e8e24de","pkg:golang/github.com/envoyproxy/go-control-plane@v1.32.4?package-id=371937f3b334bbeb#envoy","pkg:golang/github.com/envoyproxy/protoc-gen-validate@v1.2.1?package-id=a0559b8fcb70cb2f","pkg:golang/github.com/fatih/color@v1.18.0?package-id=d5e6198899daee7e","pkg:golang/github.com/felixge/httpsnoop@v1.0.4?package-id=c901d5e81f25b249","pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?package-id=80e8c41308342846","pkg:golang/github.com/getsentry/sentry-go@v0.23.0?package-id=831fe61af73b9147","pkg:golang/github.com/go-chi/chi@v4.1.2%2Bincompatible?package-id=f93d251151171bc4","pkg:golang/github.com/go-ini/ini@v1.67.0?package-id=32115deda06adada","pkg:golang/github.com/go-jose/go-jose@v4.0.5?package-id=36b333231e79d98a#v4","pkg:golang/github.com/go-kratos/aegis@v0.2.0?package-id=bd1d3e5ba0e9bfb1","pkg:golang/github.com/go-kratos/kratos@v2.0.0-20230823024326-a09f4d8ebba9?package-id=e5872d58195061ff#contrib/log/zap/v2","pkg:golang/github.com/go-kratos/kratos@v2.7.0?package-id=3656a52531615238#v2","pkg:golang/github.com/go-logr/logr@v1.4.3?package-id=90817d8d0fa3e94e","pkg:golang/github.com/go-logr/stdr@v1.2.2?package-id=fb15d49009e571a5","pkg:golang/github.com/go-openapi/analysis@v0.23.0?package-id=f9fdf5fc55590e97","pkg:golang/github.com/go-openapi/errors@v0.22.0?package-id=0f17926ab738cdf9","pkg:golang/github.com/go-openapi/inflect@v0.21.0?package-id=eb3a0d70b1b77c64","pkg:golang/github.com/go-openapi/jsonpointer@v0.21.0?package-id=f06d5883d33095f4","pkg:golang/github.com/go-openapi/jsonreference@v0.21.0?package-id=6928ba45ffb2aa76","pkg:golang/github.com/go-openapi/loads@v0.22.0?package-id=3c34dcb636bcd4ee","pkg:golang/github.com/go-openapi/runtime@v0.28.0?package-id=dceb9829096d1353","pkg:golang/github.com/go-openapi/spec@v0.21.0?package-id=196f0afbd4e7ba64","pkg:golang/github.com/go-openapi/strfmt@v0.23.0?package-id=0aeebfa7ab4224ee","pkg:golang/github.com/go-openapi/swag@v0.23.0?package-id=f1d8a9eb475739f4","pkg:golang/github.com/go-openapi/validate@v0.24.0?package-id=ec70f68d0a6875d0","pkg:golang/github.com/go-playground/form@v4.2.1?package-id=09580f4007c841fc#v4","pkg:golang/github.com/go-viper/mapstructure@v2.4.0?package-id=e524e8add11aefe6#v2","pkg:golang/github.com/goadesign/goa@v2.2.5%2Bincompatible?package-id=76ce5e210fee0918","pkg:golang/github.com/gobwas/glob@v0.2.3?package-id=673637cb391153df","pkg:golang/github.com/golang-jwt/jwt@v4.5.2?package-id=5ab2d6f620ff174b#v4","pkg:golang/github.com/golang-jwt/jwt@v5.2.2?package-id=e8c96702be6e043a#v5","pkg:golang/github.com/golang/protobuf@v1.5.4?package-id=a709ab10b7f70081","pkg:golang/github.com/golang/snappy@v0.0.4?package-id=dd5ef1bf3f5e04f9","pkg:golang/github.com/google/cel-go@v0.20.1?package-id=c5b5cd84e974d96c","pkg:golang/github.com/google/certificate-transparency-go@v1.2.1?package-id=9e5ccce5924b4341","pkg:golang/github.com/google/go-cmp@v0.7.0?package-id=c78b751d993e9fbe","pkg:golang/github.com/google/go-containerregistry@v0.20.3?package-id=f218f28c514368a2","pkg:golang/github.com/google/s2a-go@v0.1.9?package-id=7a1389864cd6d13f","pkg:golang/github.com/google/uuid@v1.6.0?package-id=eb4089a97fc4b824","pkg:golang/github.com/google/wire@v0.6.0?package-id=7c2a8843a50dda97","pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.6?package-id=f3ffb85c873e294c","pkg:golang/github.com/googleapis/gax-go@v2.14.1?package-id=b45d298b550bdf23#v2","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=1a4431c12ff4b138#exporter/metric","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v0.50.0?package-id=662c5f3202aacc2e#internal/resourcemapping","pkg:golang/github.com/googlecloudplatform/opentelemetry-operations-go@v1.26.0?package-id=327d6284d3ae9a8c#detectors/gcp","pkg:golang/github.com/gorilla/mux@v1.8.1?package-id=8aa5a15ae995870a","pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v1.4.0?package-id=5ca59ab756b5d1df","pkg:golang/github.com/grpc-ecosystem/go-grpc-middleware@v2.1.0?package-id=146e3303564149c1#v2","pkg:golang/github.com/grpc-ecosystem/go-grpc-prometheus@v1.2.1-0.20210315223345-82c243799c99?package-id=303abf1a07dde40f","pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v2.26.3?package-id=5d0b50ea309daf7d#v2","pkg:golang/github.com/hashicorp/errwrap@v1.1.0?package-id=c8d193cf3d3d5208","pkg:golang/github.com/hashicorp/go-cleanhttp@v0.5.2?package-id=4403b5c086d6844d","pkg:golang/github.com/hashicorp/go-hclog@v1.6.3?package-id=f0554539af1194c4","pkg:golang/github.com/hashicorp/go-multierror@v1.1.1?package-id=bb7e66578f669275","pkg:golang/github.com/hashicorp/go-plugin@v1.6.3?package-id=519b9b87f98927ad","pkg:golang/github.com/hashicorp/go-retryablehttp@v0.7.7?package-id=81674d20af43830a","pkg:golang/github.com/hashicorp/go-rootcerts@v1.0.2?package-id=d87cb63fecb47921","pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.2?package-id=d4a726e4fd1d30d5#strutil","pkg:golang/github.com/hashicorp/go-secure-stdlib@v0.1.7?package-id=56ba1a1c5da75fa7#parseutil","pkg:golang/github.com/hashicorp/go-sockaddr@v1.0.5?package-id=00472b1e17d8e4fc","pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?package-id=fe6ee6a5b4e61613","pkg:golang/github.com/hashicorp/golang-lru@v2.0.7?package-id=c9a0b90fbeb554b5#v2","pkg:golang/github.com/hashicorp/hcl@v1.0.1-vault-5?package-id=b65d0cda66da588f","pkg:golang/github.com/hashicorp/hcl@v2.23.0?package-id=86c28d7af5c7c329#v2","pkg:golang/github.com/hashicorp/vault@v1.16.0?package-id=ffba91e4de2dce61#api","pkg:golang/github.com/hashicorp/yamux@v0.1.2?package-id=c377430d817c17dd","pkg:golang/github.com/imdario/mergo@v0.3.16?package-id=2eac58e895107531","pkg:golang/github.com/improbable-eng/grpc-web@v0.15.0?package-id=4fc2df847e89d183","pkg:golang/github.com/in-toto/attestation@v1.1.0?package-id=2c63849bc3d02a56","pkg:golang/github.com/in-toto/in-toto-golang@v0.9.0?package-id=d86f38a835568fce","pkg:golang/github.com/invopop/jsonschema@v0.13.0?package-id=7f50552cc0f341bf","pkg:golang/github.com/jackc/pgpassfile@v1.0.0?package-id=fc90a6dc24a94c10","pkg:golang/github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761?package-id=d5bbbda9af0b5db7","pkg:golang/github.com/jackc/pgx@v5.7.2?package-id=48ac6ddf39a73211#v5","pkg:golang/github.com/jackc/puddle@v2.2.2?package-id=5946bd50e2bafc70#v2","pkg:golang/github.com/jedib0t/go-pretty@v6.4.7?package-id=55ef3c2f98d458e7#v6","pkg:golang/github.com/jedisct1/go-minisign@v0.0.0-20230811132847-661be99b8267?package-id=9146b36f53e18d22","pkg:golang/github.com/josharian/intern@v1.0.0?package-id=375bd940772b5112","pkg:golang/github.com/joshdk/go-junit@v1.0.0?package-id=a51c1ed59ac235b6","pkg:golang/github.com/klauspost/compress@v1.18.0?package-id=38fec71e4cde6246","pkg:golang/github.com/kylelemons/godebug@v1.1.0?package-id=4678812fa04f717d","pkg:golang/github.com/letsencrypt/boulder@v0.0.0-20240620165639-de9c06129bec?package-id=8aa7b3357e7d0080","pkg:golang/github.com/mailru/easyjson@v0.9.1?package-id=45f59cb2f9906c68","pkg:golang/github.com/mattn/go-colorable@v0.1.13?package-id=4efdc889817fde22","pkg:golang/github.com/mattn/go-isatty@v0.0.20?package-id=82811dc235b0ea9a","pkg:golang/github.com/mattn/go-runewidth@v0.0.16?package-id=e2e8eef85cf14e1b","pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?package-id=ffb0e9892861fe1d","pkg:golang/github.com/mitchellh/go-wordwrap@v1.0.1?package-id=46269e7f390a7e59","pkg:golang/github.com/mitchellh/mapstructure@v1.5.0?package-id=e454360c4c30677e","pkg:golang/github.com/moby/moby@v26.1.0%2Bincompatible?package-id=751c4a54c4d06156","pkg:golang/github.com/muesli/reflow@v0.3.0?package-id=d199848386663b2a","pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?package-id=2e8a67d0a37c0c11","pkg:golang/github.com/nats-io/nats.go@v1.34.0?package-id=e54b42463787b0dc","pkg:golang/github.com/nats-io/nkeys@v0.4.7?package-id=584bd6116fde734b","pkg:golang/github.com/nats-io/nuid@v1.0.1?package-id=11f0db942d14c258","pkg:golang/github.com/nozzle/throttler@v0.0.0-20180817012639-2ea982251481?package-id=73b7c1bb1efbc9f2","pkg:golang/github.com/oklog/run@v1.1.0?package-id=f9716f8bbd6a86d3","pkg:golang/github.com/oklog/ulid@v1.3.1?package-id=3ed6fb0e0b250709","pkg:golang/github.com/open-policy-agent/opa@v1.6.0?package-id=fffbf5f8b5072dde","pkg:golang/github.com/opencontainers/go-digest@v1.0.0?package-id=6c70f6c5d8943923","pkg:golang/github.com/opencontainers/image-spec@v1.1.1?package-id=49cd6c2b271fe64c","pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?package-id=fec1bf6deefcda93","pkg:golang/github.com/pelletier/go-toml@v2.2.4?package-id=413c3223db6885b6#v2","pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?package-id=37fb8712c1644376","pkg:golang/github.com/pkg/errors@v0.9.1?package-id=2360ee24db547993","pkg:golang/github.com/prometheus/client_golang@v1.22.0?package-id=ba59e8a4375c665a","pkg:golang/github.com/prometheus/client_model@v0.6.2?package-id=28d58289653e68aa","pkg:golang/github.com/prometheus/common@v0.63.0?package-id=3396cbd5ea3cdd5e","pkg:golang/github.com/prometheus/procfs@v0.16.1?package-id=4ba421c4157a075a","pkg:golang/github.com/rcrowley/go-metrics@v0.0.0-20250401214520-65e299d6c5c9?package-id=d68b41c72972f980","pkg:golang/github.com/rivo/uniseg@v0.4.7?package-id=26670e6d26c61375","pkg:golang/github.com/rs/cors@v1.11.0?package-id=75b9b988256ae5dc","pkg:golang/github.com/rs/zerolog@v1.32.0?package-id=ba121567cc067a37","pkg:golang/github.com/ryanuber/go-glob@v1.0.0?package-id=a496fe059de8f7d2","pkg:golang/github.com/sagikazarmark/locafero@v0.7.0?package-id=8fda646d7df9e7a9","pkg:golang/github.com/santhosh-tekuri/jsonschema@v5.3.1?package-id=3ebe647b2b7a0fd2#v5","pkg:golang/github.com/sassoftware/relic@v7.2.1%2Bincompatible?package-id=57d48b6338ba4447","pkg:golang/github.com/secure-systems-lab/go-securesystemslib@v0.9.0?package-id=5e815f65fbbededf","pkg:golang/github.com/shibumi/go-pathspec@v1.3.0?package-id=d67d872c4177113d","pkg:golang/github.com/sigstore/cosign@v2.4.1?package-id=03cfd2c433da4add#v2","pkg:golang/github.com/sigstore/fulcio@v1.6.3?package-id=f8baa9f2ffac0f22","pkg:golang/github.com/sigstore/protobuf-specs@v0.4.1?package-id=9e39a559192d9d43","pkg:golang/github.com/sigstore/rekor@v1.3.6?package-id=c3584927ec4886b0","pkg:golang/github.com/sigstore/sigstore-go@v0.6.1?package-id=a192b09bb8ac2b12","pkg:golang/github.com/sigstore/sigstore@v1.8.9?package-id=d7c5e2057451495d","pkg:golang/github.com/sigstore/timestamp-authority@v1.2.2?package-id=363ab614c878c9aa","pkg:golang/github.com/sirupsen/logrus@v1.9.3?package-id=9fe179472ead2c12","pkg:golang/github.com/sourcegraph/conc@v0.3.0?package-id=a67352f726c85707","pkg:golang/github.com/spf13/afero@v1.12.0?package-id=a51fa46d067f2f92","pkg:golang/github.com/spf13/cast@v1.7.1?package-id=041498db4977f256","pkg:golang/github.com/spf13/cobra@v1.9.1?package-id=fcc4bdd1cadd331a","pkg:golang/github.com/spf13/pflag@v1.0.6?package-id=f97be186276d93aa","pkg:golang/github.com/spf13/viper@v1.20.1?package-id=ab3bcc5d5ff8530f","pkg:golang/github.com/spiffe/go-spiffe@v2.5.0?package-id=85d997951c37d5c3#v2","pkg:golang/github.com/stoewer/go-strcase@v1.3.0?package-id=e6afe4f522ea6683","pkg:golang/github.com/subosito/gotenv@v1.6.0?package-id=4a8f33d4149fa817","pkg:golang/github.com/syndtr/goleveldb@v1.0.1-0.20220721030215-126854af5e6d?package-id=5ef412fac3cbf7e9","pkg:golang/github.com/tchap/go-patricia@v2.3.2?package-id=076464ff44d0c48b#v2","pkg:golang/github.com/theupdateframework/go-tuf@v0.7.0?package-id=07913fd074f4bb4e","pkg:golang/github.com/theupdateframework/go-tuf@v2.0.1?package-id=76760a99ffedbe62#v2","pkg:golang/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399?package-id=d1ef9fdb1b0b7d43","pkg:golang/github.com/transparency-dev/merkle@v0.0.2?package-id=ad385bf50623e9b9","pkg:golang/github.com/vbatts/tar-split@v0.11.6?package-id=4a9e94de8b24b30f","pkg:golang/github.com/vektah/gqlparser@v2.5.28?package-id=904b164e13443ce7#v2","pkg:golang/github.com/wk8/go-ordered-map@v2.1.8?package-id=1afeb7fa0c88e9b6#v2","pkg:golang/github.com/xeipuuv/gojsonpointer@v0.0.0-20190905194746-02993c407bfb?package-id=bb70c229bf71cc4f","pkg:golang/github.com/xeipuuv/gojsonreference@v0.0.0-20180127040603-bd5ef7bd5415?package-id=99db612f912a11c5","pkg:golang/github.com/yashtewari/glob-intersection@v0.2.0?package-id=282f35c4b1f6d2bd","pkg:golang/github.com/zclconf/go-cty-yaml@v1.1.0?package-id=3874ac0272f9bee5","pkg:golang/github.com/zclconf/go-cty@v1.16.2?package-id=f20005539e6795e9","pkg:golang/github.com/zeebo/errs@v1.4.0?package-id=50865a0ab5462184","pkg:golang/go.mongodb.org/mongo-driver@v1.14.0?package-id=79335c76ac742872","pkg:golang/go.opentelemetry.io/auto/sdk@v1.1.0?package-id=2389f138092105a7","pkg:golang/go.opentelemetry.io/contrib/detectors@v1.34.0?package-id=947897b6c35d0bea#gcp","pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.60.0?package-id=d17d8ef0b84597f1#google.golang.org/grpc/otelgrpc","pkg:golang/go.opentelemetry.io/contrib/instrumentation@v0.61.0?package-id=e659c3247ca4ea17#net/http/otelhttp","pkg:golang/go.opentelemetry.io/otel/metric@v1.36.0?package-id=f5280a8e73526779","pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=2f79f854422b4e6b#metric","pkg:golang/go.opentelemetry.io/otel/sdk@v1.36.0?package-id=dbe4622886a7eb23","pkg:golang/go.opentelemetry.io/otel/trace@v1.36.0?package-id=8e6777f9e3937c9a","pkg:golang/go.opentelemetry.io/otel@v1.36.0?package-id=750c8cdf1e715b3d","pkg:golang/go.step.sm/crypto@v0.51.2?package-id=0b7ba6230440bae9","pkg:golang/go.uber.org/multierr@v1.11.0?package-id=3616c5a233680802","pkg:golang/go.uber.org/zap@v1.27.0?package-id=ea2962d9f09e39f6","pkg:golang/goa.design/goa@v2.2.5%2Bincompatible?package-id=8ec7a6ac6a99e82d","pkg:golang/golang.org/x/crypto@v0.45.0?package-id=ba6a2ecacf7e5510","pkg:golang/golang.org/x/exp@v0.0.0-20241108190413-2d47ceb2692f?package-id=37c6a231ba3db4c5","pkg:golang/golang.org/x/mod@v0.29.0?package-id=7f41366fb70070b3","pkg:golang/golang.org/x/net@v0.47.0?package-id=6b3b1afdab5bff0c","pkg:golang/golang.org/x/oauth2@v0.30.0?package-id=b00071d52c186fdc","pkg:golang/golang.org/x/sync@v0.18.0?package-id=b9eebbfdeabf6835","pkg:golang/golang.org/x/sys@v0.38.0?package-id=8ed33a3fa34b3bad","pkg:golang/golang.org/x/term@v0.37.0?package-id=67f320a45385d632","pkg:golang/golang.org/x/text@v0.31.0?package-id=9f93033556a3e7c6","pkg:golang/golang.org/x/time@v0.11.0?package-id=b71333688b641fdb","pkg:golang/google.golang.org/api@v0.233.0?package-id=53ece5b247645b00","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250505200425-f936aa4a68b2?package-id=643149bbba8adf45#bytestream","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=2425b3dd1423c423#rpc","pkg:golang/google.golang.org/genproto/googleapis@v0.0.0-20250519155744-55703ea1f237?package-id=c99e85a81cdb82c8#api","pkg:golang/google.golang.org/genproto@v0.0.0-20250303144028-a0af3efb3deb?package-id=0e616ace83e4891b","pkg:golang/google.golang.org/grpc@v1.72.2?package-id=4f2f5da79d52f9ac","pkg:golang/google.golang.org/protobuf@v1.36.6?package-id=b2f2ed000f228add","pkg:golang/gopkg.in/yaml.v2@v2.4.0?package-id=a2b03ddc6fa94e5f","pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=7fbe175931da9944","pkg:golang/k8s.io/apimachinery@v0.28.6?package-id=de533d8c18fe73e6","pkg:golang/k8s.io/klog/v2@v2.120.1?package-id=c154b07c875996b9","pkg:golang/k8s.io/utils@v0.0.0-20240502163921-fe8a2dddb1d0?package-id=ca6764c0602ab7ea","pkg:golang/nhooyr.io/websocket@v1.8.10?package-id=0f4456df679cfa47","pkg:golang/sigs.k8s.io/yaml@v1.4.0?package-id=6a1c0b030cc12f11","pkg:golang/stdlib@1.25.3?package-id=32e9973a0467da41"]}]} diff --git a/policies/js/examples/simple/.gitignore b/policies/js/examples/simple/.gitignore new file mode 100644 index 000000000..0d6374012 --- /dev/null +++ b/policies/js/examples/simple/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +*.wasm +package-lock.json diff --git a/policies/js/examples/simple/README.md b/policies/js/examples/simple/README.md new file mode 100644 index 000000000..9d8d31223 --- /dev/null +++ b/policies/js/examples/simple/README.md @@ -0,0 +1,190 @@ +# Simple JavaScript Policy Example + +A basic policy that validates string input using the Chainloop JavaScript SDK. + +## What This Policy Does + +This policy validates a message field in JSON input and checks: +1. Message is not empty +2. Message doesn't contain forbidden words (forbidden, banned, prohibited) +3. Message length is within configured maximum (default: 100 characters) + +## Building + +Install dependencies: + +```bash +npm install +``` + +Build the policy: + +```bash +npm run build +``` + +This will: +1. Use esbuild to bundle the policy with the Chainloop SDK +2. Use extism-js to compile the bundle to WASM + +The build process creates: +- `dist/policy.js` - Bundled JavaScript (includes SDK) +- `policy.wasm` - Compiled WASM binary + +## Testing + +### Test 1: Valid Message + +```bash +echo '{"message": "hello world"}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING +``` + +Expected: **PASS** (no violations) + +### Test 2: Empty Message + +```bash +echo '{"message": ""}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING +``` + +Expected: **FAIL** with violation "message cannot be empty" + +### Test 3: Forbidden Word + +```bash +echo '{"message": "this is forbidden content"}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING +``` + +Expected: **FAIL** with violation "message contains forbidden word: forbidden" + +### Test 4: Message Too Long + +```bash +echo '{"message": "This is a very long message that exceeds the maximum allowed length of one hundred characters and should trigger a validation error"}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING +``` + +Expected: **FAIL** with violation "message too long: 151 characters (max 100)" + +### Test 5: Custom Max Length + +```bash +echo '{"message": "short"}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING \ + --input max_length=3 +``` + +Expected: **FAIL** with violation "message too long: 5 characters (max 3)" + +### Test 6: Missing Message Field + +```bash +echo '{"data": "something"}' > /tmp/test-data.json + +chainloop policy develop eval \ + --policy policy.yaml \ + --material /tmp/test-data.json \ + --kind STRING +``` + +Expected: **SKIP** with reason "Material missing 'message' field" + +## Debug Logging + +Run with `--debug` to see detailed logs: + +```bash +chainloop policy develop eval \ + --policy policy.yaml \ + --material test-data.json \ + --kind STRING \ + --debug +``` + +Output will include: +``` +INF Validating message with max length: 100 +INF Validation passed for message: hello world +``` + +## Policy Arguments + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `max_length` | integer | `100` | Maximum allowed message length | + +Pass arguments using `--input`: + +```bash +--input max_length=50 +``` + +## Files + +- `policy.js` - Main policy implementation +- `policy.d.ts` - TypeScript type definitions for WASM exports +- `policy.yaml` - Policy configuration +- `test-data.json` - Sample test data +- `README.md` - This file + +## SDK Functions Used + +- `getMaterialJSON()` - Parse JSON material +- `getArgs()` - Get policy arguments +- `getArgStringDefault()` - Get argument with default +- `success()` - Create success result +- `skip()` - Create skip result +- `outputResult()` - Output result +- `logInfo()` - Log information +- `logError()` - Log errors +- `run()` - Execution wrapper with error handling + +## Integration with Chainloop + +Add to workflow contract: + +```yaml +apiVersion: chainloop.dev/v1 +kind: Contract +metadata: + name: secure-build +spec: + materials: + - type: STRING + name: commit-message + + policies: + materials: + - ref: ./simple/policy.yaml + selector: + name: commit-message + with: + max_length: "100" +``` + +## License + +Apache License 2.0 diff --git a/policies/js/examples/simple/esbuild.js b/policies/js/examples/simple/esbuild.js new file mode 100644 index 000000000..78f632647 --- /dev/null +++ b/policies/js/examples/simple/esbuild.js @@ -0,0 +1,28 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['policy.js'], + outdir: 'dist', + bundle: true, + sourcemap: false, + minify: false, + format: 'cjs', + target: ['es2020'], + platform: 'node', + external: [] +}).catch(() => process.exit(1)); diff --git a/policies/js/examples/simple/package.json b/policies/js/examples/simple/package.json new file mode 100644 index 000000000..f5fa9efd7 --- /dev/null +++ b/policies/js/examples/simple/package.json @@ -0,0 +1,12 @@ +{ + "name": "simple-js-policy-example", + "version": "1.0.0", + "description": "Simple JavaScript policy example using Chainloop SDK", + "private": true, + "scripts": { + "build": "node esbuild.js && extism-js dist/policy.js -i policy.d.ts -o policy.wasm" + }, + "devDependencies": { + "esbuild": "^0.19.0" + } +} diff --git a/policies/js/examples/simple/policy.d.ts b/policies/js/examples/simple/policy.d.ts new file mode 100644 index 000000000..250be8e0c --- /dev/null +++ b/policies/js/examples/simple/policy.d.ts @@ -0,0 +1,27 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * WebAssembly module interface for the simple policy example. + * This file is required by extism-js compiler to generate proper WASM exports. + */ + +declare module "main" { + /** + * Main policy execution function exported to WASM. + * @returns Exit code (0 for success, 1 for error) + */ + export function Execute(): I32; +} diff --git a/policies/js/examples/simple/policy.js b/policies/js/examples/simple/policy.js new file mode 100644 index 000000000..848a103bb --- /dev/null +++ b/policies/js/examples/simple/policy.js @@ -0,0 +1,120 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Simple policy example that validates basic string input. + * + * This example demonstrates: + * - Using run() wrapper to handle errors gracefully + * - Material extraction using getMaterialJSON() + * - Args extraction for configuration + * - Result building with helper methods + * - Logging with logInfo(), logError() + * + * Build: + * npm install + * npm run build + * + * Test: + * echo '{"message": "hello"}' > /tmp/test-message.json + * chainloop policy develop eval \ + * --policy policy.yaml \ + * --material /tmp/test-message.json \ + * --kind EVIDENCE + */ + +const { + getMaterialJSON, + getArgStringDefault, + success, + skip, + outputResult, + logInfo, + logError, + run +} = require('../../index.js'); + +/** + * Main policy execution function. + * This is the entry point called by the Chainloop engine. + */ +function Execute() { + return run(() => { + // Get max length from args, default to 100 + let maxLength = 100; + const maxLengthStr = getArgStringDefault("max_length", "100"); + maxLength = parseInt(maxLengthStr, 10); + + logInfo(`Validating message with max length: ${maxLength}`); + + // Parse material + const input = getMaterialJSON(); + + // Check if material has the expected structure + if (!input || typeof input.message === 'undefined') { + outputResult(skip("Material missing 'message' field")); + return; + } + + // Validate + const result = validateMessage(input, maxLength); + + // Output result + outputResult(result); + }); +} + +/** + * Validates the message for compliance. + * + * @param {Object} input - The input object with message field + * @param {number} maxLength - Maximum allowed message length + * @returns {Object} The validation result + */ +function validateMessage(input, maxLength) { + const result = success(); + const message = input.message; + + // Validation 1: Message must not be empty + if (message === "") { + result.addViolation("message cannot be empty"); + return result; + } + + // Validation 2: Message must not contain forbidden words + const forbidden = ["forbidden", "banned", "prohibited"]; + const messageLower = message.toLowerCase(); + + for (const word of forbidden) { + if (messageLower.includes(word)) { + result.addViolation(`message contains forbidden word: ${word}`); + } + } + + // Validation 3: Message must not be too long + if (message.length > maxLength) { + result.addViolation(`message too long: ${message.length} characters (max ${maxLength})`); + } + + if (result.hasViolations()) { + logError(`Validation failed with ${result.violations.length} violations`); + } else { + logInfo(`Validation passed for message: ${message}`); + } + + return result; +} + +module.exports = { Execute }; diff --git a/policies/js/examples/simple/policy.yaml b/policies/js/examples/simple/policy.yaml new file mode 100644 index 000000000..8ea36385f --- /dev/null +++ b/policies/js/examples/simple/policy.yaml @@ -0,0 +1,9 @@ +apiVersion: workflowcontract.chainloop.dev/v1 +kind: Policy +metadata: + name: simple-js-example + description: Simple JavaScript policy example for string validation +spec: + policies: + - kind: EVIDENCE + path: policy.wasm diff --git a/policies/js/examples/simple/test-data.json b/policies/js/examples/simple/test-data.json new file mode 100644 index 000000000..a33a254ce --- /dev/null +++ b/policies/js/examples/simple/test-data.json @@ -0,0 +1,3 @@ +{ + "message": "hello world" +} diff --git a/policies/js/index.js b/policies/js/index.js new file mode 100644 index 000000000..71e6ec6d1 --- /dev/null +++ b/policies/js/index.js @@ -0,0 +1,22 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Chainloop Policy SDK for JavaScript + * + * Entry point that re-exports all SDK functions from src/ + */ + +module.exports = require('./src/index.js'); diff --git a/policies/js/package-lock.json b/policies/js/package-lock.json new file mode 100644 index 000000000..841a4dcf4 --- /dev/null +++ b/policies/js/package-lock.json @@ -0,0 +1,31 @@ +{ + "name": "@chainloop-dev/policy-sdk", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@chainloop-dev/policy-sdk", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@extism/js-pdk": "^1.1.1" + } + }, + "node_modules/@extism/js-pdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@extism/js-pdk/-/js-pdk-1.1.1.tgz", + "integrity": "sha512-VZLn/dX0ttA1uKk2PZeR/FL3N+nA1S5Vc7E5gdjkR60LuUIwCZT9cYON245V4HowHlBA7YOegh0TLjkx+wNbrA==", + "license": "BSD-Clause-3", + "dependencies": { + "urlpattern-polyfill": "^8.0.2" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "license": "MIT" + } + } +} diff --git a/policies/js/package.json b/policies/js/package.json new file mode 100644 index 000000000..b23ac7dd1 --- /dev/null +++ b/policies/js/package.json @@ -0,0 +1,30 @@ +{ + "name": "@chainloop-dev/policy-sdk", + "version": "0.1.0", + "description": "Chainloop Policy SDK for JavaScript/TypeScript - Write WASM policies with ease", + "main": "index.js", + "types": "index.d.ts", + "keywords": [ + "chainloop", + "policy", + "wasm", + "extism", + "supply-chain", + "security" + ], + "author": "Chainloop Authors", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/chainloop-dev/chainloop.git", + "directory": "sdks/js" + }, + "files": [ + "index.js", + "src/", + "README.md" + ], + "dependencies": { + "@extism/js-pdk": "^1.1.1" + } +} diff --git a/policies/js/src/args.js b/policies/js/src/args.js new file mode 100644 index 000000000..35f39d9d5 --- /dev/null +++ b/policies/js/src/args.js @@ -0,0 +1,76 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Retrieves all policy arguments from the Extism config. + * Arguments are passed via the engine configuration and control policy behavior. + * + * @returns {Object} Object containing all policy arguments as key-value pairs + * @throws {Error} If args cannot be parsed + * + * @example + * const args = getArgs(); + * const threshold = args.severity_threshold || "HIGH"; + */ +function getArgs() { + const argsJSON = Config.get("args"); + if (!argsJSON) { + return {}; + } + + try { + return JSON.parse(argsJSON); + } catch (e) { + throw new Error(`Failed to parse args from config: ${e.message}`); + } +} + +/** + * Retrieves a specific argument as a string. + * + * @param {string} key - The argument key + * @returns {string|undefined} The argument value, or undefined if not found + * + * @example + * const threshold = getArgString("severity_threshold"); + * if (threshold) { + * console.log(`Using threshold: ${threshold}`); + * } + */ +function getArgString(key) { + const args = getArgs(); + return args[key]; +} + +/** + * Retrieves a specific argument as a string with a default value. + * + * @param {string} key - The argument key + * @param {string} defaultValue - Default value if key not found + * @returns {string} The argument value or default + * + * @example + * const threshold = getArgStringDefault("severity_threshold", "HIGH"); + */ +function getArgStringDefault(key, defaultValue) { + const value = getArgString(key); + return value !== undefined ? value : defaultValue; +} + +module.exports = { + getArgs, + getArgString, + getArgStringDefault +}; diff --git a/policies/js/src/discover.js b/policies/js/src/discover.js new file mode 100644 index 000000000..e24061488 --- /dev/null +++ b/policies/js/src/discover.js @@ -0,0 +1,101 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// MERCHANTABILITY under A PARTICULAR PURPOSE. See the +// License for the specific language governing permissions and +// limitations under the License. + +/** + * Artifact Discovery Functions + * + * Functions for exploring the artifact graph and discovering related artifacts. + * + * NOTE: Host and Memory are global objects provided by the Extism runtime. + * They do NOT need to be imported from '@extism/js-pdk'. + */ + +/** + * Discover calls the Chainloop discover builtin to explore the artifact graph. + * It retrieves information about artifacts related to the given digest. + * + * @param {string} digest - The artifact digest to discover (e.g., "sha256:abc123...") + * @param {string} [kind=''] - Optional filter by material kind (e.g., "CONTAINER_IMAGE", "ATTESTATION") + * @returns {Object} Information about the discovered artifact and its references + * @throws {Error} If the discovery fails + * + * @example + * // Discover all references for a container image + * const digest = "sha256:abc123..."; + * try { + * const result = discover(digest); + * + * // Check if any referenced attestations have policy violations + * for (const ref of result.references) { + * if (ref.kind === "ATTESTATION") { + * if (ref.metadata.hasPolicyViolations === "true") { + * console.warn(`Attestation ${ref.digest} has policy violations`); + * } + * } + * } + * } catch (err) { + * console.error(`Discovery failed: ${err.message}`); + * } + * + * @example + * // Discover with kind filter + * const result = discover(digest, "ATTESTATION"); + */ +function discover(digest, kind = '') { + const { chainloop_discover } = Host.getFunctions(); + + const digestMem = Memory.fromString(digest); + const kindMem = Memory.fromString(kind); + + const resultOffset = chainloop_discover(digestMem.offset, kindMem.offset); + + if (resultOffset === 0n) { + throw new Error('discover returned error (check if gRPC connection is configured)'); + } + + // Read the result from memory using Memory.find() + const resultMem = Memory.find(resultOffset); + if (!resultMem) { + throw new Error('failed to read discover result from memory'); + } + + try { + return resultMem.readJsonObject(); + } catch (e) { + throw new Error(`failed to parse discover result: ${e.message}`); + } +} + +/** + * DiscoverByDigest is a convenience function that calls discover with no kind filter. + * It retrieves all artifacts related to the given digest regardless of their type. + * + * @param {string} digest - The artifact digest to discover + * @returns {Object} Information about the discovered artifact and its references + * @throws {Error} If the discovery fails + * + * @example + * const result = discoverByDigest("sha256:abc123..."); + */ +function discoverByDigest(digest) { + return discover(digest, ''); +} + +module.exports = { + discover, + discoverByDigest +}; diff --git a/policies/js/src/execute.js b/policies/js/src/execute.js new file mode 100644 index 000000000..b3ddedd16 --- /dev/null +++ b/policies/js/src/execute.js @@ -0,0 +1,48 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const { logError } = require('./logging'); +const { outputResult, fail } = require('./output'); + +/** + * Wrapper function for policy execution that handles errors gracefully. + * + * @param {Function} fn - The policy function to execute + * @returns {number} Exit code (0 for success, 1 for error) + * + * @example + * function Execute() { + * return run(() => { + * const material = getMaterialJSON(); + * const result = success(); + * // ... validation logic ... + * outputResult(result); + * }); + * } + */ +function run(fn) { + try { + fn(); + return 0; + } catch (e) { + logError(`Policy execution failed: ${e.message}`); + outputResult(fail(`Policy execution error: ${e.message}`)); + return 1; + } +} + +module.exports = { + run +}; diff --git a/policies/js/src/http.js b/policies/js/src/http.js new file mode 100644 index 000000000..52c41573a --- /dev/null +++ b/policies/js/src/http.js @@ -0,0 +1,133 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Performs an HTTP GET request. + * Only hostnames configured in the engine's allowed list are accessible. + * + * @param {string} url - The URL to request + * @returns {Object} Response object with {status: number, body: string} + * @throws {Error} If the request fails or hostname is not allowed + * + * @example + * const response = httpGet("https://registry.npmjs.org/lodash"); + * if (response.status === 200) { + * const pkg = JSON.parse(response.body); + * console.log(`Package: ${pkg.name}`); + * } + */ +function httpGet(url) { + const request = { + method: "GET", + url: url + }; + + try { + const response = Http.request(request); + return { + status: response.status, + body: response.body + }; + } catch (e) { + throw new Error(`HTTP GET failed for ${url}: ${e.message}`); + } +} + +/** + * Performs an HTTP GET request and parses the response as JSON. + * + * @param {string} url - The URL to request + * @returns {Object} The parsed JSON response + * @throws {Error} If the request fails or response is not valid JSON + * + * @example + * const pkg = httpGetJSON("https://registry.npmjs.org/lodash"); + * console.log(`Latest version: ${pkg['dist-tags'].latest}`); + */ +function httpGetJSON(url) { + const response = httpGet(url); + + if (response.status !== 200) { + throw new Error(`HTTP request failed with status ${response.status}`); + } + + try { + return JSON.parse(response.body); + } catch (e) { + throw new Error(`Failed to parse response as JSON: ${e.message}`); + } +} + +/** + * Performs an HTTP POST request. + * + * @param {string} url - The URL to request + * @param {string} body - The request body + * @returns {Object} Response object with {status: number, body: string} + * @throws {Error} If the request fails + * + * @example + * const response = httpPost("https://api.example.com/validate", jsonData); + */ +function httpPost(url, body) { + const request = { + method: "POST", + url: url, + body: body + }; + + try { + const response = Http.request(request); + return { + status: response.status, + body: response.body + }; + } catch (e) { + throw new Error(`HTTP POST failed for ${url}: ${e.message}`); + } +} + +/** + * Performs an HTTP POST request with JSON body and response. + * + * @param {string} url - The URL to request + * @param {Object} requestBody - The object to send as JSON + * @returns {Object} The parsed JSON response + * @throws {Error} If the request fails or response is not valid JSON + * + * @example + * const result = httpPostJSON("https://api.example.com/validate", {data: "test"}); + */ +function httpPostJSON(url, requestBody) { + const body = JSON.stringify(requestBody); + const response = httpPost(url, body); + + if (response.status !== 200) { + throw new Error(`HTTP request failed with status ${response.status}`); + } + + try { + return JSON.parse(response.body); + } catch (e) { + throw new Error(`Failed to parse response as JSON: ${e.message}`); + } +} + +module.exports = { + httpGet, + httpGetJSON, + httpPost, + httpPostJSON +}; diff --git a/policies/js/src/index.d.ts b/policies/js/src/index.d.ts new file mode 100644 index 000000000..4c8d519c0 --- /dev/null +++ b/policies/js/src/index.d.ts @@ -0,0 +1,82 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Chainloop Policy SDK for JavaScript/TypeScript + * Type definitions for policy development with Extism + */ + +// Material Extraction +export function getMaterialJSON(): T; +export function getMaterialString(): string; +export function getMaterialBytes(): Uint8Array; + +// Arguments +export function getArgs(): Record; +export function getArgString(key: string): string | undefined; +export function getArgStringDefault(key: string, defaultValue: string): string; + +// Logging +export function logInfo(message: string): void; +export function logDebug(message: string): void; +export function logWarn(message: string): void; +export function logError(message: string): void; + +// HTTP +export interface HttpResponse { + status: number; + body: string; +} + +export function httpGet(url: string): HttpResponse; +export function httpGetJSON(url: string): T; +export function httpPost(url: string, body: string): HttpResponse; +export function httpPostJSON(url: string, requestBody: T): R; + +// Artifact Discovery +export interface DiscoverReference { + digest: string; + kind: string; + metadata: Record; +} + +export interface DiscoverResult { + digest: string; + kind: string; + references: DiscoverReference[]; +} + +export function discover(digest: string, kind?: string): DiscoverResult; +export function discoverByDigest(digest: string): DiscoverResult; + +// Results +export interface Result { + skipped: boolean; + violations: string[]; + skip_reason: string; + ignore: boolean; + + addViolation(message: string): void; + hasViolations(): boolean; + isSuccess(): boolean; +} + +export function success(): Result; +export function fail(...violations: string[]): Result; +export function skip(reason: string): Result; +export function outputResult(result: Result): void; + +// Execution +export function run(fn: () => void): number; diff --git a/policies/js/src/index.js b/policies/js/src/index.js new file mode 100644 index 000000000..022748559 --- /dev/null +++ b/policies/js/src/index.js @@ -0,0 +1,107 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Chainloop Policy SDK for JavaScript + * + * High-level SDK for writing Chainloop WASM policies in JavaScript/TypeScript. + * Built on top of the Extism JS PDK. + * + * @module chainloop-policy-sdk + */ + +// Import all functions from separate modules +const { + getMaterialJSON, + getMaterialString, + getMaterialBytes +} = require('./material'); + +const { + getArgs, + getArgString, + getArgStringDefault +} = require('./args'); + +const { + logInfo, + logDebug, + logWarn, + logError +} = require('./logging'); + +const { + httpGet, + httpGetJSON, + httpPost, + httpPostJSON +} = require('./http'); + +const { + success, + fail, + skip +} = require('./result'); + +const { + outputResult +} = require('./output'); + +const { + run +} = require('./execute'); + +const { + discover, + discoverByDigest +} = require('./discover'); + +// Re-export all functions +module.exports = { + // Material extraction + getMaterialJSON, + getMaterialString, + getMaterialBytes, + + // Arguments + getArgs, + getArgString, + getArgStringDefault, + + // Logging + logInfo, + logDebug, + logWarn, + logError, + + // HTTP + httpGet, + httpGetJSON, + httpPost, + httpPostJSON, + + // Artifact Discovery + discover, + discoverByDigest, + + // Results + success, + fail, + skip, + outputResult, + + // Execution + run +}; diff --git a/policies/js/src/logging.js b/policies/js/src/logging.js new file mode 100644 index 000000000..4d2e15fca --- /dev/null +++ b/policies/js/src/logging.js @@ -0,0 +1,73 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Logs an informational message. + * Visible in CLI output at INFO level and above. + * + * @param {string} message - The message to log + * + * @example + * logInfo("Processing 42 components"); + */ +function logInfo(message) { + console.info(message); +} + +/** + * Logs a debug message. + * Visible in CLI output with --debug flag. + * + * @param {string} message - The message to log + * + * @example + * logDebug("Component details: " + JSON.stringify(component)); + */ +function logDebug(message) { + console.debug(message); +} + +/** + * Logs a warning message. + * Visible in CLI output at WARN level and above. + * + * @param {string} message - The message to log + * + * @example + * logWarn("Missing optional field: description"); + */ +function logWarn(message) { + console.warn(message); +} + +/** + * Logs an error message. + * Visible in CLI output at ERROR level and above. + * + * @param {string} message - The message to log + * + * @example + * logError("Failed to validate package: " + packageName); + */ +function logError(message) { + console.error(message); +} + +module.exports = { + logInfo, + logDebug, + logWarn, + logError +}; diff --git a/policies/js/src/material.js b/policies/js/src/material.js new file mode 100644 index 000000000..5b471f78f --- /dev/null +++ b/policies/js/src/material.js @@ -0,0 +1,66 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Retrieves the material as a JSON object. + * The material is the main input data passed to the policy for validation. + * + * @returns {Object} The parsed JSON material + * @throws {Error} If the material cannot be parsed as JSON + * + * @example + * const sbom = getMaterialJSON(); + * console.log(`Processing ${sbom.components.length} components`); + */ +function getMaterialJSON() { + const materialStr = Host.inputString(); + try { + return JSON.parse(materialStr); + } catch (e) { + throw new Error(`Failed to parse material as JSON: ${e.message}`); + } +} + +/** + * Retrieves the material as a raw string. + * + * @returns {string} The material as a string + * + * @example + * const text = getMaterialString(); + * console.log(`Material length: ${text.length}`); + */ +function getMaterialString() { + return Host.inputString(); +} + +/** + * Retrieves the material as raw bytes. + * + * @returns {Uint8Array} The material as bytes + * + * @example + * const bytes = getMaterialBytes(); + * console.log(`Material size: ${bytes.length} bytes`); + */ +function getMaterialBytes() { + return Host.inputBytes(); +} + +module.exports = { + getMaterialJSON, + getMaterialString, + getMaterialBytes +}; diff --git a/policies/js/src/output.js b/policies/js/src/output.js new file mode 100644 index 000000000..d202e9e10 --- /dev/null +++ b/policies/js/src/output.js @@ -0,0 +1,49 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const { success, fail, skip } = require('./result'); + +/** + * Outputs a policy result as JSON. + * This should be called at the end of policy execution. + * + * @param {Object} result - The result object (from success(), fail(), or skip()) + * + * @example + * const result = success(); + * if (sbom.components.length === 0) { + * result.addViolation("SBOM must have components"); + * } + * outputResult(result); + */ +function outputResult(result) { + // Convert result to plain object for JSON serialization + const output = { + skipped: result.skipped, + violations: result.violations, + skip_reason: result.skip_reason, + ignore: result.ignore + }; + + Host.outputString(JSON.stringify(output)); +} + +module.exports = { + outputResult, + // Re-export result builders for convenience + success, + fail, + skip +}; diff --git a/policies/js/src/result.js b/policies/js/src/result.js new file mode 100644 index 000000000..99f9e3815 --- /dev/null +++ b/policies/js/src/result.js @@ -0,0 +1,126 @@ +// +// Copyright 2025 The Chainloop Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * Creates a successful result (no violations, not skipped). + * + * @returns {Object} A success result + * + * @example + * const result = success(); + * result.addViolation("Found an issue"); + * outputResult(result); + */ +function success() { + return { + skipped: false, + violations: [], + skip_reason: "", + ignore: false, + + /** + * Adds a violation message to the result. + * @param {string} message - The violation message + */ + addViolation(message) { + this.violations.push(message); + }, + + /** + * Returns true if there are any violations. + * @returns {boolean} + */ + hasViolations() { + return this.violations.length > 0; + }, + + /** + * Returns true if the policy passed (no violations, not skipped). + * @returns {boolean} + */ + isSuccess() { + return !this.skipped && this.violations.length === 0; + } + }; +} + +/** + * Creates a failed result with one or more violations. + * + * @param {...string} violations - One or more violation messages + * @returns {Object} A failure result + * + * @example + * const result = fail("Missing field: name", "Invalid version format"); + * outputResult(result); + */ +function fail(...violations) { + return { + skipped: false, + violations: violations, + skip_reason: "", + ignore: false, + + addViolation(message) { + this.violations.push(message); + }, + + hasViolations() { + return this.violations.length > 0; + }, + + isSuccess() { + return false; + } + }; +} + +/** + * Creates a skipped result with a reason. + * Use this when the policy doesn't apply to the material. + * + * @param {string} reason - The reason for skipping + * @returns {Object} A skip result + * + * @example + * const result = skip("Not a CycloneDX SBOM"); + * outputResult(result); + */ +function skip(reason) { + return { + skipped: true, + violations: [], + skip_reason: reason, + ignore: false, + + addViolation(message) { + this.violations.push(message); + }, + + hasViolations() { + return this.violations.length > 0; + }, + + isSuccess() { + return false; + } + }; +} + +module.exports = { + success, + fail, + skip +};