Repository: akuity/kargo

Issue:
Utilize pre-defined annotation keys from OCI Image Format Specification
The OCI Image Format Specification [defines a set of annotation keys](https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys) that can be used to attach metadata (like the source of an artifact, or the build timestamp) in a standardized manner to a container image (or OCI artifact).

Some of these are interesting to Kargo to improve (for example, _build_ time instead of _push_ time for sorting), enrich (for example, determining the source of a container image for other registries than GHCR), or further extend the metadata we gather for an image artifact which is part of a Freight.

As the adoption of this is quite mature <sup>[1][], [2][]</sup>, I think it would be wonderful to see if and how we can better utilize these within Kargo.

[1]: https://github.com/search?q=org.opencontainers.image.source&type=code
[2]: https://github.com/search?q=org.opencontainers.image.created&type=code

Discussion:
@krancour: I especially like the potential to use this to connect the dots from an image back to the repo with the source the image was built from.@jessesuen: Love this idea. 

It's always been a goal to somehow link back to original source code so that users know the contents of what they were promoting. This is why [the GitRepoURL field exists](https://github.com/akuity/kargo/blob/main/api/v1alpha1/warehouse_types.go#L204-L211) (which isn't really used).

 `org.opencontainers.image.source` would be a much better way to do this.@hiddeco: That's indeed also one of the use cases I had in mind myself.

The other one, is starting to use `org.opencontainers.image.created` instead of the (push) timestamp we receive from the registry when we order by build time. The advantage of this, is that these annotations can be transferred to _any_ other registry, which could prevent potential issues when people move to e.g. an in-cluster mirror or a different registry host.@jessesuen: I think this feature can be as simple as surfacing OCI metadata into the freight. Then, other Kargo features (https://github.com/akuity/kargo/issues/2830, https://github.com/akuity/kargo/issues/821) will take advantage of that metadata as UI or git commit features.@github-actions: This issue has been automatically marked as stale because it had no activity for 90 days. It will be closed if no activity occurs in the next 30 days but can be reopened if it becomes relevant again.@krancour: As far as I can tell, #3676 closed this issue. There are other open issues tracking ways in which we can further capitalize on this improvement, but I _think_ this specific issue is addressed. @hiddeco or @jessesuen please feel free to re-open if you think I've got that wrong.

Solution patch:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 2e69d055..b7f71240 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -56,6 +56,24 @@ updates:
         update-types:
         - "major"
 
+  - package-ecosystem: "gomod"
+    directory: "/api"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    commit-message:
+      prefix: "chore(deps/api):"
+    groups:
+      go-patch:
+        update-types:
+        - "patch"
+      go-minor:
+        update-types:
+        - "minor"
+      go-major:
+        update-types:
+        - "major"
+
   - package-ecosystem: "gomod"
     directory: "/hack/tools"
     schedule:
@@ -75,3 +93,21 @@ updates:
       go-major:
         update-types:
           - "major"
+
+  - package-ecosystem: "gomod"
+    directory: "/pkg"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    commit-message:
+      prefix: "chore(deps/pkg):"
+    groups:
+      go-patch:
+        update-types:
+        - "patch"
+      go-minor:
+        update-types:
+        - "minor"
+      go-major:
+        update-types:
+        - "major"
diff --git a/api/v1alpha1/generated.pb.go b/api/v1alpha1/generated.pb.go
index cc6a5044..318a4af1 100644
--- a/api/v1alpha1/generated.pb.go
+++ b/api/v1alpha1/generated.pb.go
@@ -1870,6 +1870,7 @@ func init() {
 	proto.RegisterType((*DiscoveredArtifacts)(nil), "github.com.akuity.kargo.api.v1alpha1.DiscoveredArtifacts")
 	proto.RegisterType((*DiscoveredCommit)(nil), "github.com.akuity.kargo.api.v1alpha1.DiscoveredCommit")
 	proto.RegisterType((*DiscoveredImageReference)(nil), "github.com.akuity.kargo.api.v1alpha1.DiscoveredImageReference")
+	proto.RegisterMapType((map[string]string)(nil), "github.com.akuity.kargo.api.v1alpha1.DiscoveredImageReference.AnnotationsEntry")
 	proto.RegisterType((*Freight)(nil), "github.com.akuity.kargo.api.v1alpha1.Freight")
 	proto.RegisterType((*FreightCollection)(nil), "github.com.akuity.kargo.api.v1alpha1.FreightCollection")
 	proto.RegisterMapType((map[string]FreightReference)(nil), "github.com.akuity.kargo.api.v1alpha1.FreightCollection.ItemsEntry")
@@ -1888,6 +1889,7 @@ func init() {
 	proto.RegisterType((*Health)(nil), "github.com.akuity.kargo.api.v1alpha1.Health")
 	proto.RegisterType((*HealthCheckStep)(nil), "github.com.akuity.kargo.api.v1alpha1.HealthCheckStep")
 	proto.RegisterType((*Image)(nil), "github.com.akuity.kargo.api.v1alpha1.Image")
+	proto.RegisterMapType((map[string]string)(nil), "github.com.akuity.kargo.api.v1alpha1.Image.AnnotationsEntry")
 	proto.RegisterType((*ImageDiscoveryResult)(nil), "github.com.akuity.kargo.api.v1alpha1.ImageDiscoveryResult")
 	proto.RegisterType((*ImageSubscription)(nil), "github.com.akuity.kargo.api.v1alpha1.ImageSubscription")
 	proto.RegisterType((*Project)(nil), "github.com.akuity.kargo.api.v1alpha1.Project")
@@ -1929,265 +1931,267 @@ func init() {
 }
 
 var fileDescriptor_e26b7f7bbc391025 = []byte{
-	// 4126 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5c, 0xdd, 0x6f, 0x1c, 0x47,
-	0x72, 0xd7, 0xec, 0x92, 0x4b, 0x6e, 0x2d, 0x29, 0x92, 0x2d, 0xca, 0xe6, 0xd1, 0x31, 0xa9, 0x8c,
-	0x0d, 0xc3, 0x8e, 0xed, 0x65, 0x44, 0x59, 0xb6, 0x2c, 0x1f, 0x14, 0x70, 0x97, 0xfa, 0xa0, 0x8e,
-	0x67, 0x31, 0xbd, 0xb4, 0x7c, 0x96, 0x6d, 0x28, 0xcd, 0xdd, 0xe6, 0xee, 0x1c, 0x77, 0x67, 0xd6,
-	0xd3, 0xbd, 0x3c, 0x33, 0x09, 0x92, 0xcb, 0x17, 0x70, 0x48, 0x90, 0xe0, 0x1e, 0x0c, 0xf8, 0x02,
-	0x24, 0x40, 0x90, 0x3c, 0x1e, 0x92, 0x7f, 0x20, 0x0f, 0x7e, 0xc8, 0x8b, 0x91, 0x18, 0x81, 0x91,
-	0x04, 0x88, 0x03, 0x1c, 0x78, 0x31, 0x0d, 0xe4, 0x31, 0x6f, 0x79, 0x11, 0x10, 0x20, 0xe8, 0x8f,
-	0x99, 0xe9, 0x99, 0x9d, 0x15, 0x77, 0x56, 0xa4, 0xa0, 0xdc, 0x1b, 0xd9, 0xd5, 0xf5, 0xab, 0xee,
-	0xea, 0xae, 0xea, 0xaa, 0xea, 0x9e, 0x85, 0xd7, 0x9a, 0x0e, 0x6f, 0xf5, 0x76, 0xca, 0x75, 0xaf,
-	0xb3, 0x42, 0xf6, 0x7a, 0x0e, 0x3f, 0x58, 0xd9, 0x23, 0x7e, 0xd3, 0x5b, 0x21, 0x5d, 0x67, 0x65,
-	0xff, 0x22, 0x69, 0x77, 0x5b, 0xe4, 0xe2, 0x4a, 0x93, 0xba, 0xd4, 0x27, 0x9c, 0x36, 0xca, 0x5d,
-	0xdf, 0xe3, 0x1e, 0x7a, 0x3e, 0xe2, 0x2a, 0x2b, 0xae, 0xb2, 0xe4, 0x2a, 0x93, 0xae, 0x53, 0x0e,
-	0xb8, 0x16, 0x5f, 0x35, 0xb0, 0x9b, 0x5e, 0xd3, 0x5b, 0x91, 0xcc, 0x3b, 0xbd, 0x5d, 0xf9, 0x9f,
-	0xfc, 0x47, 0xfe, 0xa5, 0x40, 0x17, 0x6f, 0xed, 0x5d, 0x61, 0x65, 0x47, 0x4a, 0xa6, 0x1f, 0x73,
-	0xea, 0x32, 0xc7, 0x73, 0xd9, 0xab, 0xa4, 0xeb, 0x30, 0xea, 0xef, 0x53, 0x7f, 0xa5, 0xbb, 0xd7,
-	0x14, 0x34, 0x16, 0xef, 0xb0, 0xb2, 0xdf, 0x37, 0xbc, 0xc5, 0xd7, 0x22, 0xa4, 0x0e, 0xa9, 0xb7,
-	0x1c, 0x97, 0xfa, 0x07, 0x11, 0x7b, 0x87, 0x72, 0x92, 0xc6, 0xb5, 0x32, 0x88, 0xcb, 0xef, 0xb9,
-	0xdc, 0xe9, 0xd0, 0x3e, 0x86, 0xd7, 0x8f, 0x63, 0x60, 0xf5, 0x16, 0xed, 0x90, 0x24, 0x9f, 0xfd,
-	0x01, 0x9c, 0x5b, 0x73, 0x49, 0xfb, 0x80, 0x39, 0x0c, 0xf7, 0xdc, 0x35, 0xbf, 0xd9, 0xeb, 0x50,
-	0x97, 0xa3, 0x0b, 0x30, 0xe6, 0x92, 0x0e, 0x5d, 0xb0, 0x2e, 0x58, 0x2f, 0x16, 0x2b, 0x53, 0x9f,
-	0x1f, 0x2e, 0x9f, 0x39, 0x3a, 0x5c, 0x1e, 0x7b, 0x9b, 0x74, 0x28, 0x96, 0x14, 0xf4, 0x1c, 0x8c,
-	0xef, 0x93, 0x76, 0x8f, 0x2e, 0xe4, 0x64, 0x97, 0x69, 0xdd, 0x65, 0xfc, 0xae, 0x68, 0xc4, 0x8a,
-	0x66, 0xff, 0x41, 0x3e, 0x06, 0xff, 0x5d, 0xca, 0x49, 0x83, 0x70, 0x82, 0x3a, 0x50, 0x68, 0x93,
-	0x1d, 0xda, 0x66, 0x0b, 0xd6, 0x85, 0xfc, 0x8b, 0xa5, 0xd5, 0xeb, 0xe5, 0x61, 0x16, 0xb1, 0x9c,
-	0x02, 0x55, 0xde, 0x94, 0x38, 0xd7, 0x5d, 0xee, 0x1f, 0x54, 0xce, 0xea, 0x41, 0x14, 0x54, 0x23,
-	0xd6, 0x42, 0xd0, 0xef, 0x59, 0x50, 0x22, 0xae, 0xeb, 0x71, 0xc2, 0xc5, 0x32, 0x2d, 0xe4, 0xa4,
-	0xd0, 0xdb, 0xa3, 0x0b, 0x5d, 0x8b, 0xc0, 0x94, 0xe4, 0x73, 0x5a, 0x72, 0xc9, 0xa0, 0x60, 0x53,
-	0xe6, 0xe2, 0x9b, 0x50, 0x32, 0x86, 0x8a, 0x66, 0x21, 0xbf, 0x47, 0x0f, 0x94, 0x7e, 0xb1, 0xf8,
-	0x13, 0xcd, 0xc7, 0x14, 0xaa, 0x35, 0x78, 0x35, 0x77, 0xc5, 0x5a, 0xbc, 0x06, 0xb3, 0x49, 0x81,
-	0x59, 0xf8, 0xed, 0x3f, 0xb3, 0x60, 0xde, 0x98, 0x05, 0xa6, 0xbb, 0xd4, 0xa7, 0x6e, 0x9d, 0xa2,
-	0x15, 0x28, 0x8a, 0xb5, 0x64, 0x5d, 0x52, 0x0f, 0x96, 0x7a, 0x4e, 0x4f, 0xa4, 0xf8, 0x76, 0x40,
-	0xc0, 0x51, 0x9f, 0x70, 0x5b, 0xe4, 0x1e, 0xb6, 0x2d, 0xba, 0x2d, 0xc2, 0xe8, 0x42, 0x3e, 0xbe,
-	0x2d, 0xb6, 0x44, 0x23, 0x56, 0x34, 0xfb, 0x3e, 0x7c, 0x2b, 0x18, 0xcf, 0x36, 0xed, 0x74, 0xdb,
-	0x84, 0xd3, 0x68, 0x50, 0xc7, 0x6f, 0xbd, 0x0b, 0x30, 0xb6, 0xe7, 0xb8, 0x8d, 0xe4, 0x28, 0xbe,
-	0xe3, 0xb8, 0x0d, 0x2c, 0x29, 0xf6, 0x1e, 0x4c, 0xaf, 0x75, 0xbb, 0xbe, 0xb7, 0x4f, 0x1b, 0x35,
-	0x4e, 0x9a, 0x14, 0xdd, 0x03, 0x20, 0xba, 0x61, 0x8d, 0x4b, 0xe8, 0xd2, 0xea, 0xaf, 0x94, 0x95,
-	0xcd, 0x94, 0x4d, 0x9b, 0x29, 0x77, 0xf7, 0x9a, 0xa2, 0x81, 0x95, 0x85, 0x69, 0x96, 0xf7, 0x2f,
-	0x96, 0xb7, 0x9d, 0x0e, 0xad, 0x9c, 0x3d, 0x3a, 0x5c, 0x86, 0xb5, 0x10, 0x01, 0x1b, 0x68, 0xf6,
-	0xef, 0x5b, 0x70, 0x7e, 0xcd, 0x6f, 0x7a, 0xd5, 0xf5, 0xb5, 0x6e, 0xf7, 0x16, 0x25, 0x6d, 0xde,
-	0xaa, 0x71, 0xc2, 0x7b, 0x0c, 0x5d, 0x83, 0x02, 0x93, 0x7f, 0xe9, 0xc9, 0xbc, 0x10, 0xec, 0x4f,
-	0x45, 0x7f, 0x70, 0xb8, 0x3c, 0x9f, 0xc2, 0x48, 0xb1, 0xe6, 0x42, 0x2f, 0xc1, 0x44, 0x87, 0x32,
-	0x46, 0x9a, 0x81, 0xc6, 0x67, 0x34, 0xc0, 0xc4, 0x77, 0x55, 0x33, 0x0e, 0xe8, 0xf6, 0x3f, 0xe6,
-	0x60, 0x26, 0xc4, 0xd2, 0xe2, 0x4f, 0x61, 0x79, 0x7b, 0x30, 0xd5, 0x32, 0x66, 0x28, 0x57, 0xb9,
-	0xb4, 0xfa, 0xd6, 0x90, 0x96, 0x94, 0xa6, 0xa4, 0xca, 0xbc, 0x16, 0x33, 0x65, 0xb6, 0xe2, 0x98,
-	0x18, 0xd4, 0x01, 0x60, 0x07, 0x6e, 0x5d, 0x0b, 0x1d, 0x93, 0x42, 0xdf, 0xcc, 0x28, 0xb4, 0x16,
-	0x02, 0x54, 0x90, 0x16, 0x09, 0x51, 0x1b, 0x36, 0x04, 0xd8, 0x7f, 0x67, 0xc1, 0xb9, 0x14, 0x3e,
-	0xf4, 0xed, 0xc4, 0x7a, 0x3e, 0xdf, 0xb7, 0x9e, 0xa8, 0x8f, 0x2d, 0x5a, 0xcd, 0x57, 0x60, 0xd2,
-	0xa7, 0xfb, 0x8e, 0x38, 0x29, 0xb4, 0x86, 0x67, 0x35, 0xff, 0x24, 0xd6, 0xed, 0x38, 0xec, 0x81,
-	0x5e, 0x86, 0x62, 0xf0, 0xb7, 0x50, 0x73, 0x5e, 0x18, 0x93, 0x58, 0xb8, 0xa0, 0x2b, 0xc3, 0x11,
-	0xdd, 0xfe, 0x5d, 0x18, 0xaf, 0xb6, 0x88, 0xcf, 0xc5, 0x8e, 0xf1, 0x69, 0xd7, 0x7b, 0x07, 0x6f,
-	0xea, 0x21, 0x86, 0x3b, 0x06, 0xab, 0x66, 0x1c, 0xd0, 0x87, 0x58, 0xec, 0x97, 0x60, 0x62, 0x9f,
-	0xfa, 0x72, 0xbc, 0xf9, 0x38, 0xd8, 0x5d, 0xd5, 0x8c, 0x03, 0xba, 0xfd, 0xaf, 0x16, 0xcc, 0xcb,
-	0x11, 0xac, 0x3b, 0xac, 0xee, 0xed, 0x53, 0xff, 0x00, 0x53, 0xd6, 0x6b, 0x9f, 0xf0, 0x80, 0xd6,
-	0x61, 0x96, 0xd1, 0xce, 0x3e, 0xf5, 0xab, 0x9e, 0xcb, 0xb8, 0x4f, 0x1c, 0x97, 0xeb, 0x91, 0x2d,
-	0xe8, 0xde, 0xb3, 0xb5, 0x04, 0x1d, 0xf7, 0x71, 0xa0, 0x17, 0x61, 0x52, 0x0f, 0x5b, 0x6c, 0x25,
-	0xa1, 0xd8, 0x29, 0xb1, 0x06, 0x7a, 0x4e, 0x0c, 0x87, 0x54, 0xfb, 0xbf, 0x2c, 0x98, 0x93, 0xb3,
-	0xaa, 0xf5, 0x76, 0x58, 0xdd, 0x77, 0xba, 0xc2, 0x01, 0x3f, 0x89, 0x53, 0xba, 0x06, 0x67, 0x1b,
-	0x81, 0xe2, 0x37, 0x9d, 0x8e, 0xc3, 0xa5, 0x8d, 0x8c, 0x57, 0x9e, 0xd2, 0x18, 0x67, 0xd7, 0x63,
-	0x54, 0x9c, 0xe8, 0xad, 0x96, 0xaf, 0xdd, 0x63, 0x9c, 0xfa, 0x5b, 0xbe, 0xd7, 0xf1, 0xc4, 0x3c,
-	0xb7, 0x09, 0xdb, 0x43, 0xbf, 0x01, 0x93, 0x1d, 0x7d, 0xe8, 0x69, 0xaf, 0xf9, 0xab, 0xc3, 0x79,
-	0xcd, 0x3b, 0x3b, 0xdf, 0xa7, 0x75, 0x2e, 0x0e, 0xcc, 0xc8, 0xda, 0xa2, 0x36, 0x1c, 0xa2, 0xa2,
-	0xf7, 0x60, 0x8c, 0x75, 0x69, 0x5d, 0xaa, 0xa8, 0xb4, 0xfa, 0xc6, 0x70, 0x46, 0x1d, 0x1b, 0x64,
-	0xad, 0x4b, 0xeb, 0x91, 0x6e, 0xc5, 0x7f, 0x58, 0x42, 0xda, 0xff, 0x61, 0xc1, 0x42, 0xda, 0xac,
-	0x36, 0x1d, 0xc6, 0xd1, 0x07, 0x7d, 0x33, 0x2b, 0x0f, 0x37, 0x33, 0xc1, 0x2d, 0xe7, 0x15, 0x5a,
-	0x6f, 0xd0, 0x62, 0xcc, 0xea, 0x3e, 0x8c, 0x3b, 0x9c, 0x76, 0x82, 0x50, 0xe3, 0xea, 0x70, 0xd3,
-	0x4a, 0x1b, 0x6c, 0x74, 0x84, 0x6e, 0x08, 0x40, 0xac, 0x70, 0xed, 0xf7, 0x61, 0xaa, 0xda, 0xf3,
-	0x7d, 0xea, 0x72, 0x75, 0xc0, 0x7d, 0x07, 0xc6, 0x99, 0xe3, 0x6a, 0x3f, 0x9f, 0xed, 0x6c, 0x2b,
-	0x0a, 0xf0, 0x9a, 0x60, 0xc6, 0x0a, 0xc3, 0xfe, 0x8b, 0x3c, 0x9c, 0x0b, 0x76, 0x0c, 0x6d, 0xac,
-	0xf9, 0xdc, 0xd9, 0x25, 0x75, 0xce, 0x50, 0x03, 0xa6, 0x1a, 0x51, 0x33, 0xd7, 0x8e, 0x38, 0x8b,
-	0xac, 0xd0, 0xd9, 0x1b, 0xf0, 0x1c, 0xc7, 0x50, 0xd1, 0xbb, 0x90, 0x6f, 0x3a, 0x5c, 0x47, 0x86,
-	0x57, 0x86, 0xd3, 0xdc, 0x4d, 0x27, 0xe9, 0x79, 0x2a, 0x25, 0x2d, 0x2a, 0x7f, 0xd3, 0xe1, 0x58,
-	0x20, 0xa2, 0x1d, 0x28, 0x38, 0x1d, 0xd2, 0xa4, 0x19, 0x57, 0x65, 0x43, 0xf0, 0x24, 0xd1, 0xc3,
-	0x50, 0x53, 0x52, 0x19, 0xd6, 0xc8, 0x42, 0x46, 0x5d, 0x78, 0x0c, 0xe5, 0xb3, 0x87, 0x5f, 0xf9,
-	0x14, 0xdf, 0x19, 0xc9, 0x90, 0x54, 0x86, 0x35, 0xb2, 0xfd, 0x55, 0x0e, 0x66, 0x23, 0xfd, 0x55,
-	0xbd, 0x4e, 0xc7, 0xe1, 0x68, 0x11, 0x72, 0x4e, 0x43, 0x3b, 0x24, 0xd0, 0x8c, 0xb9, 0x8d, 0x75,
-	0x9c, 0x73, 0x1a, 0xe8, 0x05, 0x28, 0xec, 0xf8, 0xc4, 0xad, 0xb7, 0xb4, 0x23, 0x0a, 0x81, 0x2b,
-	0xb2, 0x15, 0x6b, 0x2a, 0x7a, 0x16, 0xf2, 0x9c, 0x34, 0xb5, 0xff, 0x09, 0xf5, 0xb7, 0x4d, 0x9a,
-	0x58, 0xb4, 0x0b, 0xc7, 0xc7, 0x7a, 0xd2, 0x86, 0xe5, 0xca, 0x1b, 0x8e, 0xaf, 0xa6, 0x9a, 0x71,
-	0x40, 0x17, 0x12, 0x49, 0x8f, 0xb7, 0x3c, 0x7f, 0x61, 0x3c, 0x2e, 0x71, 0x4d, 0xb6, 0x62, 0x4d,
-	0x15, 0x21, 0x4a, 0x5d, 0x8e, 0x9f, 0x53, 0x7f, 0xa1, 0x10, 0x0f, 0x51, 0xaa, 0x01, 0x01, 0x47,
-	0x7d, 0xd0, 0x87, 0x50, 0xaa, 0xfb, 0x94, 0x70, 0xcf, 0x5f, 0x27, 0x9c, 0x2e, 0x4c, 0x64, 0xde,
-	0x81, 0x33, 0x22, 0x4a, 0xaf, 0x46, 0x10, 0xd8, 0xc4, 0xb3, 0xff, 0xdb, 0x82, 0x85, 0x48, 0xb5,
-	0x72, 0x6d, 0xa3, 0xc8, 0x54, 0xab, 0xc7, 0x1a, 0xa0, 0x9e, 0x17, 0xa0, 0xd0, 0x70, 0x9a, 0x94,
-	0xf1, 0xa4, 0x96, 0xd7, 0x65, 0x2b, 0xd6, 0x54, 0xb4, 0x0a, 0xd0, 0x74, 0xb8, 0x3e, 0x2b, 0xb4,
-	0xb2, 0x43, 0x1f, 0x79, 0x33, 0xa4, 0x60, 0xa3, 0x17, 0x7a, 0x17, 0x8a, 0x72, 0x98, 0x23, 0x9a,
-	0x9d, 0x8c, 0x1c, 0xaa, 0x01, 0x00, 0x8e, 0xb0, 0xec, 0x2f, 0xc7, 0x60, 0xe2, 0x86, 0x4f, 0x9d,
-	0x66, 0x8b, 0x3f, 0x06, 0x67, 0xff, 0x1c, 0x8c, 0x93, 0xb6, 0x43, 0x98, 0x5c, 0x37, 0x23, 0x3b,
-	0x58, 0x13, 0x8d, 0x58, 0xd1, 0xd0, 0xfb, 0x50, 0xf0, 0x7c, 0xa7, 0xe9, 0xb8, 0x0b, 0x45, 0x39,
-	0x88, 0x4b, 0xc3, 0x99, 0x90, 0x9e, 0xc5, 0x1d, 0xc9, 0x1a, 0x29, 0x5f, 0xfd, 0x8f, 0x35, 0x24,
-	0xba, 0x07, 0x13, 0x6a, 0x33, 0x05, 0x06, 0xba, 0x32, 0xb4, 0x83, 0x51, 0xfb, 0x31, 0xda, 0xf4,
-	0xea, 0x7f, 0x86, 0x03, 0x40, 0x54, 0x0b, 0xfd, 0xcb, 0x98, 0x84, 0x7e, 0x39, 0x83, 0x7f, 0x19,
-	0xe8, 0x50, 0x6a, 0xa1, 0x43, 0x19, 0xcf, 0x02, 0x2a, 0x5d, 0xc6, 0x20, 0x0f, 0x22, 0x54, 0xac,
-	0x03, 0xd9, 0xc2, 0x08, 0x2a, 0xd6, 0x51, 0xf4, 0xd9, 0x78, 0xf4, 0x1b, 0xc4, 0xb9, 0xf6, 0x27,
-	0x79, 0x98, 0xd3, 0x3d, 0xab, 0x5e, 0xbb, 0x4d, 0xeb, 0x32, 0x6a, 0x52, 0xfe, 0x29, 0x9f, 0xea,
-	0x9f, 0x9c, 0xe0, 0xb4, 0x54, 0x3e, 0xbf, 0x92, 0x69, 0x34, 0x91, 0x8c, 0xb2, 0x3c, 0x21, 0x55,
-	0x42, 0x1e, 0xae, 0x92, 0xee, 0xa5, 0xcf, 0x4d, 0xf4, 0x47, 0x16, 0x9c, 0xdb, 0xa7, 0xbe, 0xb3,
-	0xeb, 0xd4, 0x65, 0x3a, 0x7d, 0xcb, 0x61, 0xdc, 0xf3, 0x0f, 0xf4, 0x89, 0xf0, 0xfa, 0x70, 0x92,
-	0xef, 0x1a, 0x00, 0x1b, 0xee, 0xae, 0x57, 0x79, 0x46, 0x4b, 0x3b, 0x77, 0xb7, 0x1f, 0x1a, 0xa7,
-	0xc9, 0x5b, 0xec, 0x02, 0x44, 0xa3, 0x4d, 0xc9, 0xe6, 0x37, 0xcd, 0x6c, 0x7e, 0xe8, 0x81, 0x05,
-	0x93, 0x0d, 0x5c, 0x96, 0x59, 0x05, 0xf8, 0xcc, 0x82, 0x92, 0xa6, 0x3f, 0x86, 0x00, 0x08, 0xc7,
-	0x03, 0xa0, 0x57, 0x33, 0x8d, 0x7f, 0x40, 0xcc, 0xe3, 0xc3, 0x74, 0xcc, 0xc8, 0xd1, 0x65, 0x5d,
-	0x08, 0x50, 0x1e, 0xf9, 0x97, 0xcd, 0x42, 0xc0, 0x83, 0xc3, 0xe5, 0xb9, 0x58, 0xe7, 0xa8, 0x3a,
-	0x70, 0x7c, 0x54, 0x7e, 0x75, 0xf2, 0x27, 0x7f, 0xb5, 0x7c, 0xe6, 0x87, 0x3f, 0xbb, 0x70, 0xc6,
-	0xfe, 0x34, 0x0f, 0xb3, 0x49, 0xad, 0x0e, 0x51, 0xa2, 0x88, 0x7c, 0xd8, 0xe4, 0xa9, 0xfa, 0xb0,
-	0xdc, 0xe9, 0xf9, 0xb0, 0xfc, 0x69, 0xf8, 0xb0, 0xb1, 0x13, 0xf3, 0x61, 0xf6, 0x3f, 0x5b, 0x70,
-	0x36, 0x5c, 0x99, 0x8f, 0x7a, 0xe2, 0x64, 0x8d, 0xb4, 0x6e, 0x9d, 0xbc, 0xd6, 0xef, 0xc3, 0x04,
-	0xf3, 0x7a, 0x7e, 0x5d, 0x86, 0x8f, 0x02, 0xfd, 0xb5, 0x6c, 0x4e, 0x53, 0xf1, 0x1a, 0x31, 0x93,
-	0x6a, 0xc0, 0x01, 0xaa, 0xfd, 0x59, 0x2e, 0x9c, 0x90, 0xa6, 0xa9, 0x90, 0xc2, 0x17, 0x01, 0x97,
-	0x98, 0xd0, 0xa4, 0x19, 0x52, 0x88, 0x56, 0xac, 0xa9, 0xc8, 0x96, 0xfe, 0x3c, 0x88, 0x6c, 0x8b,
-	0x15, 0xd0, 0x6e, 0x59, 0x2e, 0x82, 0xa2, 0xa0, 0x2e, 0xcc, 0xfa, 0xf4, 0xa3, 0x9e, 0xe3, 0xd3,
-	0x46, 0xcd, 0x23, 0x7b, 0x22, 0x2e, 0xd0, 0xe5, 0x9b, 0x21, 0xed, 0x7e, 0xbd, 0xe7, 0x4b, 0x17,
-	0x56, 0x99, 0x17, 0x59, 0x29, 0x4e, 0x60, 0xe1, 0x3e, 0x74, 0xe4, 0xc1, 0x3c, 0xd9, 0x27, 0x4e,
-	0x9b, 0xec, 0x38, 0x6d, 0x87, 0x1f, 0xd4, 0xb8, 0x4f, 0x38, 0x6d, 0x1e, 0xe8, 0xe0, 0xf1, 0x2d,
-	0x3d, 0x97, 0xf9, 0xb5, 0x94, 0x3e, 0x0f, 0x0e, 0x97, 0x9f, 0xd1, 0xba, 0x48, 0x23, 0xe3, 0x54,
-	0x60, 0xfb, 0xe7, 0xe3, 0xa1, 0x87, 0xd0, 0x15, 0x9b, 0xdf, 0x82, 0x52, 0x5d, 0xa5, 0x49, 0xed,
-	0x83, 0x0d, 0x57, 0xef, 0xe9, 0xf5, 0x11, 0x4e, 0xbb, 0x72, 0x35, 0x82, 0x49, 0x94, 0x7c, 0x0d,
-	0x0a, 0x36, 0xa5, 0xa1, 0x1f, 0x00, 0x28, 0xd7, 0x4f, 0x1b, 0x1b, 0xae, 0x3e, 0xdb, 0xaa, 0xa3,
-	0xc8, 0xbe, 0x1b, 0xa2, 0x28, 0xd1, 0x61, 0x90, 0x15, 0x11, 0xb0, 0x21, 0x4a, 0xcc, 0x3a, 0xa8,
-	0x4f, 0xde, 0xf0, 0x7c, 0xed, 0x24, 0x46, 0x9a, 0xf5, 0x5a, 0x04, 0x93, 0x2c, 0x74, 0x47, 0x14,
-	0x6c, 0x4a, 0x5b, 0xf4, 0x61, 0x36, 0xa9, 0xab, 0x94, 0xf3, 0xed, 0x56, 0xfc, 0x7c, 0x5b, 0x1d,
-	0xd2, 0x23, 0x18, 0x29, 0xaf, 0x59, 0x21, 0xf7, 0x61, 0x26, 0xa1, 0xa3, 0x14, 0x91, 0x1b, 0x71,
-	0x91, 0x97, 0xb2, 0x9c, 0xf5, 0xba, 0x8e, 0x6c, 0xca, 0x64, 0x30, 0x9b, 0xd4, 0xce, 0x89, 0x09,
-	0x8d, 0x15, 0xaf, 0xcd, 0x43, 0xfc, 0x2f, 0x73, 0x50, 0x0c, 0xdd, 0x78, 0x96, 0x4a, 0x94, 0x0a,
-	0xbf, 0x72, 0xc7, 0xa4, 0x87, 0xf9, 0x61, 0xd2, 0xc3, 0xb1, 0xc1, 0xe9, 0x61, 0x50, 0xad, 0x2e,
-	0x3c, 0xbc, 0x5a, 0x6d, 0xa4, 0x87, 0x13, 0xc3, 0xa7, 0x87, 0x93, 0xc7, 0xa7, 0x87, 0xf6, 0x5f,
-	0x5b, 0x80, 0xfa, 0x6b, 0x01, 0x59, 0x14, 0x45, 0x92, 0x87, 0xeb, 0x90, 0xa1, 0x57, 0x32, 0x21,
-	0x1f, 0x7c, 0xc6, 0xda, 0x9f, 0x8d, 0xc3, 0xcc, 0x4d, 0x67, 0xe4, 0xa2, 0x22, 0x87, 0xa7, 0x15,
-	0x52, 0x8d, 0xea, 0xc0, 0x37, 0xf4, 0xac, 0x6a, 0x7d, 0xaf, 0x6a, 0xd6, 0xa7, 0xab, 0xe9, 0xdd,
-	0x1e, 0x0c, 0x26, 0xe1, 0x41, 0xd0, 0x43, 0x6f, 0x92, 0xb7, 0x60, 0x9a, 0x71, 0xdf, 0xa9, 0x73,
-	0x55, 0xb6, 0x64, 0x0b, 0x25, 0x79, 0x72, 0x9d, 0xd7, 0xdd, 0xa7, 0x6b, 0x26, 0x11, 0xc7, 0xfb,
-	0xa6, 0x56, 0x43, 0xc7, 0x32, 0x57, 0x43, 0x57, 0xa0, 0x48, 0xda, 0x6d, 0xef, 0x07, 0xdb, 0xa4,
-	0xc9, 0x74, 0xfd, 0x21, 0xdc, 0x35, 0x6b, 0x01, 0x01, 0x47, 0x7d, 0x50, 0x19, 0xc0, 0x69, 0xba,
-	0x9e, 0x4f, 0x25, 0x47, 0x41, 0x1e, 0xa1, 0xf2, 0xc6, 0x67, 0x23, 0x6c, 0xc5, 0x46, 0x0f, 0x54,
-	0x83, 0xf3, 0x8e, 0xcb, 0x68, 0xbd, 0xe7, 0xd3, 0xda, 0x9e, 0xd3, 0xdd, 0xde, 0xac, 0x49, 0x2f,
-	0x71, 0x20, 0x77, 0xf3, 0x64, 0xe5, 0x59, 0x2d, 0xec, 0xfc, 0x46, 0x5a, 0x27, 0x9c, 0xce, 0x8b,
-	0x5e, 0x83, 0x29, 0xc7, 0xad, 0xb7, 0x7b, 0x0d, 0xba, 0x45, 0x78, 0x8b, 0x2d, 0x4c, 0xca, 0x61,
-	0xcc, 0x1e, 0x1d, 0x2e, 0x4f, 0x6d, 0x18, 0xed, 0x38, 0xd6, 0x4b, 0x70, 0xd1, 0x8f, 0x0d, 0xae,
-	0x62, 0xc4, 0x75, 0xfd, 0x63, 0x93, 0xcb, 0xec, 0x95, 0x52, 0x2f, 0x86, 0x4c, 0xf5, 0xe2, 0x9f,
-	0xe6, 0xa0, 0xa0, 0xae, 0x6b, 0xd0, 0xe5, 0xc4, 0x9d, 0xc8, 0xb3, 0x7d, 0x77, 0x22, 0xa5, 0xb4,
-	0xab, 0x2d, 0x1b, 0x0a, 0x0e, 0x63, 0xbd, 0x78, 0xc4, 0xb2, 0x21, 0x5b, 0xb0, 0xa6, 0xc8, 0x5a,
-	0x9a, 0xe7, 0xee, 0x3a, 0x4d, 0x5d, 0xf1, 0xb8, 0x66, 0xc4, 0x29, 0xd1, 0xa5, 0xfb, 0xfd, 0xf0,
-	0x56, 0x3e, 0x0a, 0x59, 0x62, 0x1d, 0x44, 0xec, 0x72, 0xbb, 0x76, 0xe7, 0x6d, 0x25, 0xa3, 0x2a,
-	0x11, 0xb1, 0x46, 0x16, 0x32, 0xbc, 0x1e, 0xef, 0xf6, 0xb8, 0xdc, 0x28, 0x27, 0x24, 0xe3, 0x8e,
-	0x44, 0xc4, 0x1a, 0xd9, 0xfe, 0xd4, 0x82, 0x19, 0xa5, 0x83, 0x6a, 0x8b, 0xd6, 0xf7, 0x6a, 0x9c,
-	0x76, 0x45, 0x0a, 0xd1, 0x63, 0x94, 0x25, 0x53, 0x88, 0x77, 0x18, 0x65, 0x58, 0x52, 0x8c, 0xd9,
-	0xe7, 0x4e, 0x6b, 0xf6, 0xf6, 0xdf, 0x5a, 0x30, 0x2e, 0x63, 0xf5, 0x2c, 0xfe, 0x27, 0x5e, 0xbf,
-	0xca, 0x0d, 0x55, 0xbf, 0x3a, 0xa6, 0xb2, 0x18, 0x95, 0xce, 0xc6, 0x1e, 0x56, 0x3a, 0xb3, 0xbf,
-	0xb1, 0x60, 0x3e, 0xad, 0x1c, 0x9b, 0x65, 0xf8, 0xaf, 0xc0, 0x64, 0xb7, 0x4d, 0xf8, 0xae, 0xe7,
-	0x77, 0x92, 0xd7, 0x70, 0x5b, 0xba, 0x1d, 0x87, 0x3d, 0x90, 0x0f, 0xe0, 0x07, 0x79, 0x5f, 0x90,
-	0x13, 0x5d, 0xcb, 0x7a, 0x22, 0xc4, 0xeb, 0x88, 0x91, 0xb2, 0xc2, 0x26, 0x86, 0x0d, 0x29, 0xf6,
-	0x9f, 0x8c, 0xc3, 0x9c, 0x64, 0x19, 0xf5, 0x84, 0x18, 0x65, 0x85, 0xba, 0xf0, 0x94, 0xcc, 0xd6,
-	0xfa, 0x0f, 0x15, 0xb5, 0x68, 0x57, 0x34, 0xff, 0x53, 0x1b, 0xa9, 0xbd, 0x1e, 0x0c, 0xa4, 0xe0,
-	0x01, 0xb8, 0xfd, 0x27, 0x05, 0xfc, 0xe2, 0x9d, 0x14, 0xe6, 0x66, 0x9b, 0x38, 0x76, 0xb3, 0x0d,
-	0x3c, 0x57, 0x26, 0x1f, 0xe1, 0x5c, 0xe9, 0xf7, 0xf5, 0xc5, 0x4c, 0xbe, 0xfe, 0xcf, 0x73, 0x30,
-	0xb1, 0xe5, 0x7b, 0xb2, 0xac, 0x7f, 0xfa, 0x15, 0xe2, 0x3b, 0xb1, 0xeb, 0xc0, 0x8b, 0x43, 0x5f,
-	0x07, 0x0a, 0x28, 0x79, 0x11, 0x38, 0x19, 0xbf, 0x04, 0x34, 0x4a, 0x9d, 0xf9, 0x2c, 0x11, 0x78,
-	0x00, 0xf9, 0xf0, 0x52, 0xe7, 0x67, 0x16, 0x94, 0x74, 0xcf, 0x27, 0xb6, 0xa6, 0xa6, 0xc7, 0x37,
-	0xa0, 0xa6, 0xf6, 0xa7, 0xd1, 0x0c, 0x84, 0xd2, 0xd0, 0xef, 0xc0, 0x5c, 0x37, 0xb8, 0x7e, 0xdc,
-	0xf2, 0xda, 0x4e, 0xdd, 0xa1, 0x41, 0x59, 0xf6, 0x72, 0xc6, 0xbb, 0x59, 0xc9, 0x7e, 0x50, 0xf9,
-	0x96, 0x96, 0x3b, 0xb7, 0x95, 0xc4, 0xc5, 0xfd, 0xa2, 0xec, 0x7f, 0xb3, 0x60, 0x3a, 0xa6, 0x7b,
-	0x54, 0x07, 0xa8, 0x7b, 0x6e, 0xc3, 0xe1, 0xe1, 0x4b, 0x88, 0xd2, 0xea, 0xca, 0x70, 0x5a, 0xad,
-	0x06, 0x7c, 0xd1, 0xa6, 0x0b, 0x9b, 0x18, 0x36, 0x60, 0xd1, 0xa5, 0xe0, 0xd9, 0x52, 0x3c, 0x88,
-	0x51, 0xcf, 0x96, 0x1e, 0x1c, 0x2e, 0x4f, 0xe9, 0x31, 0x99, 0xcf, 0x98, 0xb2, 0x3c, 0xcf, 0xf9,
-	0x9b, 0x1c, 0x14, 0xc3, 0xf9, 0x3f, 0x06, 0x33, 0x7a, 0x27, 0x66, 0x46, 0x97, 0x32, 0xae, 0xdc,
-	0xa0, 0x1b, 0x75, 0xf4, 0x61, 0xc2, 0x98, 0xb2, 0x6e, 0x89, 0x63, 0xcc, 0xe9, 0x1f, 0xd4, 0xe2,
-	0xab, 0xbe, 0x8f, 0xc1, 0xa0, 0xb6, 0xe3, 0x06, 0xb5, 0x92, 0x71, 0x36, 0x03, 0x4c, 0xea, 0x47,
-	0x16, 0xcc, 0x24, 0x8c, 0x00, 0x3d, 0x07, 0xe3, 0xb2, 0x0c, 0xa7, 0xf7, 0x57, 0xc8, 0xa8, 0x13,
-	0x7c, 0x49, 0x43, 0x5b, 0x30, 0x4f, 0x7a, 0xdc, 0x0b, 0x79, 0xaf, 0xbb, 0x64, 0xa7, 0x4d, 0x55,
-	0xd6, 0x3e, 0x59, 0xf9, 0xa5, 0xb0, 0x5e, 0x96, 0xd2, 0x07, 0xa7, 0x72, 0xda, 0x5f, 0xe4, 0x00,
-	0x85, 0x8d, 0x59, 0xea, 0xd7, 0x1f, 0xc2, 0xc4, 0xae, 0x2a, 0x04, 0x3d, 0xda, 0x05, 0x44, 0xa5,
-	0x64, 0xde, 0xc1, 0x04, 0x98, 0xe8, 0xbd, 0x93, 0xd9, 0x47, 0xd0, 0xbf, 0x87, 0xd0, 0x3d, 0x80,
-	0x5d, 0xc7, 0x75, 0x58, 0x6b, 0xc4, 0xab, 0x52, 0x79, 0x9a, 0xdf, 0x08, 0x11, 0xb0, 0x81, 0x66,
-	0x7f, 0x92, 0x33, 0xf6, 0xa7, 0x74, 0x97, 0x43, 0xad, 0xeb, 0x4b, 0x71, 0x65, 0x16, 0xfb, 0x2f,
-	0xa7, 0x0c, 0xc5, 0x8c, 0xed, 0x13, 0x3f, 0xa8, 0x93, 0x67, 0x7d, 0x0d, 0x73, 0x97, 0xf8, 0x8e,
-	0x58, 0xf8, 0x68, 0x49, 0xef, 0x12, 0x9f, 0x61, 0x09, 0x89, 0xbe, 0x27, 0x86, 0x4a, 0xbb, 0x81,
-	0x0b, 0xcd, 0xec, 0x13, 0x38, 0xed, 0x9a, 0xf3, 0xa3, 0x5d, 0x86, 0x15, 0xa0, 0xfd, 0xc9, 0x84,
-	0xb1, 0xe1, 0xb5, 0xd7, 0xbe, 0x0d, 0xa8, 0x4d, 0x18, 0xbf, 0x45, 0xdc, 0x86, 0xd8, 0x9e, 0x74,
-	0xd7, 0xa7, 0xac, 0xa5, 0x23, 0xb4, 0x45, 0x8d, 0x82, 0x36, 0xfb, 0x7a, 0xe0, 0x14, 0x2e, 0x74,
-	0x39, 0xee, 0x9c, 0x97, 0x93, 0xce, 0xf9, 0x6c, 0x64, 0x6d, 0xa3, 0xb9, 0x67, 0x73, 0xbb, 0x8f,
-	0x9f, 0xc2, 0x76, 0xff, 0x6d, 0x98, 0xdb, 0x4d, 0x5e, 0x56, 0xea, 0xa7, 0x0b, 0x6f, 0x8c, 0x78,
-	0xd7, 0x59, 0x39, 0x7f, 0x14, 0xdd, 0x70, 0x45, 0xcd, 0xb8, 0x5f, 0x10, 0xf2, 0x82, 0x37, 0x9b,
-	0x32, 0xfb, 0x54, 0x85, 0x85, 0xa1, 0x4d, 0x2e, 0x91, 0xb7, 0x26, 0x5f, 0x6b, 0x2a, 0x48, 0x1c,
-	0x13, 0x90, 0x30, 0xc1, 0xc2, 0x49, 0x9a, 0x20, 0xba, 0x1c, 0x16, 0xf4, 0xc5, 0x70, 0x64, 0x28,
-	0x9b, 0xef, 0x2b, 0xc5, 0x0b, 0x12, 0x36, 0xfb, 0xa1, 0x1f, 0x5b, 0x70, 0x5e, 0x6c, 0xd6, 0xeb,
-	0x1f, 0xd3, 0x7a, 0x4f, 0x68, 0x25, 0x78, 0xca, 0xbd, 0x50, 0x92, 0xda, 0x18, 0xf2, 0x05, 0x6b,
-	0x2d, 0x0d, 0x22, 0x8a, 0xcb, 0x53, 0xc9, 0x38, 0x5d, 0x30, 0xba, 0x2f, 0x5d, 0x07, 0xa7, 0x32,
-	0xed, 0x79, 0xf4, 0xf4, 0xbe, 0xa8, 0xdd, 0x0e, 0x57, 0x6e, 0x87, 0x53, 0xfb, 0xe7, 0x79, 0xd3,
-	0x5b, 0x0d, 0x57, 0x74, 0xb8, 0x07, 0x63, 0x9c, 0xb0, 0x3d, 0x6d, 0x05, 0xdf, 0x1e, 0xe1, 0x35,
-	0x5e, 0x64, 0x0b, 0x32, 0x12, 0x97, 0x4d, 0x12, 0x13, 0x2d, 0x42, 0x8e, 0xb0, 0x64, 0x09, 0x7a,
-	0x8d, 0xe1, 0x1c, 0x61, 0xb2, 0x3c, 0xbd, 0xab, 0x33, 0xa4, 0xa8, 0x3c, 0xbd, 0x8b, 0x73, 0xce,
-	0x2e, 0x7a, 0x0f, 0xc6, 0x7d, 0xca, 0xfd, 0x03, 0xed, 0xcc, 0xaf, 0x8c, 0xe0, 0xb8, 0xb0, 0xe0,
-	0x57, 0x2a, 0x92, 0x7f, 0x62, 0x85, 0x18, 0xba, 0xdb, 0xc2, 0xc9, 0xbb, 0xdb, 0xa8, 0x7c, 0x93,
-	0x3f, 0xb5, 0xf2, 0xcd, 0x4f, 0x2d, 0xe3, 0x78, 0x0f, 0xe7, 0x89, 0xde, 0x81, 0x09, 0xee, 0x74,
-	0xa8, 0xd7, 0xe3, 0xd9, 0x62, 0xa6, 0xf0, 0x82, 0x4f, 0x7a, 0xb1, 0x6d, 0x05, 0x81, 0x03, 0x2c,
-	0x91, 0x48, 0x52, 0xdf, 0xf7, 0xfc, 0xed, 0x96, 0xf0, 0xca, 0x5e, 0x5b, 0x05, 0x26, 0xd3, 0x51,
-	0x22, 0x79, 0x3d, 0x46, 0xc5, 0x89, 0xde, 0xf6, 0x17, 0x66, 0x74, 0xf7, 0xff, 0xff, 0x75, 0xe9,
-	0x3f, 0x59, 0x30, 0xf7, 0xb8, 0x9f, 0x95, 0x7e, 0x2f, 0x1e, 0xb0, 0x5e, 0x1a, 0x61, 0x3e, 0x03,
-	0x82, 0xd6, 0x0f, 0xe0, 0xa9, 0x74, 0x33, 0x3e, 0x91, 0xef, 0x31, 0x3e, 0x4f, 0xea, 0x4a, 0x06,
-	0x4f, 0x81, 0xf5, 0x59, 0xa7, 0x18, 0xec, 0xe4, 0x4e, 0x3a, 0xd8, 0xf1, 0xcd, 0x99, 0xe8, 0x8f,
-	0x57, 0xd0, 0x87, 0x7a, 0x9b, 0x59, 0x59, 0x3e, 0x87, 0xe8, 0x83, 0x19, 0xb8, 0xd5, 0xbe, 0xb0,
-	0xe0, 0x7c, 0x6a, 0xef, 0x50, 0x85, 0xb9, 0x53, 0x54, 0xa1, 0x75, 0xd2, 0x2a, 0xbc, 0x67, 0xa8,
-	0x30, 0x18, 0xc2, 0x49, 0x7d, 0x71, 0xf6, 0x93, 0x1c, 0xcc, 0x62, 0xda, 0xf5, 0x62, 0xa5, 0xd3,
-	0xad, 0xe0, 0x45, 0x71, 0x86, 0x5c, 0x23, 0x71, 0x41, 0x57, 0x99, 0x88, 0x3d, 0x25, 0x16, 0x86,
-	0xd8, 0x09, 0x22, 0xcb, 0xa1, 0x15, 0xdf, 0x57, 0xd4, 0x55, 0x47, 0x92, 0x2a, 0x0f, 0x2b, 0x40,
-	0x81, 0x2c, 0x1f, 0xb8, 0xe8, 0x63, 0xe3, 0x8d, 0x0c, 0x4f, 0x65, 0xfa, 0x91, 0x65, 0x33, 0x56,
-	0x80, 0xf6, 0xa7, 0x39, 0x50, 0x79, 0xc9, 0x63, 0xf0, 0xbb, 0xbf, 0x1e, 0xf3, 0xbb, 0x2b, 0xc3,
-	0x46, 0x57, 0x42, 0x3d, 0x83, 0x6a, 0x0f, 0xc9, 0x9c, 0xf1, 0x62, 0x16, 0xd0, 0x87, 0xd7, 0x1d,
-	0xfe, 0xde, 0x82, 0xa2, 0xec, 0xf7, 0x18, 0x5c, 0xf8, 0x56, 0xdc, 0x85, 0xbf, 0x9c, 0x61, 0x16,
-	0x03, 0x5c, 0xf7, 0x27, 0x79, 0x3d, 0xfa, 0x30, 0x23, 0x6d, 0x11, 0xbf, 0xa1, 0x73, 0xad, 0xc8,
-	0x02, 0x45, 0x23, 0x56, 0x34, 0xf4, 0x9b, 0xea, 0x2d, 0x10, 0x65, 0x9c, 0x36, 0x6e, 0x84, 0x89,
-	0x4f, 0x3e, 0xf3, 0xa3, 0x26, 0xfd, 0xf0, 0x2a, 0xaa, 0xb9, 0xe3, 0x04, 0x2a, 0xee, 0x93, 0x23,
-	0x92, 0xa1, 0x6e, 0xd2, 0x97, 0xe9, 0x24, 0xe1, 0x8d, 0x11, 0x1d, 0xa7, 0x4a, 0x86, 0xfa, 0x9a,
-	0x71, 0xbf, 0x20, 0xd4, 0x82, 0x29, 0xf3, 0x39, 0xa6, 0xde, 0x4b, 0xab, 0xd9, 0xdf, 0x7d, 0xaa,
-	0x3b, 0x56, 0xb3, 0x05, 0xc7, 0x90, 0xed, 0xc3, 0x02, 0x94, 0x8c, 0xcd, 0x97, 0xa8, 0x63, 0x4e,
-	0x9f, 0x4e, 0x1d, 0x33, 0x3d, 0xed, 0x2e, 0x8d, 0x94, 0x76, 0x5f, 0x8c, 0xa7, 0xdd, 0xcf, 0x24,
-	0xd3, 0x6e, 0x90, 0xb3, 0x8b, 0xa5, 0xdc, 0x0c, 0xce, 0xea, 0xfc, 0x33, 0x78, 0x57, 0x9b, 0xa9,
-	0x90, 0xd1, 0x9f, 0xe5, 0x22, 0x11, 0x57, 0xde, 0x88, 0x41, 0xe2, 0x84, 0x08, 0x11, 0x97, 0xea,
-	0x96, 0x5a, 0xaf, 0xd3, 0x21, 0xfe, 0xc1, 0xc2, 0x94, 0x1c, 0x70, 0x18, 0x97, 0xde, 0x88, 0x51,
-	0x71, 0xa2, 0x37, 0xda, 0x82, 0x82, 0x4a, 0x5f, 0xf5, 0x5b, 0xcd, 0x57, 0xb2, 0x64, 0xc6, 0x2a,
-	0x2e, 0x57, 0x7f, 0x63, 0x8d, 0x63, 0x56, 0x1e, 0x8a, 0xc7, 0x54, 0x1e, 0x6e, 0x03, 0xf2, 0x76,
-	0x64, 0x06, 0xd0, 0xb8, 0xa9, 0x3e, 0xcd, 0x16, 0xbb, 0xb2, 0x20, 0xd3, 0xda, 0x70, 0xc1, 0xee,
-	0xf4, 0xf5, 0xc0, 0x29, 0x5c, 0xc2, 0xaa, 0x75, 0xce, 0x1b, 0x9a, 0x82, 0xae, 0x32, 0x64, 0xcd,
-	0x99, 0xa2, 0x24, 0x4e, 0xbe, 0xf5, 0xab, 0x26, 0x50, 0x71, 0x9f, 0x1c, 0xf4, 0x11, 0x4c, 0x8b,
-	0x2d, 0x14, 0x09, 0x86, 0x47, 0x14, 0x3c, 0x77, 0x74, 0xb8, 0x3c, 0xbd, 0x69, 0x42, 0xe2, 0xb8,
-	0x04, 0xfb, 0x8f, 0xf3, 0x90, 0x9e, 0x71, 0x47, 0x9f, 0x19, 0x58, 0x0f, 0xf9, 0xcc, 0xe0, 0x5d,
-	0x28, 0x32, 0x4e, 0x7c, 0xf5, 0x49, 0x45, 0x6e, 0xb4, 0x4f, 0x2a, 0x6a, 0x01, 0x00, 0x8e, 0xb0,
-	0x12, 0xe5, 0x8f, 0xfc, 0x89, 0x96, 0x3f, 0x56, 0x01, 0x64, 0x56, 0x55, 0xf5, 0x7a, 0xfa, 0xc2,
-	0x73, 0x3a, 0xf2, 0x09, 0xd7, 0x43, 0x0a, 0x36, 0x7a, 0xa1, 0x2b, 0xe1, 0xc1, 0xa9, 0x6e, 0x38,
-	0x2f, 0xf4, 0xbd, 0xd0, 0x48, 0x16, 0xd0, 0x52, 0xbe, 0x3f, 0x3e, 0xe6, 0x45, 0x97, 0xfd, 0xbf,
-	0x39, 0x88, 0x39, 0x43, 0xf4, 0x23, 0x0b, 0xe6, 0x48, 0xe2, 0x23, 0xef, 0x20, 0x96, 0xfc, 0xb5,
-	0x6c, 0x5f, 0xde, 0xf7, 0x7d, 0x23, 0x1e, 0xdd, 0x29, 0x25, 0xbb, 0x30, 0xdc, 0x2f, 0x14, 0xfd,
-	0xa1, 0x05, 0xe7, 0x48, 0xff, 0x57, 0xfc, 0x7a, 0xd1, 0xdf, 0x1c, 0xf9, 0x67, 0x00, 0x2a, 0x4f,
-	0x1f, 0x1d, 0x2e, 0xa7, 0xfd, 0xbe, 0x01, 0x4e, 0x13, 0x87, 0xde, 0x87, 0x31, 0xe2, 0x37, 0x83,
-	0xfa, 0x6b, 0x76, 0xb1, 0xc1, 0x8f, 0x33, 0x44, 0xd1, 0xd1, 0x9a, 0xdf, 0x64, 0x58, 0x82, 0xda,
-	0x3f, 0xcb, 0xc3, 0x6c, 0xf2, 0xb3, 0x04, 0xfd, 0xe8, 0x6f, 0x2c, 0xf5, 0xd1, 0x9f, 0xb0, 0x91,
-	0x3a, 0x0f, 0x5f, 0xe0, 0x45, 0x36, 0x22, 0x1a, 0xb1, 0xa2, 0x85, 0x36, 0x22, 0x1f, 0x0b, 0x8f,
-	0x3f, 0x82, 0x8d, 0xc8, 0x17, 0xc2, 0x11, 0x16, 0xba, 0x12, 0x3f, 0x5b, 0xec, 0xe4, 0xd9, 0x32,
-	0x67, 0xce, 0x65, 0xd4, 0xaa, 0x6e, 0x07, 0x4a, 0xc6, 0x3a, 0x68, 0x4b, 0xbc, 0x9a, 0x59, 0xef,
-	0xd1, 0xb6, 0x9b, 0x51, 0xbf, 0xf0, 0x10, 0x51, 0x4c, 0xfc, 0xc8, 0xee, 0xa5, 0xb6, 0x1e, 0xa9,
-	0xec, 0x29, 0xd5, 0x65, 0xa0, 0xd9, 0xff, 0x6e, 0xc1, 0x74, 0xec, 0x25, 0xaa, 0x90, 0x16, 0xbc,
-	0xf8, 0x1d, 0xfd, 0x17, 0x0d, 0xee, 0x86, 0x08, 0xd8, 0x40, 0x43, 0xdf, 0x87, 0x52, 0xdb, 0x73,
-	0x9b, 0x94, 0xf1, 0x9a, 0x47, 0xf6, 0xb4, 0x9d, 0x64, 0x2d, 0x22, 0x2d, 0x1c, 0x1d, 0x2e, 0xcf,
-	0x6f, 0x2a, 0x98, 0xaa, 0xd7, 0xe9, 0xb6, 0x29, 0x57, 0x6f, 0xc3, 0xb1, 0x09, 0x2e, 0x6f, 0x46,
-	0xdf, 0x25, 0x3e, 0x6d, 0x79, 0x3d, 0x46, 0x9f, 0xd4, 0x9b, 0xd1, 0x70, 0x80, 0x27, 0x7d, 0x33,
-	0x1a, 0x01, 0x1f, 0x7f, 0x33, 0x1a, 0xf6, 0x7d, 0x62, 0x6f, 0x46, 0xc3, 0x11, 0x0e, 0xc8, 0x54,
-	0xfe, 0x27, 0x67, 0xcc, 0x22, 0x9e, 0xad, 0xe4, 0x1e, 0x92, 0xad, 0x7c, 0x00, 0x93, 0x8e, 0xcb,
-	0xa9, 0xbf, 0x4f, 0xda, 0xba, 0x06, 0x9c, 0x75, 0x2f, 0x86, 0x53, 0xdd, 0xd0, 0x38, 0x38, 0x44,
-	0x44, 0x6d, 0x38, 0x1f, 0xdc, 0x99, 0xf8, 0x94, 0x44, 0x77, 0xb6, 0xfa, 0xdd, 0xd3, 0xeb, 0x41,
-	0x71, 0xff, 0x46, 0x5a, 0xa7, 0x07, 0x83, 0x08, 0x38, 0x1d, 0x14, 0x31, 0x98, 0x66, 0x46, 0x9a,
-	0x1e, 0x9c, 0x88, 0x43, 0xde, 0x37, 0x25, 0x2b, 0x1b, 0xc6, 0x63, 0x29, 0x13, 0x14, 0xc7, 0x65,
-	0xd8, 0xff, 0x92, 0x87, 0x99, 0xc4, 0x4e, 0x4b, 0xa4, 0x23, 0xc5, 0xc7, 0x99, 0x8e, 0x14, 0x46,
-	0x4a, 0x47, 0xd2, 0x23, 0xe5, 0xb1, 0x91, 0x22, 0xe5, 0xb7, 0x54, 0xb4, 0xaa, 0x57, 0x6e, 0x63,
-	0x5d, 0xbf, 0x2d, 0x0f, 0xb5, 0xb9, 0x69, 0x12, 0x71, 0xbc, 0xaf, 0x0c, 0x27, 0x1a, 0xfd, 0x5f,
-	0xc7, 0xeb, 0x50, 0xfb, 0xcd, 0xac, 0x8f, 0x03, 0x43, 0x00, 0x15, 0x4e, 0xa4, 0x10, 0x70, 0x9a,
-	0xb8, 0xca, 0xed, 0xcf, 0xbf, 0x5e, 0x3a, 0xf3, 0xe5, 0xd7, 0x4b, 0x67, 0xbe, 0xfa, 0x7a, 0xe9,
-	0xcc, 0x0f, 0x8f, 0x96, 0xac, 0xcf, 0x8f, 0x96, 0xac, 0x2f, 0x8f, 0x96, 0xac, 0xaf, 0x8e, 0x96,
-	0xac, 0xff, 0x3c, 0x5a, 0xb2, 0x7e, 0xfc, 0xcd, 0xd2, 0x99, 0x7b, 0xcf, 0x0f, 0xf3, 0x9b, 0x5a,
-	0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x82, 0x8f, 0xbe, 0xc0, 0x7a, 0x4b, 0x00, 0x00,
+	// 4156 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5c, 0xdd, 0x6f, 0x23, 0x47,
+	0x72, 0xdf, 0x21, 0x45, 0x4a, 0x2c, 0x4a, 0xbb, 0x52, 0xaf, 0xd6, 0xd6, 0xc9, 0xf1, 0x6a, 0x33,
+	0x36, 0x0c, 0x3b, 0xb6, 0xa9, 0xac, 0xec, 0xb5, 0xd7, 0x6b, 0x63, 0x03, 0x91, 0xda, 0x0f, 0xed,
+	0xe9, 0xbc, 0x4a, 0x53, 0x5e, 0x9f, 0xd7, 0x36, 0x36, 0x2d, 0xb2, 0x45, 0xce, 0x89, 0x9c, 0xa1,
+	0xa7, 0x9b, 0x3a, 0x2b, 0x09, 0x92, 0xcb, 0x27, 0x0e, 0x09, 0x12, 0xdc, 0x83, 0x01, 0x5f, 0x80,
+	0x04, 0x08, 0x92, 0xc7, 0x03, 0xf2, 0x9a, 0x87, 0x3c, 0xf8, 0x21, 0x2f, 0x46, 0x62, 0x04, 0x46,
+	0x12, 0x20, 0x0e, 0x70, 0xd0, 0xc5, 0x3a, 0x20, 0xff, 0x41, 0x5e, 0x16, 0x08, 0x10, 0xf4, 0xc7,
+	0xcc, 0xf4, 0x0c, 0x87, 0x2b, 0x0e, 0x25, 0x2d, 0x9c, 0x7b, 0x93, 0xba, 0xba, 0x7f, 0xd5, 0x5d,
+	0xdd, 0x55, 0x5d, 0x55, 0x5d, 0x43, 0x78, 0xb5, 0xe5, 0xf0, 0x76, 0x7f, 0xbb, 0xd2, 0xf0, 0xba,
+	0xcb, 0x64, 0xb7, 0xef, 0xf0, 0xfd, 0xe5, 0x5d, 0xe2, 0xb7, 0xbc, 0x65, 0xd2, 0x73, 0x96, 0xf7,
+	0x2e, 0x93, 0x4e, 0xaf, 0x4d, 0x2e, 0x2f, 0xb7, 0xa8, 0x4b, 0x7d, 0xc2, 0x69, 0xb3, 0xd2, 0xf3,
+	0x3d, 0xee, 0xa1, 0x67, 0xa3, 0x51, 0x15, 0x35, 0xaa, 0x22, 0x47, 0x55, 0x48, 0xcf, 0xa9, 0x04,
+	0xa3, 0x16, 0x5f, 0x36, 0xb0, 0x5b, 0x5e, 0xcb, 0x5b, 0x96, 0x83, 0xb7, 0xfb, 0x3b, 0xf2, 0x3f,
+	0xf9, 0x8f, 0xfc, 0x4b, 0x81, 0x2e, 0xde, 0xde, 0xbd, 0xca, 0x2a, 0x8e, 0xe4, 0x4c, 0x3f, 0xe6,
+	0xd4, 0x65, 0x8e, 0xe7, 0xb2, 0x97, 0x49, 0xcf, 0x61, 0xd4, 0xdf, 0xa3, 0xfe, 0x72, 0x6f, 0xb7,
+	0x25, 0x68, 0x2c, 0xde, 0x61, 0x79, 0x6f, 0x60, 0x7a, 0x8b, 0xaf, 0x46, 0x48, 0x5d, 0xd2, 0x68,
+	0x3b, 0x2e, 0xf5, 0xf7, 0xa3, 0xe1, 0x5d, 0xca, 0x49, 0xda, 0xa8, 0xe5, 0x61, 0xa3, 0xfc, 0xbe,
+	0xcb, 0x9d, 0x2e, 0x1d, 0x18, 0xf0, 0xda, 0x51, 0x03, 0x58, 0xa3, 0x4d, 0xbb, 0x24, 0x39, 0xce,
+	0xfe, 0x00, 0xce, 0xaf, 0xba, 0xa4, 0xb3, 0xcf, 0x1c, 0x86, 0xfb, 0xee, 0xaa, 0xdf, 0xea, 0x77,
+	0xa9, 0xcb, 0xd1, 0x25, 0x98, 0x70, 0x49, 0x97, 0x2e, 0x58, 0x97, 0xac, 0xe7, 0x4b, 0xd5, 0xe9,
+	0xcf, 0x0f, 0x96, 0xce, 0x1c, 0x1e, 0x2c, 0x4d, 0xbc, 0x4d, 0xba, 0x14, 0x4b, 0x0a, 0x7a, 0x06,
+	0x0a, 0x7b, 0xa4, 0xd3, 0xa7, 0x0b, 0x39, 0xd9, 0x65, 0x46, 0x77, 0x29, 0xdc, 0x13, 0x8d, 0x58,
+	0xd1, 0xec, 0x3f, 0xc8, 0xc7, 0xe0, 0xbf, 0x43, 0x39, 0x69, 0x12, 0x4e, 0x50, 0x17, 0x8a, 0x1d,
+	0xb2, 0x4d, 0x3b, 0x6c, 0xc1, 0xba, 0x94, 0x7f, 0xbe, 0xbc, 0x72, 0xa3, 0x32, 0xca, 0x26, 0x56,
+	0x52, 0xa0, 0x2a, 0x1b, 0x12, 0xe7, 0x86, 0xcb, 0xfd, 0xfd, 0xea, 0x59, 0x3d, 0x89, 0xa2, 0x6a,
+	0xc4, 0x9a, 0x09, 0xfa, 0x3d, 0x0b, 0xca, 0xc4, 0x75, 0x3d, 0x4e, 0xb8, 0xd8, 0xa6, 0x85, 0x9c,
+	0x64, 0x7a, 0x67, 0x7c, 0xa6, 0xab, 0x11, 0x98, 0xe2, 0x7c, 0x5e, 0x73, 0x2e, 0x1b, 0x14, 0x6c,
+	0xf2, 0x5c, 0x7c, 0x03, 0xca, 0xc6, 0x54, 0xd1, 0x2c, 0xe4, 0x77, 0xe9, 0xbe, 0x92, 0x2f, 0x16,
+	0x7f, 0xa2, 0xf9, 0x98, 0x40, 0xb5, 0x04, 0xaf, 0xe5, 0xae, 0x5a, 0x8b, 0xd7, 0x61, 0x36, 0xc9,
+	0x30, 0xcb, 0x78, 0xfb, 0xcf, 0x2d, 0x98, 0x37, 0x56, 0x81, 0xe9, 0x0e, 0xf5, 0xa9, 0xdb, 0xa0,
+	0x68, 0x19, 0x4a, 0x62, 0x2f, 0x59, 0x8f, 0x34, 0x82, 0xad, 0x9e, 0xd3, 0x0b, 0x29, 0xbd, 0x1d,
+	0x10, 0x70, 0xd4, 0x27, 0x3c, 0x16, 0xb9, 0x47, 0x1d, 0x8b, 0x5e, 0x9b, 0x30, 0xba, 0x90, 0x8f,
+	0x1f, 0x8b, 0x4d, 0xd1, 0x88, 0x15, 0xcd, 0x7e, 0x00, 0xdf, 0x0a, 0xe6, 0xb3, 0x45, 0xbb, 0xbd,
+	0x0e, 0xe1, 0x34, 0x9a, 0xd4, 0xd1, 0x47, 0xef, 0x12, 0x4c, 0xec, 0x3a, 0x6e, 0x33, 0x39, 0x8b,
+	0x6f, 0x3b, 0x6e, 0x13, 0x4b, 0x8a, 0xbd, 0x0b, 0x33, 0xab, 0xbd, 0x9e, 0xef, 0xed, 0xd1, 0x66,
+	0x9d, 0x93, 0x16, 0x45, 0xf7, 0x01, 0x88, 0x6e, 0x58, 0xe5, 0x12, 0xba, 0xbc, 0xf2, 0x2b, 0x15,
+	0xa5, 0x33, 0x15, 0x53, 0x67, 0x2a, 0xbd, 0xdd, 0x96, 0x68, 0x60, 0x15, 0xa1, 0x9a, 0x95, 0xbd,
+	0xcb, 0x95, 0x2d, 0xa7, 0x4b, 0xab, 0x67, 0x0f, 0x0f, 0x96, 0x60, 0x35, 0x44, 0xc0, 0x06, 0x9a,
+	0xfd, 0xfb, 0x16, 0x5c, 0x58, 0xf5, 0x5b, 0x5e, 0x6d, 0x6d, 0xb5, 0xd7, 0xbb, 0x4d, 0x49, 0x87,
+	0xb7, 0xeb, 0x9c, 0xf0, 0x3e, 0x43, 0xd7, 0xa1, 0xc8, 0xe4, 0x5f, 0x7a, 0x31, 0xcf, 0x05, 0xe7,
+	0x53, 0xd1, 0x1f, 0x1e, 0x2c, 0xcd, 0xa7, 0x0c, 0xa4, 0x58, 0x8f, 0x42, 0x2f, 0xc0, 0x64, 0x97,
+	0x32, 0x46, 0x5a, 0x81, 0xc4, 0xcf, 0x69, 0x80, 0xc9, 0xef, 0xa8, 0x66, 0x1c, 0xd0, 0xed, 0x7f,
+	0xca, 0xc1, 0xb9, 0x10, 0x4b, 0xb3, 0x3f, 0x85, 0xed, 0xed, 0xc3, 0x74, 0xdb, 0x58, 0xa1, 0xdc,
+	0xe5, 0xf2, 0xca, 0x9b, 0x23, 0x6a, 0x52, 0x9a, 0x90, 0xaa, 0xf3, 0x9a, 0xcd, 0xb4, 0xd9, 0x8a,
+	0x63, 0x6c, 0x50, 0x17, 0x80, 0xed, 0xbb, 0x0d, 0xcd, 0x74, 0x42, 0x32, 0x7d, 0x23, 0x23, 0xd3,
+	0x7a, 0x08, 0x50, 0x45, 0x9a, 0x25, 0x44, 0x6d, 0xd8, 0x60, 0x60, 0xff, 0x9d, 0x05, 0xe7, 0x53,
+	0xc6, 0xa1, 0xb7, 0x12, 0xfb, 0xf9, 0xec, 0xc0, 0x7e, 0xa2, 0x81, 0x61, 0xd1, 0x6e, 0xbe, 0x04,
+	0x53, 0x3e, 0xdd, 0x73, 0xc4, 0x4d, 0xa1, 0x25, 0x3c, 0xab, 0xc7, 0x4f, 0x61, 0xdd, 0x8e, 0xc3,
+	0x1e, 0xe8, 0x45, 0x28, 0x05, 0x7f, 0x0b, 0x31, 0xe7, 0x85, 0x32, 0x89, 0x8d, 0x0b, 0xba, 0x32,
+	0x1c, 0xd1, 0xed, 0xdf, 0x85, 0x42, 0xad, 0x4d, 0x7c, 0x2e, 0x4e, 0x8c, 0x4f, 0x7b, 0xde, 0x3b,
+	0x78, 0x43, 0x4f, 0x31, 0x3c, 0x31, 0x58, 0x35, 0xe3, 0x80, 0x3e, 0xc2, 0x66, 0xbf, 0x00, 0x93,
+	0x7b, 0xd4, 0x97, 0xf3, 0xcd, 0xc7, 0xc1, 0xee, 0xa9, 0x66, 0x1c, 0xd0, 0xed, 0x7f, 0xb3, 0x60,
+	0x5e, 0xce, 0x60, 0xcd, 0x61, 0x0d, 0x6f, 0x8f, 0xfa, 0xfb, 0x98, 0xb2, 0x7e, 0xe7, 0x84, 0x27,
+	0xb4, 0x06, 0xb3, 0x8c, 0x76, 0xf7, 0xa8, 0x5f, 0xf3, 0x5c, 0xc6, 0x7d, 0xe2, 0xb8, 0x5c, 0xcf,
+	0x6c, 0x41, 0xf7, 0x9e, 0xad, 0x27, 0xe8, 0x78, 0x60, 0x04, 0x7a, 0x1e, 0xa6, 0xf4, 0xb4, 0xc5,
+	0x51, 0x12, 0x82, 0x9d, 0x16, 0x7b, 0xa0, 0xd7, 0xc4, 0x70, 0x48, 0xb5, 0xff, 0xdb, 0x82, 0x39,
+	0xb9, 0xaa, 0x7a, 0x7f, 0x9b, 0x35, 0x7c, 0xa7, 0x27, 0x0c, 0xf0, 0x37, 0x71, 0x49, 0xd7, 0xe1,
+	0x6c, 0x33, 0x10, 0xfc, 0x86, 0xd3, 0x75, 0xb8, 0xd4, 0x91, 0x42, 0xf5, 0x09, 0x8d, 0x71, 0x76,
+	0x2d, 0x46, 0xc5, 0x89, 0xde, 0x6a, 0xfb, 0x3a, 0x7d, 0xc6, 0xa9, 0xbf, 0xe9, 0x7b, 0x5d, 0x4f,
+	0xac, 0x73, 0x8b, 0xb0, 0x5d, 0xf4, 0x1b, 0x30, 0xd5, 0xd5, 0x97, 0x9e, 0xb6, 0x9a, 0xbf, 0x3a,
+	0x9a, 0xd5, 0xbc, 0xbb, 0xfd, 0x3d, 0xda, 0xe0, 0xe2, 0xc2, 0x8c, 0xb4, 0x2d, 0x6a, 0xc3, 0x21,
+	0x2a, 0x7a, 0x0f, 0x26, 0x58, 0x8f, 0x36, 0xa4, 0x88, 0xca, 0x2b, 0xaf, 0x8f, 0xa6, 0xd4, 0xb1,
+	0x49, 0xd6, 0x7b, 0xb4, 0x11, 0xc9, 0x56, 0xfc, 0x87, 0x25, 0xa4, 0xfd, 0x9f, 0x16, 0x2c, 0xa4,
+	0xad, 0x6a, 0xc3, 0x61, 0x1c, 0x7d, 0x30, 0xb0, 0xb2, 0xca, 0x68, 0x2b, 0x13, 0xa3, 0xe5, 0xba,
+	0x42, 0xed, 0x0d, 0x5a, 0x8c, 0x55, 0x3d, 0x80, 0x82, 0xc3, 0x69, 0x37, 0x70, 0x35, 0xae, 0x8d,
+	0xb6, 0xac, 0xb4, 0xc9, 0x46, 0x57, 0xe8, 0xba, 0x00, 0xc4, 0x0a, 0xd7, 0x7e, 0x1f, 0xa6, 0x6b,
+	0x7d, 0xdf, 0xa7, 0x2e, 0x57, 0x17, 0xdc, 0xb7, 0xa1, 0xc0, 0x1c, 0x57, 0xdb, 0xf9, 0x6c, 0x77,
+	0x5b, 0x49, 0x80, 0xd7, 0xc5, 0x60, 0xac, 0x30, 0xec, 0xbf, 0xcc, 0xc3, 0xf9, 0xe0, 0xc4, 0xd0,
+	0xe6, 0xaa, 0xcf, 0x9d, 0x1d, 0xd2, 0xe0, 0x0c, 0x35, 0x61, 0xba, 0x19, 0x35, 0x73, 0x6d, 0x88,
+	0xb3, 0xf0, 0x0a, 0x8d, 0xbd, 0x01, 0xcf, 0x71, 0x0c, 0x15, 0xbd, 0x0b, 0xf9, 0x96, 0xc3, 0xb5,
+	0x67, 0x78, 0x75, 0x34, 0xc9, 0xdd, 0x72, 0x92, 0x96, 0xa7, 0x5a, 0xd6, 0xac, 0xf2, 0xb7, 0x1c,
+	0x8e, 0x05, 0x22, 0xda, 0x86, 0xa2, 0xd3, 0x25, 0x2d, 0x9a, 0x71, 0x57, 0xd6, 0xc5, 0x98, 0x24,
+	0x7a, 0xe8, 0x6a, 0x4a, 0x2a, 0xc3, 0x1a, 0x59, 0xf0, 0x68, 0x08, 0x8b, 0xa1, 0x6c, 0xf6, 0xe8,
+	0x3b, 0x9f, 0x62, 0x3b, 0x23, 0x1e, 0x92, 0xca, 0xb0, 0x46, 0xb6, 0xbf, 0xca, 0xc1, 0x6c, 0x24,
+	0xbf, 0x9a, 0xd7, 0xed, 0x3a, 0x1c, 0x2d, 0x42, 0xce, 0x69, 0x6a, 0x83, 0x04, 0x7a, 0x60, 0x6e,
+	0x7d, 0x0d, 0xe7, 0x9c, 0x26, 0x7a, 0x0e, 0x8a, 0xdb, 0x3e, 0x71, 0x1b, 0x6d, 0x6d, 0x88, 0x42,
+	0xe0, 0xaa, 0x6c, 0xc5, 0x9a, 0x8a, 0x9e, 0x86, 0x3c, 0x27, 0x2d, 0x6d, 0x7f, 0x42, 0xf9, 0x6d,
+	0x91, 0x16, 0x16, 0xed, 0xc2, 0xf0, 0xb1, 0xbe, 0xd4, 0x61, 0xb9, 0xf3, 0x86, 0xe1, 0xab, 0xab,
+	0x66, 0x1c, 0xd0, 0x05, 0x47, 0xd2, 0xe7, 0x6d, 0xcf, 0x5f, 0x28, 0xc4, 0x39, 0xae, 0xca, 0x56,
+	0xac, 0xa9, 0xc2, 0x45, 0x69, 0xc8, 0xf9, 0x73, 0xea, 0x2f, 0x14, 0xe3, 0x2e, 0x4a, 0x2d, 0x20,
+	0xe0, 0xa8, 0x0f, 0xfa, 0x10, 0xca, 0x0d, 0x9f, 0x12, 0xee, 0xf9, 0x6b, 0x84, 0xd3, 0x85, 0xc9,
+	0xcc, 0x27, 0xf0, 0x9c, 0xf0, 0xd2, 0x6b, 0x11, 0x04, 0x36, 0xf1, 0xec, 0xbf, 0xcf, 0xc3, 0x42,
+	0x24, 0x5a, 0xb9, 0xb7, 0x91, 0x67, 0xaa, 0xc5, 0x63, 0x0d, 0x11, 0xcf, 0x73, 0x50, 0x6c, 0x3a,
+	0x2d, 0xca, 0x78, 0x52, 0xca, 0x6b, 0xb2, 0x15, 0x6b, 0x2a, 0xfa, 0xe3, 0x44, 0x34, 0x52, 0x90,
+	0x07, 0xe5, 0xee, 0x68, 0x07, 0x65, 0xd8, 0xe4, 0xc6, 0x08, 0x49, 0xd0, 0x0a, 0x40, 0xcb, 0xe1,
+	0xfa, 0xd2, 0xd2, 0xbb, 0x1e, 0x1a, 0xeb, 0x5b, 0x21, 0x05, 0x1b, 0xbd, 0xd0, 0xbb, 0x50, 0x92,
+	0xf2, 0x1a, 0x53, 0xff, 0xa5, 0x0b, 0x53, 0x0b, 0x00, 0x70, 0x84, 0x75, 0xec, 0x20, 0xe7, 0xcb,
+	0x09, 0x98, 0xbc, 0xe9, 0x53, 0xa7, 0xd5, 0xe6, 0x8f, 0xe1, 0xd6, 0x7a, 0x06, 0x0a, 0xa4, 0xe3,
+	0x10, 0x26, 0x0f, 0xa0, 0x11, 0xe6, 0xac, 0x8a, 0x46, 0xac, 0x68, 0xe8, 0x7d, 0x28, 0x7a, 0xbe,
+	0xd3, 0x72, 0xdc, 0x85, 0x92, 0x9c, 0xc4, 0x2b, 0xa3, 0x6d, 0xb1, 0x5e, 0xc5, 0x5d, 0x39, 0x34,
+	0x3a, 0x45, 0xea, 0x7f, 0xac, 0x21, 0xd1, 0x7d, 0x98, 0x54, 0x5a, 0x11, 0x58, 0x9a, 0xe5, 0x91,
+	0x2d, 0xa5, 0x52, 0xac, 0x48, 0x7b, 0xd5, 0xff, 0x0c, 0x07, 0x80, 0xa8, 0x1e, 0x1a, 0xca, 0x09,
+	0x09, 0xfd, 0x62, 0x06, 0x43, 0x39, 0xd4, 0x32, 0xd6, 0x43, 0xcb, 0x58, 0xc8, 0x02, 0x2a, 0x6d,
+	0xdf, 0x30, 0x53, 0x28, 0x44, 0xac, 0x3d, 0xf2, 0xe2, 0x18, 0x22, 0xd6, 0xe1, 0xc0, 0xd9, 0xb8,
+	0x1b, 0x1f, 0x38, 0xec, 0xf6, 0x27, 0x79, 0x98, 0xd3, 0x3d, 0x6b, 0x5e, 0xa7, 0x43, 0x1b, 0xd2,
+	0xfd, 0x53, 0x86, 0x36, 0x9f, 0x6a, 0x68, 0x9d, 0xe0, 0xda, 0x57, 0x97, 0x57, 0x35, 0xd3, 0x6c,
+	0x22, 0x1e, 0x15, 0x79, 0xd5, 0x2b, 0x35, 0x0e, 0x77, 0x49, 0xf7, 0xd2, 0x0e, 0x00, 0xfa, 0x23,
+	0x0b, 0xce, 0xef, 0x51, 0xdf, 0xd9, 0x71, 0x1a, 0x52, 0x65, 0x6e, 0x3b, 0x8c, 0x7b, 0xfe, 0xbe,
+	0xbe, 0xda, 0x5e, 0x1b, 0x8d, 0xf3, 0x3d, 0x03, 0x60, 0xdd, 0xdd, 0xf1, 0xaa, 0x4f, 0x69, 0x6e,
+	0xe7, 0xef, 0x0d, 0x42, 0xe3, 0x34, 0x7e, 0x8b, 0x3d, 0x80, 0x68, 0xb6, 0x29, 0x1a, 0xbb, 0x61,
+	0x6a, 0xec, 0xc8, 0x13, 0x0b, 0x16, 0x1b, 0x98, 0x37, 0x53, 0xd3, 0x3f, 0xb3, 0xa0, 0xac, 0xe9,
+	0x8f, 0xc1, 0x93, 0xc3, 0x71, 0x4f, 0xee, 0xe5, 0x4c, 0xf3, 0x1f, 0xe2, 0xbc, 0xf9, 0x30, 0x13,
+	0x53, 0x72, 0x74, 0x45, 0x67, 0x34, 0xd4, 0xd5, 0xf2, 0xcb, 0x66, 0x46, 0xe3, 0xe1, 0xc1, 0xd2,
+	0x5c, 0xac, 0x73, 0x94, 0xe6, 0x38, 0x3a, 0xbc, 0xb8, 0x36, 0xf5, 0xe3, 0xbf, 0x5e, 0x3a, 0xf3,
+	0x83, 0x9f, 0x5e, 0x3a, 0x63, 0x7f, 0x9a, 0x87, 0xd9, 0xa4, 0x54, 0x47, 0xc8, 0xb5, 0x44, 0x36,
+	0x6c, 0xea, 0x54, 0x6d, 0x58, 0xee, 0xf4, 0x6c, 0x58, 0xfe, 0x34, 0x6c, 0xd8, 0xc4, 0x89, 0xd9,
+	0x30, 0xfb, 0x5f, 0x2c, 0x38, 0x1b, 0xee, 0xcc, 0x47, 0x7d, 0xe1, 0x22, 0x44, 0x52, 0xb7, 0x4e,
+	0x5e, 0xea, 0x0f, 0x60, 0x92, 0x79, 0x7d, 0xbf, 0x21, 0xfd, 0x60, 0x81, 0xfe, 0x6a, 0x36, 0xa3,
+	0xa9, 0xc6, 0x1a, 0xce, 0x9f, 0x6a, 0xc0, 0x01, 0xaa, 0xfd, 0x59, 0x2e, 0x5c, 0x90, 0xa6, 0x29,
+	0xdf, 0xc8, 0x17, 0x9e, 0xa3, 0x58, 0xd0, 0x94, 0xe9, 0x1b, 0x89, 0x56, 0xac, 0xa9, 0xc8, 0x96,
+	0xf6, 0x3c, 0x70, 0xd1, 0x4b, 0x55, 0xd0, 0x66, 0x59, 0x6e, 0x82, 0xa2, 0xa0, 0x1e, 0xcc, 0xfa,
+	0xf4, 0xa3, 0xbe, 0xe3, 0xd3, 0x66, 0xdd, 0x23, 0xbb, 0xc2, 0xaf, 0xd0, 0x79, 0xa8, 0x11, 0xf5,
+	0x7e, 0xad, 0xef, 0x4b, 0x13, 0x56, 0x9d, 0x17, 0xe1, 0x35, 0x4e, 0x60, 0xe1, 0x01, 0x74, 0xe4,
+	0xc1, 0x3c, 0xd9, 0x23, 0x4e, 0x87, 0x6c, 0x3b, 0x1d, 0x87, 0xef, 0xd7, 0xb9, 0x4f, 0x38, 0x6d,
+	0xed, 0x6b, 0x2f, 0xf8, 0x4d, 0xbd, 0x96, 0xf9, 0xd5, 0x94, 0x3e, 0x0f, 0x0f, 0x96, 0x9e, 0xd2,
+	0xb2, 0x48, 0x23, 0xe3, 0x54, 0x60, 0xfb, 0x67, 0x85, 0xd0, 0x42, 0xe8, 0xd4, 0xd3, 0x6f, 0x41,
+	0xb9, 0xa1, 0xe2, 0xbd, 0xce, 0xfe, 0xba, 0xab, 0xcf, 0xf4, 0xda, 0x18, 0xb7, 0x5d, 0xa5, 0x16,
+	0xc1, 0x24, 0x1c, 0x45, 0x83, 0x82, 0x4d, 0x6e, 0xe8, 0xfb, 0x00, 0xca, 0xf4, 0xd3, 0xe6, 0xba,
+	0xab, 0xef, 0xb6, 0xda, 0x38, 0xbc, 0xef, 0x85, 0x28, 0x8a, 0x75, 0xe8, 0x64, 0x45, 0x04, 0x6c,
+	0xb0, 0x12, 0xab, 0x0e, 0x12, 0xad, 0x37, 0x3d, 0x5f, 0x1b, 0x89, 0xb1, 0x56, 0xbd, 0x1a, 0xc1,
+	0x24, 0xdd, 0xe3, 0x88, 0x82, 0x4d, 0x6e, 0x8b, 0x3e, 0xcc, 0x26, 0x65, 0x95, 0x72, 0xbf, 0xdd,
+	0x8e, 0xdf, 0x6f, 0x2b, 0x23, 0x5a, 0x04, 0x23, 0x76, 0x37, 0x53, 0xfd, 0x3e, 0x9c, 0x4b, 0xc8,
+	0x28, 0x85, 0xe5, 0x7a, 0x9c, 0xe5, 0x2b, 0x59, 0xee, 0x7a, 0x9d, 0x10, 0x37, 0x79, 0x32, 0x98,
+	0x4d, 0x4a, 0xe7, 0xc4, 0x98, 0xc6, 0xb2, 0xf0, 0xe6, 0x25, 0xfe, 0x57, 0x39, 0x28, 0x85, 0x66,
+	0x3c, 0x4b, 0x4a, 0x4d, 0xb9, 0x5f, 0xb9, 0x23, 0xe2, 0xdc, 0xfc, 0x28, 0x71, 0xee, 0xc4, 0xf0,
+	0x38, 0x37, 0x48, 0xbb, 0x17, 0x1f, 0x9d, 0x76, 0x37, 0xe2, 0xdc, 0xc9, 0xd1, 0xe3, 0xdc, 0xa9,
+	0xa3, 0xe3, 0x5c, 0xfb, 0x6f, 0x2c, 0x40, 0x83, 0x49, 0x8d, 0x2c, 0x82, 0x22, 0xc9, 0xcb, 0xf5,
+	0xb5, 0xac, 0x11, 0xe6, 0x51, 0x77, 0xac, 0xfd, 0x59, 0x01, 0xce, 0xdd, 0x72, 0xc6, 0xce, 0x8e,
+	0x72, 0x78, 0x52, 0x21, 0xd5, 0xa9, 0x76, 0x7c, 0x43, 0xcb, 0xaa, 0xf6, 0xf7, 0x9a, 0x1e, 0xfa,
+	0x64, 0x2d, 0xbd, 0xdb, 0xc3, 0xe1, 0x24, 0x3c, 0x0c, 0x7a, 0xe4, 0x43, 0xf2, 0x26, 0xcc, 0x30,
+	0xee, 0x3b, 0x0d, 0xae, 0xf2, 0xaf, 0x6c, 0xa1, 0x2c, 0x6f, 0xae, 0x0b, 0xba, 0xfb, 0x4c, 0xdd,
+	0x24, 0xe2, 0x78, 0xdf, 0xd4, 0xb4, 0xee, 0x44, 0xe6, 0xb4, 0xee, 0x32, 0x94, 0x48, 0xa7, 0xe3,
+	0x7d, 0x7f, 0x8b, 0xb4, 0x98, 0x4e, 0xa4, 0x84, 0xa7, 0x66, 0x35, 0x20, 0xe0, 0xa8, 0x0f, 0xaa,
+	0x00, 0x38, 0x2d, 0xd7, 0xf3, 0xa9, 0x1c, 0x51, 0x94, 0x57, 0xa8, 0x7c, 0xba, 0x5a, 0x0f, 0x5b,
+	0xb1, 0xd1, 0x03, 0xd5, 0xe1, 0x82, 0xe3, 0x32, 0xda, 0xe8, 0xfb, 0xb4, 0xbe, 0xeb, 0xf4, 0xb6,
+	0x36, 0xea, 0xd2, 0x4a, 0xec, 0xcb, 0xd3, 0x3c, 0x55, 0x7d, 0x5a, 0x33, 0xbb, 0xb0, 0x9e, 0xd6,
+	0x09, 0xa7, 0x8f, 0x45, 0xaf, 0xc2, 0xb4, 0xe3, 0x36, 0x3a, 0xfd, 0x26, 0xdd, 0x24, 0xbc, 0xcd,
+	0x16, 0xa6, 0xe4, 0x34, 0x66, 0x0f, 0x0f, 0x96, 0xa6, 0xd7, 0x8d, 0x76, 0x1c, 0xeb, 0x25, 0x46,
+	0xd1, 0x8f, 0x8d, 0x51, 0xa5, 0x68, 0xd4, 0x8d, 0x8f, 0xcd, 0x51, 0x66, 0xaf, 0x94, 0xc4, 0x37,
+	0x64, 0x4a, 0x7c, 0xff, 0x24, 0x07, 0x45, 0xf5, 0xee, 0x84, 0xae, 0x24, 0x1e, 0x77, 0x9e, 0x1e,
+	0x78, 0xdc, 0x29, 0xa7, 0xbd, 0xd1, 0xd9, 0x50, 0x74, 0x18, 0xeb, 0xc7, 0x3d, 0x96, 0x75, 0xd9,
+	0x82, 0x35, 0x45, 0x26, 0x05, 0x3d, 0x77, 0xc7, 0x69, 0xe9, 0x8c, 0xc9, 0x75, 0xc3, 0x4f, 0x89,
+	0xaa, 0x07, 0x1e, 0x84, 0xe5, 0x05, 0x91, 0xcb, 0x12, 0xeb, 0x20, 0x7c, 0x97, 0x3b, 0xf5, 0xbb,
+	0x6f, 0x2b, 0x1e, 0x35, 0x89, 0x88, 0x35, 0xb2, 0xe0, 0xe1, 0xf5, 0x79, 0xaf, 0xcf, 0xe5, 0x41,
+	0x39, 0x21, 0x1e, 0x77, 0x25, 0x22, 0xd6, 0xc8, 0xf6, 0xa7, 0x16, 0x9c, 0x53, 0x32, 0xa8, 0xb5,
+	0x69, 0x63, 0xb7, 0xce, 0x69, 0x4f, 0x84, 0x10, 0x7d, 0x46, 0x59, 0x32, 0x84, 0x78, 0x87, 0x51,
+	0x86, 0x25, 0xc5, 0x58, 0x7d, 0xee, 0xb4, 0x56, 0x6f, 0x1f, 0xe6, 0xa0, 0x20, 0x7d, 0xf5, 0x2c,
+	0xf6, 0x27, 0x9e, 0xff, 0xca, 0x8d, 0x94, 0xff, 0x3a, 0x22, 0x45, 0x1a, 0xe5, 0x00, 0x27, 0x1e,
+	0x99, 0x03, 0x64, 0x69, 0x29, 0xc0, 0xb7, 0x32, 0x84, 0x28, 0xe3, 0x94, 0x20, 0x1c, 0x37, 0xc5,
+	0xf6, 0x73, 0x0b, 0xe6, 0xd3, 0x92, 0xe1, 0x59, 0x64, 0xfe, 0x12, 0x4c, 0xf5, 0x3a, 0x84, 0xef,
+	0x78, 0x7e, 0x37, 0xf9, 0x08, 0xba, 0xa9, 0xdb, 0x71, 0xd8, 0x03, 0xf9, 0x00, 0x7e, 0x10, 0xac,
+	0x06, 0x81, 0xdc, 0xf5, 0xe3, 0x25, 0x4a, 0xa3, 0x1d, 0x0e, 0x9b, 0x18, 0x36, 0xb8, 0xd8, 0x7f,
+	0x5a, 0x80, 0x39, 0x39, 0x64, 0xdc, 0x6b, 0x6d, 0x9c, 0x63, 0xd5, 0x83, 0x27, 0x64, 0x88, 0x39,
+	0x78, 0x13, 0xaa, 0x93, 0x76, 0x55, 0x8f, 0x7f, 0x62, 0x3d, 0xb5, 0xd7, 0xc3, 0xa1, 0x14, 0x3c,
+	0x04, 0x77, 0xf0, 0x7a, 0x83, 0x5f, 0xbc, 0xeb, 0xcd, 0x3c, 0x6c, 0x93, 0x47, 0x1e, 0xb6, 0xa1,
+	0x97, 0xe1, 0xd4, 0x31, 0x2e, 0xc3, 0xc1, 0x0b, 0xaa, 0x94, 0xe9, 0x82, 0xfa, 0x8b, 0x1c, 0x4c,
+	0x6e, 0xfa, 0x9e, 0x7c, 0x54, 0x39, 0xfd, 0xb4, 0xf6, 0xdd, 0xd8, 0x63, 0xec, 0xe5, 0x91, 0x1f,
+	0x63, 0x05, 0x94, 0x7c, 0x86, 0x9d, 0x8a, 0x3f, 0xc1, 0x1a, 0xf9, 0xd9, 0x7c, 0x96, 0xb0, 0x21,
+	0x80, 0x7c, 0x74, 0x7e, 0xf6, 0x33, 0x0b, 0xca, 0xba, 0xe7, 0x37, 0x36, 0x11, 0xa8, 0xe7, 0x37,
+	0x24, 0x11, 0xf8, 0x67, 0xd1, 0x0a, 0x84, 0xd0, 0xd0, 0xef, 0xc0, 0x5c, 0x2f, 0x78, 0xfc, 0xdd,
+	0xf4, 0x3a, 0x4e, 0xc3, 0xa1, 0x41, 0x2e, 0xf9, 0x4a, 0xc6, 0x97, 0x71, 0x39, 0x7c, 0xbf, 0xfa,
+	0x2d, 0xcd, 0x77, 0x6e, 0x33, 0x89, 0x8b, 0x07, 0x59, 0xd9, 0xff, 0x6e, 0xc1, 0x4c, 0x4c, 0xf6,
+	0xa8, 0x01, 0xd0, 0xf0, 0xdc, 0xa6, 0xc3, 0xc3, 0x3a, 0x94, 0xf2, 0xca, 0xf2, 0x68, 0x52, 0xad,
+	0x05, 0xe3, 0xa2, 0x43, 0x17, 0x36, 0x31, 0x6c, 0xc0, 0xa2, 0x57, 0x82, 0xa2, 0xb1, 0xb8, 0xe7,
+	0xa5, 0x8a, 0xc6, 0x1e, 0x1e, 0x2c, 0x4d, 0xeb, 0x39, 0x99, 0x45, 0x64, 0x59, 0x8a, 0xa3, 0xfe,
+	0x36, 0x07, 0xa5, 0x70, 0xfd, 0x8f, 0x41, 0x8d, 0xde, 0x89, 0xa9, 0xd1, 0x2b, 0x19, 0x77, 0x6e,
+	0x58, 0x3d, 0x03, 0xfa, 0x30, 0xa1, 0x4c, 0x59, 0x8f, 0xc4, 0x11, 0xea, 0xf4, 0x8f, 0x6a, 0xf3,
+	0x55, 0xdf, 0xc7, 0xa0, 0x50, 0x5b, 0x71, 0x85, 0x5a, 0xce, 0xb8, 0x9a, 0x21, 0x2a, 0xf5, 0x43,
+	0x0b, 0xce, 0x25, 0x94, 0x00, 0x3d, 0x03, 0x05, 0x99, 0x3b, 0xd4, 0xe7, 0x2b, 0x1c, 0xa8, 0xb3,
+	0x12, 0x92, 0x86, 0x36, 0x61, 0x9e, 0xf4, 0xb9, 0x17, 0x8e, 0xbd, 0xe1, 0x92, 0xed, 0x0e, 0x55,
+	0xa9, 0x86, 0xa9, 0xea, 0x2f, 0x85, 0x49, 0xbe, 0x94, 0x3e, 0x38, 0x75, 0xa4, 0xfd, 0x45, 0x0e,
+	0x50, 0xd8, 0x98, 0x25, 0xe9, 0xfe, 0x21, 0x4c, 0xee, 0xa8, 0xec, 0xd5, 0xf1, 0x5e, 0x4d, 0xaa,
+	0x65, 0xf3, 0xe1, 0x28, 0xc0, 0x44, 0xef, 0x9d, 0xcc, 0x39, 0x82, 0xc1, 0x33, 0x84, 0xee, 0x03,
+	0xec, 0x38, 0xae, 0xc3, 0xda, 0x63, 0xbe, 0x0f, 0xcb, 0xdb, 0xfc, 0x66, 0x88, 0x80, 0x0d, 0x34,
+	0xfb, 0x93, 0x9c, 0x71, 0x3e, 0xa5, 0xb9, 0x1c, 0x69, 0x5f, 0x5f, 0x88, 0x0b, 0xb3, 0x34, 0xf8,
+	0xa2, 0x66, 0x08, 0x66, 0x62, 0x8f, 0xf8, 0x41, 0x72, 0x3f, 0x6b, 0x2d, 0xd2, 0x3d, 0xe2, 0x3b,
+	0x62, 0xe3, 0xa3, 0x2d, 0xbd, 0x47, 0x7c, 0x86, 0x25, 0x24, 0xfa, 0xae, 0x98, 0x2a, 0xed, 0x05,
+	0x26, 0x34, 0xb3, 0x4d, 0xe0, 0xb4, 0x67, 0xae, 0x8f, 0xf6, 0x18, 0x56, 0x80, 0xf6, 0x27, 0x93,
+	0xc6, 0x81, 0xd7, 0x56, 0xfb, 0x0e, 0xa0, 0x0e, 0x61, 0xfc, 0x36, 0x71, 0x9b, 0xe2, 0x78, 0xd2,
+	0x1d, 0x9f, 0xb2, 0xb6, 0xf6, 0xd0, 0x16, 0x35, 0x0a, 0xda, 0x18, 0xe8, 0x81, 0x53, 0x46, 0xa1,
+	0x2b, 0x71, 0xe3, 0xbc, 0x94, 0x34, 0xce, 0x67, 0x23, 0x6d, 0x1b, 0xcf, 0x3c, 0x9b, 0xc7, 0xbd,
+	0x70, 0x0a, 0xc7, 0xfd, 0xb7, 0x61, 0x6e, 0x27, 0xf9, 0xc2, 0xaa, 0x0b, 0x47, 0x5e, 0x1f, 0xf3,
+	0x81, 0xb6, 0x7a, 0xe1, 0x30, 0x7a, 0x96, 0x8b, 0x9a, 0xf1, 0x20, 0x23, 0xe4, 0x05, 0x15, 0xb3,
+	0x32, 0x64, 0x56, 0xd9, 0x90, 0x91, 0x55, 0x2e, 0x11, 0x6c, 0x27, 0x6b, 0x65, 0x15, 0x24, 0x8e,
+	0x31, 0x48, 0xa8, 0x60, 0xf1, 0x24, 0x55, 0x10, 0x5d, 0x09, 0x5f, 0x21, 0xc4, 0x74, 0xa4, 0x2b,
+	0x9b, 0x1f, 0x78, 0x3f, 0x10, 0x24, 0x6c, 0xf6, 0x43, 0x3f, 0xb2, 0xe0, 0x82, 0x38, 0xac, 0x37,
+	0x3e, 0xa6, 0x8d, 0xbe, 0x90, 0x4a, 0x50, 0x48, 0xbf, 0x50, 0x96, 0xd2, 0x18, 0xb1, 0x7e, 0xb8,
+	0x9e, 0x06, 0x11, 0xf9, 0xe5, 0xa9, 0x64, 0x9c, 0xce, 0x18, 0x3d, 0x90, 0xa6, 0x83, 0x53, 0x19,
+	0xf6, 0x1c, 0x3f, 0x27, 0x51, 0xd2, 0x66, 0x87, 0x2b, 0xb3, 0xc3, 0xa9, 0xfd, 0xb3, 0xbc, 0x69,
+	0xad, 0x46, 0xcb, 0x94, 0xdc, 0x87, 0x09, 0x4e, 0xd8, 0xae, 0xd6, 0x82, 0xb7, 0xc6, 0xa8, 0x85,
+	0x8c, 0x74, 0x41, 0x7a, 0xe2, 0xb2, 0x49, 0x62, 0xa2, 0x45, 0xc8, 0x11, 0x96, 0xcc, 0x9b, 0xaf,
+	0x32, 0x9c, 0x23, 0x4c, 0xe6, 0xd4, 0x77, 0x74, 0x84, 0x14, 0xe5, 0xd4, 0x77, 0x70, 0xce, 0xd9,
+	0x41, 0xef, 0x41, 0xc1, 0xa7, 0xdc, 0xdf, 0xd7, 0xc6, 0xfc, 0xea, 0x18, 0x86, 0x0b, 0x8b, 0xf1,
+	0x4a, 0x44, 0xf2, 0x4f, 0xac, 0x10, 0x43, 0x73, 0x5b, 0x3c, 0x79, 0x73, 0x1b, 0xe5, 0x9c, 0xf2,
+	0xa7, 0x96, 0x73, 0xfa, 0x89, 0x65, 0x5c, 0xef, 0xe1, 0x3a, 0xd1, 0x3b, 0x30, 0xc9, 0x9d, 0x2e,
+	0xf5, 0xfa, 0x3c, 0x9b, 0xcf, 0x14, 0xbe, 0x4a, 0x4a, 0x2b, 0xb6, 0xa5, 0x20, 0x70, 0x80, 0x25,
+	0x02, 0x49, 0xea, 0xfb, 0x9e, 0xbf, 0xd5, 0x16, 0x56, 0xd9, 0xeb, 0x28, 0xc7, 0x64, 0x26, 0x0a,
+	0x24, 0x6f, 0xc4, 0xa8, 0x38, 0xd1, 0xdb, 0xfe, 0xc2, 0xf4, 0xee, 0xfe, 0xff, 0xd7, 0xf6, 0xfe,
+	0xb3, 0x05, 0x73, 0x8f, 0xbb, 0xa8, 0xf7, 0xbb, 0x71, 0x87, 0xf5, 0x95, 0x31, 0xd6, 0x33, 0xc4,
+	0x69, 0xfd, 0x00, 0x9e, 0x48, 0x57, 0xe3, 0x13, 0xf9, 0x1a, 0xe6, 0xf3, 0xa4, 0xac, 0xa4, 0xf3,
+	0x14, 0x68, 0x9f, 0x75, 0x8a, 0xce, 0x4e, 0xee, 0xa4, 0x9d, 0x1d, 0xdf, 0x5c, 0x89, 0xfe, 0x74,
+	0x08, 0x7d, 0xa8, 0x8f, 0x99, 0x95, 0xe5, 0x63, 0x94, 0x01, 0x98, 0xa1, 0x47, 0xed, 0x0b, 0x0b,
+	0x2e, 0xa4, 0xf6, 0x0e, 0x45, 0x98, 0x3b, 0x45, 0x11, 0x5a, 0x27, 0x2d, 0xc2, 0xfb, 0x86, 0x08,
+	0x83, 0x29, 0x9c, 0xd4, 0xf7, 0x7e, 0x3f, 0xce, 0xc1, 0x2c, 0xa6, 0x3d, 0x2f, 0x96, 0x3a, 0xdd,
+	0x0c, 0xea, 0xb9, 0x33, 0xc4, 0x1a, 0x89, 0x57, 0xc5, 0xea, 0x64, 0xac, 0x90, 0x5b, 0x28, 0x62,
+	0x37, 0xf0, 0x2c, 0x47, 0x16, 0xfc, 0x40, 0x52, 0x57, 0x5d, 0x49, 0x2a, 0x3d, 0xac, 0x00, 0x05,
+	0xb2, 0xac, 0xca, 0xd1, 0xd7, 0xc6, 0xeb, 0x19, 0xea, 0x7b, 0x06, 0x91, 0x65, 0x33, 0x56, 0x80,
+	0xf6, 0xa7, 0x39, 0x50, 0x71, 0xc9, 0x63, 0xb0, 0xbb, 0xbf, 0x1e, 0xb3, 0xbb, 0xcb, 0xa3, 0x7a,
+	0x57, 0x42, 0x3c, 0xc3, 0x72, 0x0f, 0xc9, 0x98, 0xf1, 0x72, 0x16, 0xd0, 0x47, 0xe7, 0x1d, 0xfe,
+	0xc1, 0x82, 0x92, 0xec, 0xf7, 0x18, 0x4c, 0xf8, 0x66, 0xdc, 0x84, 0xbf, 0x98, 0x61, 0x15, 0x43,
+	0x4c, 0xf7, 0x27, 0x79, 0x3d, 0xfb, 0x30, 0x22, 0x6d, 0x13, 0xbf, 0xa9, 0x63, 0xad, 0x48, 0x03,
+	0x45, 0x23, 0x56, 0x34, 0xf4, 0x9b, 0xaa, 0x80, 0x89, 0x32, 0x4e, 0x9b, 0x37, 0xc3, 0xc0, 0x27,
+	0x9f, 0xb9, 0x12, 0x4b, 0x57, 0x8b, 0x45, 0x39, 0x77, 0x9c, 0x40, 0xc5, 0x03, 0x7c, 0x44, 0x30,
+	0xd4, 0x4b, 0xda, 0x32, 0x1d, 0x24, 0xbc, 0x3e, 0xa6, 0xe1, 0x54, 0xc1, 0xd0, 0x40, 0x33, 0x1e,
+	0x64, 0x84, 0xda, 0x30, 0x6d, 0xd6, 0x90, 0xea, 0xb3, 0xb4, 0x92, 0xbd, 0x58, 0x55, 0x3d, 0x0c,
+	0x9b, 0x2d, 0x38, 0x86, 0x6c, 0x1f, 0x14, 0xa1, 0x6c, 0x1c, 0xbe, 0x44, 0x1e, 0x73, 0xe6, 0x74,
+	0xf2, 0x98, 0xe9, 0x61, 0x77, 0x79, 0xac, 0xb0, 0xfb, 0x72, 0x3c, 0xec, 0x7e, 0x2a, 0x19, 0x76,
+	0x83, 0x5c, 0x5d, 0x2c, 0xe4, 0x66, 0x70, 0x56, 0xc7, 0x9f, 0x41, 0x31, 0x70, 0xa6, 0x44, 0xc6,
+	0x60, 0x94, 0x8b, 0x84, 0x5f, 0x79, 0x33, 0x06, 0x89, 0x13, 0x2c, 0x84, 0x5f, 0xaa, 0x5b, 0xea,
+	0xfd, 0x6e, 0x97, 0xf8, 0xfb, 0x0b, 0xd3, 0x72, 0xc2, 0xa1, 0x5f, 0x7a, 0x33, 0x46, 0xc5, 0x89,
+	0xde, 0x68, 0x13, 0x8a, 0x2a, 0x7c, 0xd5, 0x05, 0xa6, 0x2f, 0x65, 0x89, 0x8c, 0x95, 0x5f, 0xae,
+	0xfe, 0xc6, 0x1a, 0xc7, 0xcc, 0x3c, 0x94, 0x8e, 0xc8, 0x3c, 0xdc, 0x01, 0xe4, 0x6d, 0xcb, 0x08,
+	0xa0, 0x79, 0x4b, 0x7d, 0x18, 0x2f, 0x4e, 0x65, 0x51, 0x86, 0xb5, 0xe1, 0x86, 0xdd, 0x1d, 0xe8,
+	0x81, 0x53, 0x46, 0x09, 0xad, 0xd6, 0x31, 0x6f, 0xa8, 0x0a, 0x3a, 0xcb, 0x90, 0x35, 0x66, 0x8a,
+	0x82, 0x38, 0x59, 0xa0, 0x58, 0x4b, 0xa0, 0xe2, 0x01, 0x3e, 0xe8, 0x23, 0x98, 0x11, 0x47, 0x28,
+	0x62, 0x0c, 0xc7, 0x64, 0x3c, 0x77, 0x78, 0xb0, 0x34, 0xb3, 0x61, 0x42, 0xe2, 0x38, 0x07, 0xfb,
+	0x4f, 0xf2, 0x90, 0x1e, 0x71, 0x47, 0xdf, 0x46, 0x58, 0x8f, 0xf8, 0x36, 0xe2, 0x5d, 0x28, 0x31,
+	0x4e, 0x7c, 0xf5, 0x1d, 0x49, 0x6e, 0xbc, 0xef, 0x48, 0xea, 0x01, 0x00, 0x8e, 0xb0, 0x12, 0xe9,
+	0x8f, 0xfc, 0x89, 0xa6, 0x3f, 0x56, 0x00, 0x64, 0x54, 0x55, 0xf3, 0xfa, 0xfa, 0xc1, 0x73, 0x26,
+	0xb2, 0x09, 0x37, 0x42, 0x0a, 0x36, 0x7a, 0xa1, 0xab, 0xe1, 0xc5, 0xa9, 0x5e, 0x38, 0x2f, 0x0d,
+	0x94, 0x95, 0x24, 0x13, 0x68, 0x29, 0x5f, 0x7f, 0x1f, 0x51, 0x86, 0x66, 0xff, 0x6f, 0x0e, 0x62,
+	0xc6, 0x10, 0xfd, 0xd0, 0x82, 0x39, 0x92, 0xf8, 0xc4, 0x3e, 0xf0, 0x25, 0x7f, 0x2d, 0xdb, 0xef,
+	0x1e, 0x0c, 0x7c, 0xa1, 0x1f, 0xbd, 0x29, 0x25, 0xbb, 0x30, 0x3c, 0xc8, 0x14, 0xfd, 0xa1, 0x05,
+	0xe7, 0xc9, 0xe0, 0x6f, 0x28, 0xe8, 0x4d, 0x7f, 0x63, 0xec, 0x1f, 0x61, 0xa8, 0x3e, 0x79, 0x78,
+	0xb0, 0x94, 0xf6, 0xeb, 0x12, 0x38, 0x8d, 0x1d, 0x7a, 0x1f, 0x26, 0x88, 0xdf, 0x0a, 0xf2, 0xaf,
+	0xd9, 0xd9, 0x06, 0x3f, 0x8d, 0x11, 0x79, 0x47, 0xab, 0x7e, 0x8b, 0x61, 0x09, 0x6a, 0xff, 0x34,
+	0x0f, 0xb3, 0xc9, 0x6f, 0x29, 0x74, 0xa5, 0xe2, 0x44, 0x6a, 0xa5, 0xa2, 0xd0, 0x91, 0x06, 0x0f,
+	0xcb, 0x06, 0x23, 0x1d, 0x11, 0x8d, 0x58, 0xd1, 0x42, 0x1d, 0x91, 0x15, 0xce, 0x85, 0x63, 0xe8,
+	0x88, 0x2c, 0x6b, 0x8e, 0xb0, 0xd0, 0xd5, 0xf8, 0xdd, 0x62, 0x27, 0xef, 0x96, 0x39, 0x73, 0x2d,
+	0xe3, 0x66, 0x75, 0xbb, 0x50, 0x36, 0xf6, 0x41, 0x6b, 0xe2, 0xb5, 0xcc, 0x72, 0x8f, 0x8e, 0xdd,
+	0x39, 0x55, 0xdc, 0x12, 0x51, 0x4c, 0xfc, 0x48, 0xef, 0xa5, 0xb4, 0x8e, 0x95, 0xf6, 0x94, 0xe2,
+	0x32, 0xd0, 0xec, 0xff, 0xb0, 0x60, 0x26, 0x56, 0x3e, 0x2b, 0xb8, 0x05, 0x65, 0xca, 0xe3, 0xff,
+	0x9e, 0xc4, 0xbd, 0x10, 0x01, 0x1b, 0x68, 0xe8, 0x7b, 0x50, 0xee, 0x78, 0x6e, 0x8b, 0x32, 0x5e,
+	0xf7, 0xc8, 0xae, 0xd6, 0x93, 0xac, 0x49, 0xa4, 0x85, 0xc3, 0x83, 0xa5, 0xf9, 0x0d, 0x05, 0x53,
+	0xf3, 0xba, 0xbd, 0x0e, 0xe5, 0xaa, 0xa0, 0x1d, 0x9b, 0xe0, 0xf2, 0x65, 0xf4, 0x5d, 0xe2, 0xd3,
+	0xb6, 0xd7, 0x67, 0xf4, 0x9b, 0xfa, 0x32, 0x1a, 0x4e, 0xf0, 0xa4, 0x5f, 0x46, 0x23, 0xe0, 0xa3,
+	0x5f, 0x46, 0xc3, 0xbe, 0xdf, 0xd8, 0x97, 0xd1, 0x70, 0x86, 0x43, 0x22, 0x95, 0xff, 0xc9, 0x19,
+	0xab, 0x88, 0x47, 0x2b, 0xb9, 0x47, 0x44, 0x2b, 0x1f, 0xc0, 0x94, 0xe3, 0x72, 0xea, 0xef, 0x91,
+	0x8e, 0xce, 0x01, 0x67, 0x3d, 0x8b, 0xe1, 0x52, 0xd7, 0x35, 0x0e, 0x0e, 0x11, 0x51, 0x07, 0x2e,
+	0x04, 0x6f, 0x26, 0x3e, 0x25, 0xd1, 0x9b, 0xad, 0xae, 0x7b, 0x7a, 0x2d, 0x48, 0xee, 0xdf, 0x4c,
+	0xeb, 0xf4, 0x70, 0x18, 0x01, 0xa7, 0x83, 0x22, 0x06, 0x33, 0xcc, 0x08, 0xd3, 0x83, 0x1b, 0x71,
+	0xc4, 0xf7, 0xa6, 0x64, 0x66, 0xc3, 0x28, 0x96, 0x32, 0x41, 0x71, 0x9c, 0x87, 0xfd, 0xaf, 0x79,
+	0x38, 0x97, 0x38, 0x69, 0x89, 0x70, 0xa4, 0xf4, 0x38, 0xc3, 0x91, 0xe2, 0x58, 0xe1, 0x48, 0xba,
+	0xa7, 0x3c, 0x31, 0x96, 0xa7, 0xfc, 0xa6, 0xf2, 0x56, 0xf5, 0xce, 0xad, 0xaf, 0xe9, 0x82, 0xf8,
+	0x50, 0x9a, 0x1b, 0x26, 0x11, 0xc7, 0xfb, 0x4a, 0x77, 0xa2, 0x39, 0xf8, 0xdb, 0x04, 0xda, 0xd5,
+	0x7e, 0x23, 0x6b, 0x71, 0x60, 0x08, 0xa0, 0xdc, 0x89, 0x14, 0x02, 0x4e, 0x63, 0x57, 0xbd, 0xf3,
+	0xf9, 0xd7, 0x17, 0xcf, 0x7c, 0xf9, 0xf5, 0xc5, 0x33, 0x5f, 0x7d, 0x7d, 0xf1, 0xcc, 0x0f, 0x0e,
+	0x2f, 0x5a, 0x9f, 0x1f, 0x5e, 0xb4, 0xbe, 0x3c, 0xbc, 0x68, 0x7d, 0x75, 0x78, 0xd1, 0xfa, 0xaf,
+	0xc3, 0x8b, 0xd6, 0x8f, 0x7e, 0x7e, 0xf1, 0xcc, 0xfd, 0x67, 0x47, 0xf9, 0x45, 0xb3, 0xff, 0x0b,
+	0x00, 0x00, 0xff, 0xff, 0xb3, 0x95, 0x0d, 0x4d, 0xf8, 0x4c, 0x00, 0x00,
 }
 
 func (m *AnalysisRunArgument) Marshal() (dAtA []byte, err error) {
@@ -2939,6 +2943,30 @@ func (m *DiscoveredImageReference) MarshalToSizedBuffer(dAtA []byte) (int, error
 	_ = i
 	var l int
 	_ = l
+	if len(m.Annotations) > 0 {
+		keysForAnnotations := make([]string, 0, len(m.Annotations))
+		for k := range m.Annotations {
+			keysForAnnotations = append(keysForAnnotations, string(k))
+		}
+		github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+		for iNdEx := len(keysForAnnotations) - 1; iNdEx >= 0; iNdEx-- {
+			v := m.Annotations[string(keysForAnnotations[iNdEx])]
+			baseI := i
+			i -= len(v)
+			copy(dAtA[i:], v)
+			i = encodeVarintGenerated(dAtA, i, uint64(len(v)))
+			i--
+			dAtA[i] = 0x12
+			i -= len(keysForAnnotations[iNdEx])
+			copy(dAtA[i:], keysForAnnotations[iNdEx])
+			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAnnotations[iNdEx])))
+			i--
+			dAtA[i] = 0xa
+			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
+			i--
+			dAtA[i] = 0x2a
+		}
+	}
 	if m.CreatedAt != nil {
 		{
 			size, err := m.CreatedAt.MarshalToSizedBuffer(dAtA[:i])
@@ -3825,6 +3853,30 @@ func (m *Image) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	_ = i
 	var l int
 	_ = l
+	if len(m.Annotations) > 0 {
+		keysForAnnotations := make([]string, 0, len(m.Annotations))
+		for k := range m.Annotations {
+			keysForAnnotations = append(keysForAnnotations, string(k))
+		}
+		github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+		for iNdEx := len(keysForAnnotations) - 1; iNdEx >= 0; iNdEx-- {
+			v := m.Annotations[string(keysForAnnotations[iNdEx])]
+			baseI := i
+			i -= len(v)
+			copy(dAtA[i:], v)
+			i = encodeVarintGenerated(dAtA, i, uint64(len(v)))
+			i--
+			dAtA[i] = 0x12
+			i -= len(keysForAnnotations[iNdEx])
+			copy(dAtA[i:], keysForAnnotations[iNdEx])
+			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAnnotations[iNdEx])))
+			i--
+			dAtA[i] = 0xa
+			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
+			i--
+			dAtA[i] = 0x2a
+		}
+	}
 	i -= len(m.Digest)
 	copy(dAtA[i:], m.Digest)
 	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Digest)))
@@ -6069,6 +6121,14 @@ func (m *DiscoveredImageReference) Size() (n int) {
 		l = m.CreatedAt.Size()
 		n += 1 + l + sovGenerated(uint64(l))
 	}
+	if len(m.Annotations) > 0 {
+		for k, v := range m.Annotations {
+			_ = k
+			_ = v
+			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
+			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
+		}
+	}
 	return n
 }
 
@@ -6399,6 +6459,14 @@ func (m *Image) Size() (n int) {
 	n += 1 + l + sovGenerated(uint64(l))
 	l = len(m.Digest)
 	n += 1 + l + sovGenerated(uint64(l))
+	if len(m.Annotations) > 0 {
+		for k, v := range m.Annotations {
+			_ = k
+			_ = v
+			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
+			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
+		}
+	}
 	return n
 }
 
@@ -7343,11 +7411,22 @@ func (this *DiscoveredImageReference) String() string {
 	if this == nil {
 		return "nil"
 	}
+	keysForAnnotations := make([]string, 0, len(this.Annotations))
+	for k := range this.Annotations {
+		keysForAnnotations = append(keysForAnnotations, k)
+	}
+	github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+	mapStringForAnnotations := "map[string]string{"
+	for _, k := range keysForAnnotations {
+		mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+	}
+	mapStringForAnnotations += "}"
 	s := strings.Join([]string{`&DiscoveredImageReference{`,
 		`Tag:` + fmt.Sprintf("%v", this.Tag) + `,`,
 		`Digest:` + fmt.Sprintf("%v", this.Digest) + `,`,
 		`GitRepoURL:` + fmt.Sprintf("%v", this.GitRepoURL) + `,`,
 		`CreatedAt:` + strings.Replace(fmt.Sprintf("%v", this.CreatedAt), "Time", "v1.Time", 1) + `,`,
+		`Annotations:` + mapStringForAnnotations + `,`,
 		`}`,
 	}, "")
 	return s
@@ -7601,11 +7680,22 @@ func (this *Image) String() string {
 	if this == nil {
 		return "nil"
 	}
+	keysForAnnotations := make([]string, 0, len(this.Annotations))
+	for k := range this.Annotations {
+		keysForAnnotations = append(keysForAnnotations, k)
+	}
+	github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+	mapStringForAnnotations := "map[string]string{"
+	for _, k := range keysForAnnotations {
+		mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+	}
+	mapStringForAnnotations += "}"
 	s := strings.Join([]string{`&Image{`,
 		`RepoURL:` + fmt.Sprintf("%v", this.RepoURL) + `,`,
 		`GitRepoURL:` + fmt.Sprintf("%v", this.GitRepoURL) + `,`,
 		`Tag:` + fmt.Sprintf("%v", this.Tag) + `,`,
 		`Digest:` + fmt.Sprintf("%v", this.Digest) + `,`,
+		`Annotations:` + mapStringForAnnotations + `,`,
 		`}`,
 	}, "")
 	return s
@@ -10803,6 +10893,133 @@ func (m *DiscoveredImageReference) Unmarshal(dAtA []byte) error {
 				return err
 			}
 			iNdEx = postIndex
+		case 5:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if m.Annotations == nil {
+				m.Annotations = make(map[string]string)
+			}
+			var mapkey string
+			var mapvalue string
+			for iNdEx < postIndex {
+				entryPreIndex := iNdEx
+				var wire uint64
+				for shift := uint(0); ; shift += 7 {
+					if shift >= 64 {
+						return ErrIntOverflowGenerated
+					}
+					if iNdEx >= l {
+						return io.ErrUnexpectedEOF
+					}
+					b := dAtA[iNdEx]
+					iNdEx++
+					wire |= uint64(b&0x7F) << shift
+					if b < 0x80 {
+						break
+					}
+				}
+				fieldNum := int32(wire >> 3)
+				if fieldNum == 1 {
+					var stringLenmapkey uint64
+					for shift := uint(0); ; shift += 7 {
+						if shift >= 64 {
+							return ErrIntOverflowGenerated
+						}
+						if iNdEx >= l {
+							return io.ErrUnexpectedEOF
+						}
+						b := dAtA[iNdEx]
+						iNdEx++
+						stringLenmapkey |= uint64(b&0x7F) << shift
+						if b < 0x80 {
+							break
+						}
+					}
+					intStringLenmapkey := int(stringLenmapkey)
+					if intStringLenmapkey < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if postStringIndexmapkey > l {
+						return io.ErrUnexpectedEOF
+					}
+					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+					iNdEx = postStringIndexmapkey
+				} else if fieldNum == 2 {
+					var stringLenmapvalue uint64
+					for shift := uint(0); ; shift += 7 {
+						if shift >= 64 {
+							return ErrIntOverflowGenerated
+						}
+						if iNdEx >= l {
+							return io.ErrUnexpectedEOF
+						}
+						b := dAtA[iNdEx]
+						iNdEx++
+						stringLenmapvalue |= uint64(b&0x7F) << shift
+						if b < 0x80 {
+							break
+						}
+					}
+					intStringLenmapvalue := int(stringLenmapvalue)
+					if intStringLenmapvalue < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if postStringIndexmapvalue > l {
+						return io.ErrUnexpectedEOF
+					}
+					mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+					iNdEx = postStringIndexmapvalue
+				} else {
+					iNdEx = entryPreIndex
+					skippy, err := skipGenerated(dAtA[iNdEx:])
+					if err != nil {
+						return err
+					}
+					if (skippy < 0) || (iNdEx+skippy) < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if (iNdEx + skippy) > postIndex {
+						return io.ErrUnexpectedEOF
+					}
+					iNdEx += skippy
+				}
+			}
+			m.Annotations[mapkey] = mapvalue
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
@@ -13739,6 +13956,133 @@ func (m *Image) Unmarshal(dAtA []byte) error {
 			}
 			m.Digest = string(dAtA[iNdEx:postIndex])
 			iNdEx = postIndex
+		case 5:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthGenerated
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if m.Annotations == nil {
+				m.Annotations = make(map[string]string)
+			}
+			var mapkey string
+			var mapvalue string
+			for iNdEx < postIndex {
+				entryPreIndex := iNdEx
+				var wire uint64
+				for shift := uint(0); ; shift += 7 {
+					if shift >= 64 {
+						return ErrIntOverflowGenerated
+					}
+					if iNdEx >= l {
+						return io.ErrUnexpectedEOF
+					}
+					b := dAtA[iNdEx]
+					iNdEx++
+					wire |= uint64(b&0x7F) << shift
+					if b < 0x80 {
+						break
+					}
+				}
+				fieldNum := int32(wire >> 3)
+				if fieldNum == 1 {
+					var stringLenmapkey uint64
+					for shift := uint(0); ; shift += 7 {
+						if shift >= 64 {
+							return ErrIntOverflowGenerated
+						}
+						if iNdEx >= l {
+							return io.ErrUnexpectedEOF
+						}
+						b := dAtA[iNdEx]
+						iNdEx++
+						stringLenmapkey |= uint64(b&0x7F) << shift
+						if b < 0x80 {
+							break
+						}
+					}
+					intStringLenmapkey := int(stringLenmapkey)
+					if intStringLenmapkey < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if postStringIndexmapkey > l {
+						return io.ErrUnexpectedEOF
+					}
+					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+					iNdEx = postStringIndexmapkey
+				} else if fieldNum == 2 {
+					var stringLenmapvalue uint64
+					for shift := uint(0); ; shift += 7 {
+						if shift >= 64 {
+							return ErrIntOverflowGenerated
+						}
+						if iNdEx >= l {
+							return io.ErrUnexpectedEOF
+						}
+						b := dAtA[iNdEx]
+						iNdEx++
+						stringLenmapvalue |= uint64(b&0x7F) << shift
+						if b < 0x80 {
+							break
+						}
+					}
+					intStringLenmapvalue := int(stringLenmapvalue)
+					if intStringLenmapvalue < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if postStringIndexmapvalue > l {
+						return io.ErrUnexpectedEOF
+					}
+					mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+					iNdEx = postStringIndexmapvalue
+				} else {
+					iNdEx = entryPreIndex
+					skippy, err := skipGenerated(dAtA[iNdEx:])
+					if err != nil {
+						return err
+					}
+					if (skippy < 0) || (iNdEx+skippy) < 0 {
+						return ErrInvalidLengthGenerated
+					}
+					if (iNdEx + skippy) > postIndex {
+						return io.ErrUnexpectedEOF
+					}
+					iNdEx += skippy
+				}
+			}
+			m.Annotations[mapkey] = mapvalue
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/api/v1alpha1/generated.proto b/api/v1alpha1/generated.proto
index bc43e9e1..6ee061a7 100644
--- a/api/v1alpha1/generated.proto
+++ b/api/v1alpha1/generated.proto
@@ -288,6 +288,10 @@ message DiscoveredImageReference {
   // +kubebuilder:validation:Pattern=`^[a-z0-9]+:[a-f0-9]+$`
   optional string digest = 2;
 
+  // Annotations is a map of key-value pairs that provide additional
+  // information about the image.
+  map<string, string> annotations = 5;
+
   // GitRepoURL is the URL of the Git repository that contains the source
   // code for this image. This field is optional, and only populated if the
   // ImageSubscription specifies a GitRepoURL.
@@ -664,6 +668,9 @@ message Image {
   // Digest identifies a specific version of the image in the repository
   // specified by RepoURL. This is a more precise identifier than Tag.
   optional string digest = 4;
+
+  // Annotations is a map of arbitrary metadata for the image.
+  map<string, string> annotations = 5;
 }
 
 // ImageDiscoveryResult represents the result of an image discovery operation
diff --git a/api/v1alpha1/stage_types.go b/api/v1alpha1/stage_types.go
index 4b7bd94e..174c2b77 100644
--- a/api/v1alpha1/stage_types.go
+++ b/api/v1alpha1/stage_types.go
@@ -3,6 +3,7 @@ package v1alpha1
 import (
 	"crypto/sha1"
 	"fmt"
+	"maps"
 	"slices"
 	"strings"
 
@@ -524,6 +525,8 @@ type Image struct {
 	// Digest identifies a specific version of the image in the repository
 	// specified by RepoURL. This is a more precise identifier than Tag.
 	Digest string `json:"digest,omitempty" protobuf:"bytes,4,opt,name=digest"`
+	// Annotations is a map of arbitrary metadata for the image.
+	Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,5,rep,name=annotations" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 // DeepEquals returns a bool indicating whether the receiver deep-equals the
@@ -538,7 +541,8 @@ func (i *Image) DeepEquals(other *Image) bool {
 	return i.RepoURL == other.RepoURL &&
 		i.GitRepoURL == other.GitRepoURL &&
 		i.Tag == other.Tag &&
-		i.Digest == other.Digest
+		i.Digest == other.Digest &&
+		maps.Equal(i.Annotations, other.Annotations)
 }
 
 // Chart describes a specific version of a Helm chart.
diff --git a/api/v1alpha1/warehouse_types.go b/api/v1alpha1/warehouse_types.go
index 21da0d9a..5c659bce 100644
--- a/api/v1alpha1/warehouse_types.go
+++ b/api/v1alpha1/warehouse_types.go
@@ -467,6 +467,9 @@ type DiscoveredImageReference struct {
 	// +kubebuilder:validation:MinLength=1
 	// +kubebuilder:validation:Pattern=`^[a-z0-9]+:[a-f0-9]+$`
 	Digest string `json:"digest" protobuf:"bytes,2,opt,name=digest"`
+	// Annotations is a map of key-value pairs that provide additional
+	// information about the image.
+	Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,5,rep,name=annotations" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// GitRepoURL is the URL of the Git repository that contains the source
 	// code for this image. This field is optional, and only populated if the
 	// ImageSubscription specifies a GitRepoURL.
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index d478c6d6..f3cab7fc 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -341,6 +341,13 @@ func (in *DiscoveredCommit) DeepCopy() *DiscoveredCommit {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *DiscoveredImageReference) DeepCopyInto(out *DiscoveredImageReference) {
 	*out = *in
+	if in.Annotations != nil {
+		in, out := &in.Annotations, &out.Annotations
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
 	if in.CreatedAt != nil {
 		in, out := &in.CreatedAt, &out.CreatedAt
 		*out = (*in).DeepCopy()
@@ -371,7 +378,9 @@ func (in *Freight) DeepCopyInto(out *Freight) {
 	if in.Images != nil {
 		in, out := &in.Images, &out.Images
 		*out = make([]Image, len(*in))
-		copy(*out, *in)
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
 	}
 	if in.Charts != nil {
 		in, out := &in.Charts, &out.Charts
@@ -512,7 +521,9 @@ func (in *FreightReference) DeepCopyInto(out *FreightReference) {
 	if in.Images != nil {
 		in, out := &in.Images, &out.Images
 		*out = make([]Image, len(*in))
-		copy(*out, *in)
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
 	}
 	if in.Charts != nil {
 		in, out := &in.Charts, &out.Charts
@@ -729,6 +740,13 @@ func (in *HealthCheckStep) DeepCopy() *HealthCheckStep {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *Image) DeepCopyInto(out *Image) {
 	*out = *in
+	if in.Annotations != nil {
+		in, out := &in.Annotations, &out.Annotations
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.
diff --git a/charts/kargo/resources/crds/kargo.akuity.io_freights.yaml b/charts/kargo/resources/crds/kargo.akuity.io_freights.yaml
index e55c1053..eabce520 100644
--- a/charts/kargo/resources/crds/kargo.akuity.io_freights.yaml
+++ b/charts/kargo/resources/crds/kargo.akuity.io_freights.yaml
@@ -115,6 +115,12 @@ spec:
             items:
               description: Image describes a specific version of a container image.
               properties:
+                annotations:
+                  additionalProperties:
+                    type: string
+                  description: Annotations is a map of arbitrary metadata for the
+                    image.
+                  type: object
                 digest:
                   description: |-
                     Digest identifies a specific version of the image in the repository
diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml
index 38ca7743..756da83c 100644
--- a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml
+++ b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml
@@ -324,6 +324,12 @@ spec:
                       description: Image describes a specific version of a container
                         image.
                       properties:
+                        annotations:
+                          additionalProperties:
+                            type: string
+                          description: Annotations is a map of arbitrary metadata
+                            for the image.
+                          type: object
                         digest:
                           description: |-
                             Digest identifies a specific version of the image in the repository
@@ -459,6 +465,12 @@ spec:
                             description: Image describes a specific version of a container
                               image.
                             properties:
+                              annotations:
+                                additionalProperties:
+                                  type: string
+                                description: Annotations is a map of arbitrary metadata
+                                  for the image.
+                                type: object
                               digest:
                                 description: |-
                                   Digest identifies a specific version of the image in the repository
diff --git a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml
index be7f53e9..1cab0d94 100644
--- a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml
+++ b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml
@@ -536,6 +536,12 @@ spec:
                           description: Image describes a specific version of a container
                             image.
                           properties:
+                            annotations:
+                              additionalProperties:
+                                type: string
+                              description: Annotations is a map of arbitrary metadata
+                                for the image.
+                              type: object
                             digest:
                               description: |-
                                 Digest identifies a specific version of the image in the repository
@@ -677,6 +683,12 @@ spec:
                               description: Image describes a specific version of a
                                 container image.
                               properties:
+                                annotations:
+                                  additionalProperties:
+                                    type: string
+                                  description: Annotations is a map of arbitrary metadata
+                                    for the image.
+                                  type: object
                                 digest:
                                   description: |-
                                     Digest identifies a specific version of the image in the repository
@@ -814,6 +826,12 @@ spec:
                                     description: Image describes a specific version
                                       of a container image.
                                     properties:
+                                      annotations:
+                                        additionalProperties:
+                                          type: string
+                                        description: Annotations is a map of arbitrary
+                                          metadata for the image.
+                                        type: object
                                       digest:
                                         description: |-
                                           Digest identifies a specific version of the image in the repository
@@ -1112,6 +1130,12 @@ spec:
                               description: Image describes a specific version of a
                                 container image.
                               properties:
+                                annotations:
+                                  additionalProperties:
+                                    type: string
+                                  description: Annotations is a map of arbitrary metadata
+                                    for the image.
+                                  type: object
                                 digest:
                                   description: |-
                                     Digest identifies a specific version of the image in the repository
@@ -1353,6 +1377,12 @@ spec:
                           description: Image describes a specific version of a container
                             image.
                           properties:
+                            annotations:
+                              additionalProperties:
+                                type: string
+                              description: Annotations is a map of arbitrary metadata
+                                for the image.
+                              type: object
                             digest:
                               description: |-
                                 Digest identifies a specific version of the image in the repository
@@ -1494,6 +1524,12 @@ spec:
                               description: Image describes a specific version of a
                                 container image.
                               properties:
+                                annotations:
+                                  additionalProperties:
+                                    type: string
+                                  description: Annotations is a map of arbitrary metadata
+                                    for the image.
+                                  type: object
                                 digest:
                                   description: |-
                                     Digest identifies a specific version of the image in the repository
@@ -1631,6 +1667,12 @@ spec:
                                     description: Image describes a specific version
                                       of a container image.
                                     properties:
+                                      annotations:
+                                        additionalProperties:
+                                          type: string
+                                        description: Annotations is a map of arbitrary
+                                          metadata for the image.
+                                        type: object
                                       digest:
                                         description: |-
                                           Digest identifies a specific version of the image in the repository
diff --git a/charts/kargo/resources/crds/kargo.akuity.io_warehouses.yaml b/charts/kargo/resources/crds/kargo.akuity.io_warehouses.yaml
index e0a24e55..c67889a7 100644
--- a/charts/kargo/resources/crds/kargo.akuity.io_warehouses.yaml
+++ b/charts/kargo/resources/crds/kargo.akuity.io_warehouses.yaml
@@ -578,6 +578,13 @@ spec:
                               DiscoveredImageReference represents an image reference discovered by a
                               Warehouse for an ImageSubscription.
                             properties:
+                              annotations:
+                                additionalProperties:
+                                  type: string
+                                description: |-
+                                  Annotations is a map of key-value pairs that provide additional
+                                  information about the image.
+                                type: object
                               createdAt:
                                 description: |-
                                   CreatedAt is the time the image was created. This field is optional, and
diff --git a/internal/controller/warehouses/images.go b/internal/controller/warehouses/images.go
index 78394dec..03d2d403 100644
--- a/internal/controller/warehouses/images.go
+++ b/internal/controller/warehouses/images.go
@@ -76,9 +76,10 @@ func (r *reconciler) discoverImages(
 		discoveredImages := make([]kargoapi.DiscoveredImageReference, 0, len(images))
 		for _, img := range images {
 			discovery := kargoapi.DiscoveredImageReference{
-				Tag:        img.Tag,
-				Digest:     img.Digest,
-				GitRepoURL: r.getImageSourceURL(sub.GitRepoURL, img.Tag),
+				Tag:         img.Tag,
+				Digest:      img.Digest,
+				Annotations: img.Annotations,
+				GitRepoURL:  r.getImageSourceURL(sub.GitRepoURL, img.Tag),
 			}
 			if img.CreatedAt != nil {
 				discovery.CreatedAt = &metav1.Time{Time: *img.CreatedAt}
diff --git a/internal/controller/warehouses/warehouses.go b/internal/controller/warehouses/warehouses.go
index fc6fd673..96c11dd7 100644
--- a/internal/controller/warehouses/warehouses.go
+++ b/internal/controller/warehouses/warehouses.go
@@ -461,10 +461,11 @@ func (r *reconciler) buildFreightFromLatestArtifacts(
 		}
 		latestImage := result.References[0]
 		freight.Images = append(freight.Images, kargoapi.Image{
-			RepoURL:    result.RepoURL,
-			GitRepoURL: latestImage.GitRepoURL,
-			Tag:        latestImage.Tag,
-			Digest:     latestImage.Digest,
+			RepoURL:     result.RepoURL,
+			GitRepoURL:  latestImage.GitRepoURL,
+			Tag:         latestImage.Tag,
+			Digest:      latestImage.Digest,
+			Annotations: latestImage.Annotations,
 		})
 	}
 
diff --git a/internal/image/image.go b/internal/image/image.go
index 9ac816b8..973f4b58 100644
--- a/internal/image/image.go
+++ b/internal/image/image.go
@@ -8,10 +8,12 @@ import (
 
 // Image is a representation of a container image.
 type Image struct {
-	Tag       string
-	Digest    string
-	CreatedAt *time.Time
-	semVer    *semver.Version
+	Tag         string
+	Digest      string
+	Annotations map[string]string
+	CreatedAt   *time.Time
+
+	semVer *semver.Version
 }
 
 // newImage initializes and returns an Image.
diff --git a/internal/image/repository_client.go b/internal/image/repository_client.go
index 299dfe89..c2e39d0b 100644
--- a/internal/image/repository_client.go
+++ b/internal/image/repository_client.go
@@ -270,6 +270,10 @@ func (r *repositoryClient) getImageFromV1ImageIndex(
 			digest, err,
 		)
 	}
+
+	// Extract annotations from the index manifest.
+	annotations := idxManifest.Annotations
+
 	refs := make([]v1.Descriptor, 0, len(idxManifest.Manifests))
 	for _, ref := range idxManifest.Manifests {
 		if ref.Platform == nil ||
@@ -289,19 +293,17 @@ func (r *repositoryClient) getImageFromV1ImageIndex(
 	if platform != nil {
 		var matchedRefs []v1.Descriptor
 		for _, ref := range refs {
-			if !platform.matches(
-				ref.Platform.OS,
-				ref.Platform.Architecture,
-				ref.Platform.Variant,
-			) {
+			if !platform.matches(ref.Platform.OS, ref.Platform.Architecture, ref.Platform.Variant) {
 				continue
 			}
 			matchedRefs = append(matchedRefs, ref)
 		}
+
 		if len(matchedRefs) == 0 {
 			// No refs matched the platform
 			return nil, nil
 		}
+
 		if len(matchedRefs) > 1 {
 			// This really shouldn't happen.
 			return nil, fmt.Errorf(
@@ -310,7 +312,9 @@ func (r *repositoryClient) getImageFromV1ImageIndex(
 				len(matchedRefs),
 			)
 		}
+
 		ref := matchedRefs[0]
+
 		img, err := r.getImageByDigestFn(ctx, ref.Digest.String(), platform)
 		if err != nil {
 			return nil, fmt.Errorf(
@@ -328,6 +332,8 @@ func (r *repositoryClient) getImageFromV1ImageIndex(
 			)
 		}
 		img.Digest = digest
+		img.Annotations = annotations
+
 		return img, nil
 	}
 
@@ -352,9 +358,11 @@ func (r *repositoryClient) getImageFromV1ImageIndex(
 			createdAt = img.CreatedAt
 		}
 	}
+
 	return &Image{
-		Digest:    digest,
-		CreatedAt: createdAt,
+		Digest:      digest,
+		CreatedAt:   createdAt,
+		Annotations: annotations,
 	}, nil
 }
 
@@ -377,9 +385,20 @@ func (r *repositoryClient) getImageFromV1Image(
 		// This image doesn't match the platform constraint.
 		return nil, nil
 	}
+
+	// Extract annotations from the manifest
+	manifest, err := img.Manifest()
+	if err != nil {
+		return nil, fmt.Errorf(
+			"error getting manifest for image with digest %s: %w",
+			digest, err,
+		)
+	}
+
 	return &Image{
-		Digest:    digest,
-		CreatedAt: &cfg.Created.Time,
+		Digest:      digest,
+		CreatedAt:   &cfg.Created.Time,
+		Annotations: manifest.Annotations,
 	}, nil
 }
 
diff --git a/ui/src/gen/api/v1alpha1/generated_pb.ts b/ui/src/gen/api/v1alpha1/generated_pb.ts
index d3cbde0f..5a86e428 100644
--- a/ui/src/gen/api/v1alpha1/generated_pb.ts
+++ b/ui/src/gen/api/v1alpha1/generated_pb.ts
@@ -18,7 +18,7 @@ import type { Message } from "@bufbuild/protobuf";
  * Describes the file api/v1alpha1/generated.proto.
  */
 export const file_api_v1alpha1_generated: GenFile = /*@__PURE__*/
-  fileDesc("ChxhcGkvdjFhbHBoYTEvZ2VuZXJhdGVkLnByb3RvEiRnaXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEiMgoTQW5hbHlzaXNSdW5Bcmd1bWVudBIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJIrACChNBbmFseXNpc1J1bk1ldGFkYXRhElUKBmxhYmVscxgBIAMoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BbmFseXNpc1J1bk1ldGFkYXRhLkxhYmVsc0VudHJ5El8KC2Fubm90YXRpb25zGAIgAygLMkouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkFuYWx5c2lzUnVuTWV0YWRhdGEuQW5ub3RhdGlvbnNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjIKEEFubm90YXRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJGChRBbmFseXNpc1J1blJlZmVyZW5jZRIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwaGFzZRgDIAEoCSI3ChlBbmFseXNpc1RlbXBsYXRlUmVmZXJlbmNlEgwKBG5hbWUYASABKAkSDAoEa2luZBgCIAEoCSJPCg1BcHByb3ZlZFN0YWdlEj4KCmFwcHJvdmVkQXQYASABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZSI4ChVBcmdvQ0RBcHBIZWFsdGhTdGF0dXMSDgoGc3RhdHVzGAEgASgJEg8KB21lc3NhZ2UYAiABKAki1AEKD0FyZ29DREFwcFN0YXR1cxIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRJRCgxoZWFsdGhTdGF0dXMYAyABKAsyOy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQXJnb0NEQXBwSGVhbHRoU3RhdHVzEk0KCnN5bmNTdGF0dXMYBCABKAsyOS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQXJnb0NEQXBwU3luY1N0YXR1cyJKChNBcmdvQ0RBcHBTeW5jU3RhdHVzEg4KBnN0YXR1cxgBIAEoCRIQCghyZXZpc2lvbhgCIAEoCRIRCglyZXZpc2lvbnMYAyADKAkiNwoFQ2hhcnQSDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkiYQoUQ2hhcnREaXNjb3ZlcnlSZXN1bHQSDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKEHNlbXZlckNvbnN0cmFpbnQYAyABKAkSEAoIdmVyc2lvbnMYBCADKAkiZAoRQ2hhcnRTdWJzY3JpcHRpb24SDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKEHNlbXZlckNvbnN0cmFpbnQYAyABKAkSFgoOZGlzY292ZXJ5TGltaXQYBCABKAUioQEKFENsdXN0ZXJQcm9tb3Rpb25UYXNrEkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESRQoEc3BlYxgCIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrU3BlYyKnAQoYQ2x1c3RlclByb21vdGlvblRhc2tMaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEkkKBWl0ZW1zGAIgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrIkkKDEN1cnJlbnRTdGFnZRI5CgVzaW5jZRgBIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lIrYCChNEaXNjb3ZlcmVkQXJ0aWZhY3RzEkAKDGRpc2NvdmVyZWRBdBgEIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lEkUKA2dpdBgBIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5HaXREaXNjb3ZlcnlSZXN1bHQSSgoGaW1hZ2VzGAIgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkltYWdlRGlzY292ZXJ5UmVzdWx0EkoKBmNoYXJ0cxgDIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DaGFydERpc2NvdmVyeVJlc3VsdCKwAQoQRGlzY292ZXJlZENvbW1pdBIKCgJpZBgBIAEoCRIOCgZicmFuY2gYAiABKAkSCwoDdGFnGAMgASgJEg8KB3N1YmplY3QYBCABKAkSDgoGYXV0aG9yGAUgASgJEhEKCWNvbW1pdHRlchgGIAEoCRI/CgtjcmVhdG9yRGF0ZRgHIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lIooBChhEaXNjb3ZlcmVkSW1hZ2VSZWZlcmVuY2USCwoDdGFnGAEgASgJEg4KBmRpZ2VzdBgCIAEoCRISCgpnaXRSZXBvVVJMGAMgASgJEj0KCWNyZWF0ZWRBdBgEIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lIqIDCgdGcmVpZ2h0EkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESDQoFYWxpYXMYByABKAkSQwoGb3JpZ2luGAkgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRPcmlnaW4SQAoHY29tbWl0cxgDIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5HaXRDb21taXQSOwoGaW1hZ2VzGAQgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkltYWdlEjsKBmNoYXJ0cxgFIAMoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DaGFydBJDCgZzdGF0dXMYBiABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFN0YXR1cyKtAgoRRnJlaWdodENvbGxlY3Rpb24SCgoCaWQYAyABKAkSUQoFaXRlbXMYASADKAsyQi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodENvbGxlY3Rpb24uSXRlbXNFbnRyeRJTChN2ZXJpZmljYXRpb25IaXN0b3J5GAIgAygLMjYuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlZlcmlmaWNhdGlvbkluZm8aZAoKSXRlbXNFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlZmVyZW5jZToCOAEijQEKC0ZyZWlnaHRMaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEjwKBWl0ZW1zGAIgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiKwoNRnJlaWdodE9yaWdpbhIMCgRraW5kGAEgASgJEgwKBG5hbWUYAiABKAkioQIKEEZyZWlnaHRSZWZlcmVuY2USDAoEbmFtZRgBIAEoCRJDCgZvcmlnaW4YCCABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodE9yaWdpbhJACgdjb21taXRzGAIgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkdpdENvbW1pdBI7CgZpbWFnZXMYAyADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSW1hZ2USOwoGY2hhcnRzGAQgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNoYXJ0IpwBCg5GcmVpZ2h0UmVxdWVzdBJDCgZvcmlnaW4YASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodE9yaWdpbhJFCgdzb3VyY2VzGAIgASgLMjQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRTb3VyY2VzIpgBCg5GcmVpZ2h0U291cmNlcxIOCgZkaXJlY3QYASABKAgSDgoGc3RhZ2VzGAIgAygJEkgKEHJlcXVpcmVkU29ha1RpbWUYAyABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuRHVyYXRpb24SHAoUYXZhaWxhYmlsaXR5U3RyYXRlZ3kYBCABKAki1wQKDUZyZWlnaHRTdGF0dXMSWQoLY3VycmVudGx5SW4YAyADKAsyRC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFN0YXR1cy5DdXJyZW50bHlJbkVudHJ5ElcKCnZlcmlmaWVkSW4YASADKAsyQy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFN0YXR1cy5WZXJpZmllZEluRW50cnkSWQoLYXBwcm92ZWRGb3IYAiADKAsyRC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFN0YXR1cy5BcHByb3ZlZEZvckVudHJ5GmYKEEN1cnJlbnRseUluRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkN1cnJlbnRTdGFnZToCOAEaZgoPVmVyaWZpZWRJbkVudHJ5EgsKA2tleRgBIAEoCRJCCgV2YWx1ZRgCIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5WZXJpZmllZFN0YWdlOgI4ARpnChBBcHByb3ZlZEZvckVudHJ5EgsKA2tleRgBIAEoCRJCCgV2YWx1ZRgCIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BcHByb3ZlZFN0YWdlOgI4ASJ5CglHaXRDb21taXQSDwoHcmVwb1VSTBgBIAEoCRIKCgJpZBgCIAEoCRIOCgZicmFuY2gYAyABKAkSCwoDdGFnGAQgASgJEg8KB21lc3NhZ2UYBiABKAkSDgoGYXV0aG9yGAcgASgJEhEKCWNvbW1pdHRlchgIIAEoCSJuChJHaXREaXNjb3ZlcnlSZXN1bHQSDwoHcmVwb1VSTBgBIAEoCRJHCgdjb21taXRzGAIgAygLMjYuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkRpc2NvdmVyZWRDb21taXQijgIKD0dpdFN1YnNjcmlwdGlvbhIPCgdyZXBvVVJMGAEgASgJEh8KF2NvbW1pdFNlbGVjdGlvblN0cmF0ZWd5GAIgASgJEg4KBmJyYW5jaBgDIAEoCRIVCg1zdHJpY3RTZW12ZXJzGAsgASgIEhgKEHNlbXZlckNvbnN0cmFpbnQYBCABKAkSEQoJYWxsb3dUYWdzGAUgASgJEhIKCmlnbm9yZVRhZ3MYBiADKAkSHQoVaW5zZWN1cmVTa2lwVExTVmVyaWZ5GAcgASgIEhQKDGluY2x1ZGVQYXRocxgIIAMoCRIUCgxleGNsdWRlUGF0aHMYCSADKAkSFgoOZGlzY292ZXJ5TGltaXQYCiABKAUiyAEKBkhlYWx0aBIOCgZzdGF0dXMYASABKAkSDgoGaXNzdWVzGAIgAygJEk4KBmNvbmZpZxgEIAEoCzI+Lms4cy5pby5hcGlleHRlbnNpb25zX2FwaXNlcnZlci5wa2cuYXBpcy5hcGlleHRlbnNpb25zLnYxLkpTT04STgoGb3V0cHV0GAUgASgLMj4uazhzLmlvLmFwaWV4dGVuc2lvbnNfYXBpc2VydmVyLnBrZy5hcGlzLmFwaWV4dGVuc2lvbnMudjEuSlNPTiJvCg9IZWFsdGhDaGVja1N0ZXASDAoEdXNlcxgBIAEoCRJOCgZjb25maWcYAiABKAsyPi5rOHMuaW8uYXBpZXh0ZW5zaW9uc19hcGlzZXJ2ZXIucGtnLmFwaXMuYXBpZXh0ZW5zaW9ucy52MS5KU09OIkkKBUltYWdlEg8KB3JlcG9VUkwYASABKAkSEgoKZ2l0UmVwb1VSTBgCIAEoCRILCgN0YWcYAyABKAkSDgoGZGlnZXN0GAQgASgJIo0BChRJbWFnZURpc2NvdmVyeVJlc3VsdBIPCgdyZXBvVVJMGAEgASgJEhAKCHBsYXRmb3JtGAIgASgJElIKCnJlZmVyZW5jZXMYAyADKAsyPi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRGlzY292ZXJlZEltYWdlUmVmZXJlbmNlIvkBChFJbWFnZVN1YnNjcmlwdGlvbhIPCgdyZXBvVVJMGAEgASgJEhIKCmdpdFJlcG9VUkwYAiABKAkSHgoWaW1hZ2VTZWxlY3Rpb25TdHJhdGVneRgDIAEoCRIVCg1zdHJpY3RTZW12ZXJzGAogASgIEhgKEHNlbXZlckNvbnN0cmFpbnQYBCABKAkSEQoJYWxsb3dUYWdzGAUgASgJEhIKCmlnbm9yZVRhZ3MYBiADKAkSEAoIcGxhdGZvcm0YByABKAkSHQoVaW5zZWN1cmVTa2lwVExTVmVyaWZ5GAggASgIEhYKDmRpc2NvdmVyeUxpbWl0GAkgASgFItMBCgdQcm9qZWN0EkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESPwoEc3BlYxgCIAEoCzIxLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0U3BlYxJDCgZzdGF0dXMYAyABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdFN0YXR1cyKNAQoLUHJvamVjdExpc3QSQAoIbWV0YWRhdGEYASABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuTGlzdE1ldGESPAoFaXRlbXMYAiADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdCJfCgtQcm9qZWN0U3BlYxJQChFwcm9tb3Rpb25Qb2xpY2llcxgBIAMoCzI1LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25Qb2xpY3kidAoNUHJvamVjdFN0YXR1cxJDCgpjb25kaXRpb25zGAMgAygLMi8uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkNvbmRpdGlvbhINCgVwaGFzZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJItkBCglQcm9tb3Rpb24SQgoIbWV0YWRhdGEYASABKAsyMC5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuT2JqZWN0TWV0YRJBCgRzcGVjGAIgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblNwZWMSRQoGc3RhdHVzGAMgASgLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblN0YXR1cyKRAQoNUHJvbW90aW9uTGlzdBJACghtZXRhZGF0YRgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5MaXN0TWV0YRI+CgVpdGVtcxgCIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iPgoPUHJvbW90aW9uUG9saWN5Eg0KBXN0YWdlGAEgASgJEhwKFGF1dG9Qcm9tb3Rpb25FbmFibGVkGAIgASgIIvIBChJQcm9tb3Rpb25SZWZlcmVuY2USDAoEbmFtZRgBIAEoCRJHCgdmcmVpZ2h0GAIgASgLMjYuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZWZlcmVuY2USRQoGc3RhdHVzGAMgASgLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblN0YXR1cxI+CgpmaW5pc2hlZEF0GAQgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUiugEKDVByb21vdGlvblNwZWMSDQoFc3RhZ2UYASABKAkSDwoHZnJlaWdodBgCIAEoCRJFCgR2YXJzGAQgAygLMjcuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblZhcmlhYmxlEkIKBXN0ZXBzGAMgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblN0ZXAitwQKD1Byb21vdGlvblN0YXR1cxIaChJsYXN0SGFuZGxlZFJlZnJlc2gYBCABKAkSDQoFcGhhc2UYASABKAkSDwoHbWVzc2FnZRgCIAEoCRJHCgdmcmVpZ2h0GAUgASgLMjYuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZWZlcmVuY2USUgoRZnJlaWdodENvbGxlY3Rpb24YByABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodENvbGxlY3Rpb24SSwoMaGVhbHRoQ2hlY2tzGAggAygLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkhlYWx0aENoZWNrU3RlcBI+CgpmaW5pc2hlZEF0GAYgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUSEwoLY3VycmVudFN0ZXAYCSABKAMSWgoVc3RlcEV4ZWN1dGlvbk1ldGFkYXRhGAsgAygLMjsuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0ZXBFeGVjdXRpb25NZXRhZGF0YRJNCgVzdGF0ZRgKIAEoCzI+Lms4cy5pby5hcGlleHRlbnNpb25zX2FwaXNlcnZlci5wa2cuYXBpcy5hcGlleHRlbnNpb25zLnYxLkpTT04i4QIKDVByb21vdGlvblN0ZXASDAoEdXNlcxgBIAEoCRJKCgR0YXNrGAUgASgLMjwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2tSZWZlcmVuY2USCgoCYXMYAiABKAkSCgoCaWYYByABKAkSRwoFcmV0cnkYBCABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RlcFJldHJ5EkUKBHZhcnMYBiADKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVmFyaWFibGUSTgoGY29uZmlnGAMgASgLMj4uazhzLmlvLmFwaWV4dGVuc2lvbnNfYXBpc2VydmVyLnBrZy5hcGlzLmFwaWV4dGVuc2lvbnMudjEuSlNPTiJtChJQcm9tb3Rpb25TdGVwUmV0cnkSPwoHdGltZW91dBgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5EdXJhdGlvbhIWCg5lcnJvclRocmVzaG9sZBgCIAEoDSKaAQoNUHJvbW90aW9uVGFzaxJCCghtZXRhZGF0YRgBIAEoCzIwLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5PYmplY3RNZXRhEkUKBHNwZWMYAiABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza1NwZWMimQEKEVByb21vdGlvblRhc2tMaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEkIKBWl0ZW1zGAIgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2siNAoWUHJvbW90aW9uVGFza1JlZmVyZW5jZRIMCgRuYW1lGAEgASgJEgwKBGtpbmQYAiABKAkingEKEVByb21vdGlvblRhc2tTcGVjEkUKBHZhcnMYASADKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVmFyaWFibGUSQgoFc3RlcHMYAiADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RlcCJeChFQcm9tb3Rpb25UZW1wbGF0ZRJJCgRzcGVjGAEgASgLMjsuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRlbXBsYXRlU3BlYyKiAQoVUHJvbW90aW9uVGVtcGxhdGVTcGVjEkUKBHZhcnMYAiADKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVmFyaWFibGUSQgoFc3RlcHMYASADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RlcCIwChFQcm9tb3Rpb25WYXJpYWJsZRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJIuYBChBSZXBvU3Vic2NyaXB0aW9uEkIKA2dpdBgBIAEoCzI1LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5HaXRTdWJzY3JpcHRpb24SRgoFaW1hZ2UYAiABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSW1hZ2VTdWJzY3JpcHRpb24SRgoFY2hhcnQYAyABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2hhcnRTdWJzY3JpcHRpb24izQEKBVN0YWdlEkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESPQoEc3BlYxgCIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZVNwZWMSQQoGc3RhdHVzGAMgASgLMjEuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlU3RhdHVzIokBCglTdGFnZUxpc3QSQAoIbWV0YWRhdGEYASABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuTGlzdE1ldGESOgoFaXRlbXMYAiADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiiAIKCVN0YWdlU3BlYxINCgVzaGFyZBgEIAEoCRJOChByZXF1ZXN0ZWRGcmVpZ2h0GAUgAygLMjQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZXF1ZXN0ElIKEXByb21vdGlvblRlbXBsYXRlGAYgASgLMjcuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRlbXBsYXRlEkgKDHZlcmlmaWNhdGlvbhgDIAEoCzIyLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5WZXJpZmljYXRpb24i9gMKC1N0YWdlU3RhdHVzEkMKCmNvbmRpdGlvbnMYDSADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEhoKEmxhc3RIYW5kbGVkUmVmcmVzaBgLIAEoCRINCgVwaGFzZRgBIAEoCRJPCg5mcmVpZ2h0SGlzdG9yeRgEIAMoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0Q29sbGVjdGlvbhIWCg5mcmVpZ2h0U3VtbWFyeRgMIAEoCRI8CgZoZWFsdGgYCCABKAsyLC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoEg8KB21lc3NhZ2UYCSABKAkSGgoSb2JzZXJ2ZWRHZW5lcmF0aW9uGAYgASgDElIKEGN1cnJlbnRQcm9tb3Rpb24YByABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlEk8KDWxhc3RQcm9tb3Rpb24YCiABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlItoBChVTdGVwRXhlY3V0aW9uTWV0YWRhdGESDQoFYWxpYXMYASABKAkSPQoJc3RhcnRlZEF0GAIgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUSPgoKZmluaXNoZWRBdBgDIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lEhIKCmVycm9yQ291bnQYBCABKA0SDgoGc3RhdHVzGAUgASgJEg8KB21lc3NhZ2UYBiABKAkiiwIKDFZlcmlmaWNhdGlvbhJaChFhbmFseXNpc1RlbXBsYXRlcxgBIAMoCzI/LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlUmVmZXJlbmNlElYKE2FuYWx5c2lzUnVuTWV0YWRhdGEYAiABKAsyOS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQW5hbHlzaXNSdW5NZXRhZGF0YRJHCgRhcmdzGAMgAygLMjkuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkFuYWx5c2lzUnVuQXJndW1lbnQinQIKEFZlcmlmaWNhdGlvbkluZm8SCgoCaWQYBCABKAkSDQoFYWN0b3IYByABKAkSPQoJc3RhcnRUaW1lGAUgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUSDQoFcGhhc2UYASABKAkSDwoHbWVzc2FnZRgCIAEoCRJPCgthbmFseXNpc1J1bhgDIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BbmFseXNpc1J1blJlZmVyZW5jZRI+CgpmaW5pc2hUaW1lGAYgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUilAEKDVZlcmlmaWVkU3RhZ2USPgoKdmVyaWZpZWRBdBgBIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lEkMKC2xvbmdlc3RTb2FrGAIgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkR1cmF0aW9uItkBCglXYXJlaG91c2USQgoIbWV0YWRhdGEYASABKAsyMC5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuT2JqZWN0TWV0YRJBCgRzcGVjGAIgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZVNwZWMSRQoGc3RhdHVzGAMgASgLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZVN0YXR1cyKRAQoNV2FyZWhvdXNlTGlzdBJACghtZXRhZGF0YRgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5MaXN0TWV0YRI+CgVpdGVtcxgCIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2UizgEKDVdhcmVob3VzZVNwZWMSDQoFc2hhcmQYAiABKAkSQAoIaW50ZXJ2YWwYBCABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuRHVyYXRpb24SHQoVZnJlaWdodENyZWF0aW9uUG9saWN5GAMgASgJEk0KDXN1YnNjcmlwdGlvbnMYASADKAsyNi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUmVwb1N1YnNjcmlwdGlvbiL9AQoPV2FyZWhvdXNlU3RhdHVzEkMKCmNvbmRpdGlvbnMYCSADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEhoKEmxhc3RIYW5kbGVkUmVmcmVzaBgGIAEoCRIaChJvYnNlcnZlZEdlbmVyYXRpb24YBCABKAMSFQoNbGFzdEZyZWlnaHRJRBgIIAEoCRJWChNkaXNjb3ZlcmVkQXJ0aWZhY3RzGAcgASgLMjkuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkRpc2NvdmVyZWRBcnRpZmFjdHNClwIKKGNvbS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTFCDkdlbmVyYXRlZFByb3RvUAFaJGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS92MWFscGhhMaICBUdDQUtBqgIkR2l0aHViLkNvbS5Ba3VpdHkuS2FyZ28uQXBpLlYxYWxwaGExygIkR2l0aHViXENvbVxBa3VpdHlcS2FyZ29cQXBpXFYxYWxwaGEx4gIwR2l0aHViXENvbVxBa3VpdHlcS2FyZ29cQXBpXFYxYWxwaGExXEdQQk1ldGFkYXRh6gIpR2l0aHViOjpDb206OkFrdWl0eTo6S2FyZ286OkFwaTo6VjFhbHBoYTE", [file_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_k8s_io_apimachinery_pkg_runtime_generated, file_k8s_io_apimachinery_pkg_runtime_schema_generated]);
+  fileDesc("ChxhcGkvdjFhbHBoYTEvZ2VuZXJhdGVkLnByb3RvEiRnaXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEiMgoTQW5hbHlzaXNSdW5Bcmd1bWVudBIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJIrACChNBbmFseXNpc1J1bk1ldGFkYXRhElUKBmxhYmVscxgBIAMoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BbmFseXNpc1J1bk1ldGFkYXRhLkxhYmVsc0VudHJ5El8KC2Fubm90YXRpb25zGAIgAygLMkouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkFuYWx5c2lzUnVuTWV0YWRhdGEuQW5ub3RhdGlvbnNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjIKEEFubm90YXRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJGChRBbmFseXNpc1J1blJlZmVyZW5jZRIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwaGFzZRgDIAEoCSI3ChlBbmFseXNpc1RlbXBsYXRlUmVmZXJlbmNlEgwKBG5hbWUYASABKAkSDAoEa2luZBgCIAEoCSJPCg1BcHByb3ZlZFN0YWdlEj4KCmFwcHJvdmVkQXQYASABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZSI4ChVBcmdvQ0RBcHBIZWFsdGhTdGF0dXMSDgoGc3RhdHVzGAEgASgJEg8KB21lc3NhZ2UYAiABKAki1AEKD0FyZ29DREFwcFN0YXR1cxIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRJRCgxoZWFsdGhTdGF0dXMYAyABKAsyOy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQXJnb0NEQXBwSGVhbHRoU3RhdHVzEk0KCnN5bmNTdGF0dXMYBCABKAsyOS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQXJnb0NEQXBwU3luY1N0YXR1cyJKChNBcmdvQ0RBcHBTeW5jU3RhdHVzEg4KBnN0YXR1cxgBIAEoCRIQCghyZXZpc2lvbhgCIAEoCRIRCglyZXZpc2lvbnMYAyADKAkiNwoFQ2hhcnQSDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkiYQoUQ2hhcnREaXNjb3ZlcnlSZXN1bHQSDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKEHNlbXZlckNvbnN0cmFpbnQYAyABKAkSEAoIdmVyc2lvbnMYBCADKAkiZAoRQ2hhcnRTdWJzY3JpcHRpb24SDwoHcmVwb1VSTBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKEHNlbXZlckNvbnN0cmFpbnQYAyABKAkSFgoOZGlzY292ZXJ5TGltaXQYBCABKAUioQEKFENsdXN0ZXJQcm9tb3Rpb25UYXNrEkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESRQoEc3BlYxgCIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrU3BlYyKnAQoYQ2x1c3RlclByb21vdGlvblRhc2tMaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEkkKBWl0ZW1zGAIgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrIkkKDEN1cnJlbnRTdGFnZRI5CgVzaW5jZRgBIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lIrYCChNEaXNjb3ZlcmVkQXJ0aWZhY3RzEkAKDGRpc2NvdmVyZWRBdBgEIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lEkUKA2dpdBgBIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5HaXREaXNjb3ZlcnlSZXN1bHQSSgoGaW1hZ2VzGAIgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkltYWdlRGlzY292ZXJ5UmVzdWx0EkoKBmNoYXJ0cxgDIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DaGFydERpc2NvdmVyeVJlc3VsdCKwAQoQRGlzY292ZXJlZENvbW1pdBIKCgJpZBgBIAEoCRIOCgZicmFuY2gYAiABKAkSCwoDdGFnGAMgASgJEg8KB3N1YmplY3QYBCABKAkSDgoGYXV0aG9yGAUgASgJEhEKCWNvbW1pdHRlchgGIAEoCRI/CgtjcmVhdG9yRGF0ZRgHIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lIqQCChhEaXNjb3ZlcmVkSW1hZ2VSZWZlcmVuY2USCwoDdGFnGAEgASgJEg4KBmRpZ2VzdBgCIAEoCRJkCgthbm5vdGF0aW9ucxgFIAMoCzJPLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5EaXNjb3ZlcmVkSW1hZ2VSZWZlcmVuY2UuQW5ub3RhdGlvbnNFbnRyeRISCgpnaXRSZXBvVVJMGAMgASgJEj0KCWNyZWF0ZWRBdBgEIAEoCzIqLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5UaW1lGjIKEEFubm90YXRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKiAwoHRnJlaWdodBJCCghtZXRhZGF0YRgBIAEoCzIwLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5PYmplY3RNZXRhEg0KBWFsaWFzGAcgASgJEkMKBm9yaWdpbhgJIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0T3JpZ2luEkAKB2NvbW1pdHMYAyADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuR2l0Q29tbWl0EjsKBmltYWdlcxgEIAMoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5JbWFnZRI7CgZjaGFydHMYBSADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2hhcnQSQwoGc3RhdHVzGAYgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRTdGF0dXMirQIKEUZyZWlnaHRDb2xsZWN0aW9uEgoKAmlkGAMgASgJElEKBWl0ZW1zGAEgAygLMkIuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRDb2xsZWN0aW9uLkl0ZW1zRW50cnkSUwoTdmVyaWZpY2F0aW9uSGlzdG9yeRgCIAMoCzI2LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5WZXJpZmljYXRpb25JbmZvGmQKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEkUKBXZhbHVlGAIgASgLMjYuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZWZlcmVuY2U6AjgBIo0BCgtGcmVpZ2h0TGlzdBJACghtZXRhZGF0YRgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5MaXN0TWV0YRI8CgVpdGVtcxgCIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0IisKDUZyZWlnaHRPcmlnaW4SDAoEa2luZBgBIAEoCRIMCgRuYW1lGAIgASgJIqECChBGcmVpZ2h0UmVmZXJlbmNlEgwKBG5hbWUYASABKAkSQwoGb3JpZ2luGAggASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRPcmlnaW4SQAoHY29tbWl0cxgCIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5HaXRDb21taXQSOwoGaW1hZ2VzGAMgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkltYWdlEjsKBmNoYXJ0cxgEIAMoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DaGFydCKcAQoORnJlaWdodFJlcXVlc3QSQwoGb3JpZ2luGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRPcmlnaW4SRQoHc291cmNlcxgCIAEoCzI0LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0U291cmNlcyKYAQoORnJlaWdodFNvdXJjZXMSDgoGZGlyZWN0GAEgASgIEg4KBnN0YWdlcxgCIAMoCRJIChByZXF1aXJlZFNvYWtUaW1lGAMgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkR1cmF0aW9uEhwKFGF2YWlsYWJpbGl0eVN0cmF0ZWd5GAQgASgJItcECg1GcmVpZ2h0U3RhdHVzElkKC2N1cnJlbnRseUluGAMgAygLMkQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRTdGF0dXMuQ3VycmVudGx5SW5FbnRyeRJXCgp2ZXJpZmllZEluGAEgAygLMkMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRTdGF0dXMuVmVyaWZpZWRJbkVudHJ5ElkKC2FwcHJvdmVkRm9yGAIgAygLMkQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRTdGF0dXMuQXBwcm92ZWRGb3JFbnRyeRpmChBDdXJyZW50bHlJbkVudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DdXJyZW50U3RhZ2U6AjgBGmYKD1ZlcmlmaWVkSW5FbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuVmVyaWZpZWRTdGFnZToCOAEaZwoQQXBwcm92ZWRGb3JFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQXBwcm92ZWRTdGFnZToCOAEieQoJR2l0Q29tbWl0Eg8KB3JlcG9VUkwYASABKAkSCgoCaWQYAiABKAkSDgoGYnJhbmNoGAMgASgJEgsKA3RhZxgEIAEoCRIPCgdtZXNzYWdlGAYgASgJEg4KBmF1dGhvchgHIAEoCRIRCgljb21taXR0ZXIYCCABKAkibgoSR2l0RGlzY292ZXJ5UmVzdWx0Eg8KB3JlcG9VUkwYASABKAkSRwoHY29tbWl0cxgCIAMoCzI2LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5EaXNjb3ZlcmVkQ29tbWl0Io4CCg9HaXRTdWJzY3JpcHRpb24SDwoHcmVwb1VSTBgBIAEoCRIfChdjb21taXRTZWxlY3Rpb25TdHJhdGVneRgCIAEoCRIOCgZicmFuY2gYAyABKAkSFQoNc3RyaWN0U2VtdmVycxgLIAEoCBIYChBzZW12ZXJDb25zdHJhaW50GAQgASgJEhEKCWFsbG93VGFncxgFIAEoCRISCgppZ25vcmVUYWdzGAYgAygJEh0KFWluc2VjdXJlU2tpcFRMU1ZlcmlmeRgHIAEoCBIUCgxpbmNsdWRlUGF0aHMYCCADKAkSFAoMZXhjbHVkZVBhdGhzGAkgAygJEhYKDmRpc2NvdmVyeUxpbWl0GAogASgFIsgBCgZIZWFsdGgSDgoGc3RhdHVzGAEgASgJEg4KBmlzc3VlcxgCIAMoCRJOCgZjb25maWcYBCABKAsyPi5rOHMuaW8uYXBpZXh0ZW5zaW9uc19hcGlzZXJ2ZXIucGtnLmFwaXMuYXBpZXh0ZW5zaW9ucy52MS5KU09OEk4KBm91dHB1dBgFIAEoCzI+Lms4cy5pby5hcGlleHRlbnNpb25zX2FwaXNlcnZlci5wa2cuYXBpcy5hcGlleHRlbnNpb25zLnYxLkpTT04ibwoPSGVhbHRoQ2hlY2tTdGVwEgwKBHVzZXMYASABKAkSTgoGY29uZmlnGAIgASgLMj4uazhzLmlvLmFwaWV4dGVuc2lvbnNfYXBpc2VydmVyLnBrZy5hcGlzLmFwaWV4dGVuc2lvbnMudjEuSlNPTiLQAQoFSW1hZ2USDwoHcmVwb1VSTBgBIAEoCRISCgpnaXRSZXBvVVJMGAIgASgJEgsKA3RhZxgDIAEoCRIOCgZkaWdlc3QYBCABKAkSUQoLYW5ub3RhdGlvbnMYBSADKAsyPC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSW1hZ2UuQW5ub3RhdGlvbnNFbnRyeRoyChBBbm5vdGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEijQEKFEltYWdlRGlzY292ZXJ5UmVzdWx0Eg8KB3JlcG9VUkwYASABKAkSEAoIcGxhdGZvcm0YAiABKAkSUgoKcmVmZXJlbmNlcxgDIAMoCzI+LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5EaXNjb3ZlcmVkSW1hZ2VSZWZlcmVuY2Ui+QEKEUltYWdlU3Vic2NyaXB0aW9uEg8KB3JlcG9VUkwYASABKAkSEgoKZ2l0UmVwb1VSTBgCIAEoCRIeChZpbWFnZVNlbGVjdGlvblN0cmF0ZWd5GAMgASgJEhUKDXN0cmljdFNlbXZlcnMYCiABKAgSGAoQc2VtdmVyQ29uc3RyYWludBgEIAEoCRIRCglhbGxvd1RhZ3MYBSABKAkSEgoKaWdub3JlVGFncxgGIAMoCRIQCghwbGF0Zm9ybRgHIAEoCRIdChVpbnNlY3VyZVNraXBUTFNWZXJpZnkYCCABKAgSFgoOZGlzY292ZXJ5TGltaXQYCSABKAUi0wEKB1Byb2plY3QSQgoIbWV0YWRhdGEYASABKAsyMC5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuT2JqZWN0TWV0YRI/CgRzcGVjGAIgASgLMjEuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RTcGVjEkMKBnN0YXR1cxgDIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0U3RhdHVzIo0BCgtQcm9qZWN0TGlzdBJACghtZXRhZGF0YRgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5MaXN0TWV0YRI8CgVpdGVtcxgCIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Il8KC1Byb2plY3RTcGVjElAKEXByb21vdGlvblBvbGljaWVzGAEgAygLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblBvbGljeSJ0Cg1Qcm9qZWN0U3RhdHVzEkMKCmNvbmRpdGlvbnMYAyADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEg0KBXBoYXNlGAEgASgJEg8KB21lc3NhZ2UYAiABKAki2QEKCVByb21vdGlvbhJCCghtZXRhZGF0YRgBIAEoCzIwLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5PYmplY3RNZXRhEkEKBHNwZWMYAiABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3BlYxJFCgZzdGF0dXMYAyABKAsyNS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RhdHVzIpEBCg1Qcm9tb3Rpb25MaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEj4KBWl0ZW1zGAIgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiI+Cg9Qcm9tb3Rpb25Qb2xpY3kSDQoFc3RhZ2UYASABKAkSHAoUYXV0b1Byb21vdGlvbkVuYWJsZWQYAiABKAgi8gEKElByb21vdGlvblJlZmVyZW5jZRIMCgRuYW1lGAEgASgJEkcKB2ZyZWlnaHQYAiABKAsyNi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlZmVyZW5jZRJFCgZzdGF0dXMYAyABKAsyNS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RhdHVzEj4KCmZpbmlzaGVkQXQYBCABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZSK6AQoNUHJvbW90aW9uU3BlYxINCgVzdGFnZRgBIAEoCRIPCgdmcmVpZ2h0GAIgASgJEkUKBHZhcnMYBCADKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVmFyaWFibGUSQgoFc3RlcHMYAyADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uU3RlcCK3BAoPUHJvbW90aW9uU3RhdHVzEhoKEmxhc3RIYW5kbGVkUmVmcmVzaBgEIAEoCRINCgVwaGFzZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEkcKB2ZyZWlnaHQYBSABKAsyNi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlZmVyZW5jZRJSChFmcmVpZ2h0Q29sbGVjdGlvbhgHIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0Q29sbGVjdGlvbhJLCgxoZWFsdGhDaGVja3MYCCADKAsyNS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoQ2hlY2tTdGVwEj4KCmZpbmlzaGVkQXQYBiABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZRITCgtjdXJyZW50U3RlcBgJIAEoAxJaChVzdGVwRXhlY3V0aW9uTWV0YWRhdGEYCyADKAsyOy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RlcEV4ZWN1dGlvbk1ldGFkYXRhEk0KBXN0YXRlGAogASgLMj4uazhzLmlvLmFwaWV4dGVuc2lvbnNfYXBpc2VydmVyLnBrZy5hcGlzLmFwaWV4dGVuc2lvbnMudjEuSlNPTiLhAgoNUHJvbW90aW9uU3RlcBIMCgR1c2VzGAEgASgJEkoKBHRhc2sYBSABKAsyPC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza1JlZmVyZW5jZRIKCgJhcxgCIAEoCRIKCgJpZhgHIAEoCRJHCgVyZXRyeRgEIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25TdGVwUmV0cnkSRQoEdmFycxgGIAMoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25WYXJpYWJsZRJOCgZjb25maWcYAyABKAsyPi5rOHMuaW8uYXBpZXh0ZW5zaW9uc19hcGlzZXJ2ZXIucGtnLmFwaXMuYXBpZXh0ZW5zaW9ucy52MS5KU09OIm0KElByb21vdGlvblN0ZXBSZXRyeRI/Cgd0aW1lb3V0GAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkR1cmF0aW9uEhYKDmVycm9yVGhyZXNob2xkGAIgASgNIpoBCg1Qcm9tb3Rpb25UYXNrEkIKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGESRQoEc3BlYxgCIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrU3BlYyKZAQoRUHJvbW90aW9uVGFza0xpc3QSQAoIbWV0YWRhdGEYASABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuTGlzdE1ldGESQgoFaXRlbXMYAiADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFzayI0ChZQcm9tb3Rpb25UYXNrUmVmZXJlbmNlEgwKBG5hbWUYASABKAkSDAoEa2luZBgCIAEoCSKeAQoRUHJvbW90aW9uVGFza1NwZWMSRQoEdmFycxgBIAMoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25WYXJpYWJsZRJCCgVzdGVwcxgCIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25TdGVwIl4KEVByb21vdGlvblRlbXBsYXRlEkkKBHNwZWMYASABKAsyOy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGVtcGxhdGVTcGVjIqIBChVQcm9tb3Rpb25UZW1wbGF0ZVNwZWMSRQoEdmFycxgCIAMoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25WYXJpYWJsZRJCCgVzdGVwcxgBIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25TdGVwIjAKEVByb21vdGlvblZhcmlhYmxlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAki5gEKEFJlcG9TdWJzY3JpcHRpb24SQgoDZ2l0GAEgASgLMjUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkdpdFN1YnNjcmlwdGlvbhJGCgVpbWFnZRgCIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5JbWFnZVN1YnNjcmlwdGlvbhJGCgVjaGFydBgDIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DaGFydFN1YnNjcmlwdGlvbiLNAQoFU3RhZ2USQgoIbWV0YWRhdGEYASABKAsyMC5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuT2JqZWN0TWV0YRI9CgRzcGVjGAIgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlU3BlYxJBCgZzdGF0dXMYAyABKAsyMS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2VTdGF0dXMiiQEKCVN0YWdlTGlzdBJACghtZXRhZGF0YRgBIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5MaXN0TWV0YRI6CgVpdGVtcxgCIAMoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZSKIAgoJU3RhZ2VTcGVjEg0KBXNoYXJkGAQgASgJEk4KEHJlcXVlc3RlZEZyZWlnaHQYBSADKAsyNC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlcXVlc3QSUgoRcHJvbW90aW9uVGVtcGxhdGUYBiABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGVtcGxhdGUSSAoMdmVyaWZpY2F0aW9uGAMgASgLMjIuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlZlcmlmaWNhdGlvbiL2AwoLU3RhZ2VTdGF0dXMSQwoKY29uZGl0aW9ucxgNIAMoCzIvLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5Db25kaXRpb24SGgoSbGFzdEhhbmRsZWRSZWZyZXNoGAsgASgJEg0KBXBoYXNlGAEgASgJEk8KDmZyZWlnaHRIaXN0b3J5GAQgAygLMjcuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRDb2xsZWN0aW9uEhYKDmZyZWlnaHRTdW1tYXJ5GAwgASgJEjwKBmhlYWx0aBgIIAEoCzIsLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5IZWFsdGgSDwoHbWVzc2FnZRgJIAEoCRIaChJvYnNlcnZlZEdlbmVyYXRpb24YBiABKAMSUgoQY3VycmVudFByb21vdGlvbhgHIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2USTwoNbGFzdFByb21vdGlvbhgKIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2Ui2gEKFVN0ZXBFeGVjdXRpb25NZXRhZGF0YRINCgVhbGlhcxgBIAEoCRI9CglzdGFydGVkQXQYAiABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZRI+CgpmaW5pc2hlZEF0GAMgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUSEgoKZXJyb3JDb3VudBgEIAEoDRIOCgZzdGF0dXMYBSABKAkSDwoHbWVzc2FnZRgGIAEoCSKLAgoMVmVyaWZpY2F0aW9uEloKEWFuYWx5c2lzVGVtcGxhdGVzGAEgAygLMj8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGVSZWZlcmVuY2USVgoTYW5hbHlzaXNSdW5NZXRhZGF0YRgCIAEoCzI5LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5BbmFseXNpc1J1bk1ldGFkYXRhEkcKBGFyZ3MYAyADKAsyOS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQW5hbHlzaXNSdW5Bcmd1bWVudCKdAgoQVmVyaWZpY2F0aW9uSW5mbxIKCgJpZBgEIAEoCRINCgVhY3RvchgHIAEoCRI9CglzdGFydFRpbWUYBSABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZRINCgVwaGFzZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEk8KC2FuYWx5c2lzUnVuGAMgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkFuYWx5c2lzUnVuUmVmZXJlbmNlEj4KCmZpbmlzaFRpbWUYBiABKAsyKi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuVGltZSKUAQoNVmVyaWZpZWRTdGFnZRI+Cgp2ZXJpZmllZEF0GAEgASgLMiouazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLlRpbWUSQwoLbG9uZ2VzdFNvYWsYAiABKAsyLi5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuRHVyYXRpb24i2QEKCVdhcmVob3VzZRJCCghtZXRhZGF0YRgBIAEoCzIwLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5PYmplY3RNZXRhEkEKBHNwZWMYAiABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlU3BlYxJFCgZzdGF0dXMYAyABKAsyNS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlU3RhdHVzIpEBCg1XYXJlaG91c2VMaXN0EkAKCG1ldGFkYXRhGAEgASgLMi4uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkxpc3RNZXRhEj4KBWl0ZW1zGAIgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSLOAQoNV2FyZWhvdXNlU3BlYxINCgVzaGFyZBgCIAEoCRJACghpbnRlcnZhbBgEIAEoCzIuLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5EdXJhdGlvbhIdChVmcmVpZ2h0Q3JlYXRpb25Qb2xpY3kYAyABKAkSTQoNc3Vic2NyaXB0aW9ucxgBIAMoCzI2LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5SZXBvU3Vic2NyaXB0aW9uIv0BCg9XYXJlaG91c2VTdGF0dXMSQwoKY29uZGl0aW9ucxgJIAMoCzIvLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5Db25kaXRpb24SGgoSbGFzdEhhbmRsZWRSZWZyZXNoGAYgASgJEhoKEm9ic2VydmVkR2VuZXJhdGlvbhgEIAEoAxIVCg1sYXN0RnJlaWdodElEGAggASgJElYKE2Rpc2NvdmVyZWRBcnRpZmFjdHMYByABKAsyOS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRGlzY292ZXJlZEFydGlmYWN0c0KXAgooY29tLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMUIOR2VuZXJhdGVkUHJvdG9QAVokZ2l0aHViLmNvbS9ha3VpdHkva2FyZ28vYXBpL3YxYWxwaGExogIFR0NBS0GqAiRHaXRodWIuQ29tLkFrdWl0eS5LYXJnby5BcGkuVjFhbHBoYTHKAiRHaXRodWJcQ29tXEFrdWl0eVxLYXJnb1xBcGlcVjFhbHBoYTHiAjBHaXRodWJcQ29tXEFrdWl0eVxLYXJnb1xBcGlcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAilHaXRodWI6OkNvbTo6QWt1aXR5OjpLYXJnbzo6QXBpOjpWMWFscGhhMQ", [file_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_k8s_io_apimachinery_pkg_runtime_generated, file_k8s_io_apimachinery_pkg_runtime_schema_generated]);
 
 /**
  * AnalysisRunArgument represents an argument to be added to an AnalysisRun.
@@ -658,6 +658,14 @@ export type DiscoveredImageReference = Message<"github.com.akuity.kargo.api.v1al
    */
   digest: string;
 
+  /**
+   * Annotations is a map of key-value pairs that provide additional
+   * information about the image.
+   *
+   * @generated from field: map<string, string> annotations = 5;
+   */
+  annotations: { [key: string]: string };
+
   /**
    * GitRepoURL is the URL of the Git repository that contains the source
    * code for this image. This field is optional, and only populated if the
@@ -1424,6 +1432,13 @@ export type Image = Message<"github.com.akuity.kargo.api.v1alpha1.Image"> & {
    * @generated from field: optional string digest = 4;
    */
   digest: string;
+
+  /**
+   * Annotations is a map of arbitrary metadata for the image.
+   *
+   * @generated from field: map<string, string> annotations = 5;
+   */
+  annotations: { [key: string]: string };
 };
 
 /**
diff --git a/ui/src/gen/schema/freights.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/freights.kargo.akuity.io_v1alpha1.json
index d55e9a73..883b26e9 100644
--- a/ui/src/gen/schema/freights.kargo.akuity.io_v1alpha1.json
+++ b/ui/src/gen/schema/freights.kargo.akuity.io_v1alpha1.json
@@ -75,6 +75,13 @@
       "items": {
         "description": "Image describes a specific version of a container image.",
         "properties": {
+          "annotations": {
+            "additionalProperties": {
+              "type": "string"
+            },
+            "description": "Annotations is a map of arbitrary metadata for the image.",
+            "type": "object"
+          },
           "digest": {
             "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
             "type": "string"
diff --git a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json
index ed8573eb..3321b59d 100644
--- a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json
+++ b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json
@@ -242,6 +242,13 @@
               "items": {
                 "description": "Image describes a specific version of a container image.",
                 "properties": {
+                  "annotations": {
+                    "additionalProperties": {
+                      "type": "string"
+                    },
+                    "description": "Annotations is a map of arbitrary metadata for the image.",
+                    "type": "object"
+                  },
                   "digest": {
                     "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                     "type": "string"
@@ -367,6 +374,13 @@
                     "items": {
                       "description": "Image describes a specific version of a container image.",
                       "properties": {
+                        "annotations": {
+                          "additionalProperties": {
+                            "type": "string"
+                          },
+                          "description": "Annotations is a map of arbitrary metadata for the image.",
+                          "type": "object"
+                        },
                         "digest": {
                           "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                           "type": "string"
diff --git a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json
index 21c95792..c2cb4eb0 100644
--- a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json
+++ b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json
@@ -441,6 +441,13 @@
                   "items": {
                     "description": "Image describes a specific version of a container image.",
                     "properties": {
+                      "annotations": {
+                        "additionalProperties": {
+                          "type": "string"
+                        },
+                        "description": "Annotations is a map of arbitrary metadata for the image.",
+                        "type": "object"
+                      },
                       "digest": {
                         "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                         "type": "string"
@@ -577,6 +584,13 @@
                       "items": {
                         "description": "Image describes a specific version of a container image.",
                         "properties": {
+                          "annotations": {
+                            "additionalProperties": {
+                              "type": "string"
+                            },
+                            "description": "Annotations is a map of arbitrary metadata for the image.",
+                            "type": "object"
+                          },
                           "digest": {
                             "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                             "type": "string"
@@ -702,6 +716,13 @@
                             "items": {
                               "description": "Image describes a specific version of a container image.",
                               "properties": {
+                                "annotations": {
+                                  "additionalProperties": {
+                                    "type": "string"
+                                  },
+                                  "description": "Annotations is a map of arbitrary metadata for the image.",
+                                  "type": "object"
+                                },
                                 "digest": {
                                   "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                                   "type": "string"
@@ -983,6 +1004,13 @@
                       "items": {
                         "description": "Image describes a specific version of a container image.",
                         "properties": {
+                          "annotations": {
+                            "additionalProperties": {
+                              "type": "string"
+                            },
+                            "description": "Annotations is a map of arbitrary metadata for the image.",
+                            "type": "object"
+                          },
                           "digest": {
                             "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                             "type": "string"
@@ -1211,6 +1239,13 @@
                   "items": {
                     "description": "Image describes a specific version of a container image.",
                     "properties": {
+                      "annotations": {
+                        "additionalProperties": {
+                          "type": "string"
+                        },
+                        "description": "Annotations is a map of arbitrary metadata for the image.",
+                        "type": "object"
+                      },
                       "digest": {
                         "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                         "type": "string"
@@ -1347,6 +1382,13 @@
                       "items": {
                         "description": "Image describes a specific version of a container image.",
                         "properties": {
+                          "annotations": {
+                            "additionalProperties": {
+                              "type": "string"
+                            },
+                            "description": "Annotations is a map of arbitrary metadata for the image.",
+                            "type": "object"
+                          },
                           "digest": {
                             "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                             "type": "string"
@@ -1472,6 +1514,13 @@
                             "items": {
                               "description": "Image describes a specific version of a container image.",
                               "properties": {
+                                "annotations": {
+                                  "additionalProperties": {
+                                    "type": "string"
+                                  },
+                                  "description": "Annotations is a map of arbitrary metadata for the image.",
+                                  "type": "object"
+                                },
                                 "digest": {
                                   "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
                                   "type": "string"
diff --git a/ui/src/gen/schema/warehouses.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/warehouses.kargo.akuity.io_v1alpha1.json
index 885e5176..0f58c4fa 100644
--- a/ui/src/gen/schema/warehouses.kargo.akuity.io_v1alpha1.json
+++ b/ui/src/gen/schema/warehouses.kargo.akuity.io_v1alpha1.json
@@ -409,6 +409,13 @@
                     "items": {
                       "description": "DiscoveredImageReference represents an image reference discovered by a\nWarehouse for an ImageSubscription.",
                       "properties": {
+                        "annotations": {
+                          "additionalProperties": {
+                            "type": "string"
+                          },
+                          "description": "Annotations is a map of key-value pairs that provide additional\ninformation about the image.",
+                          "type": "object"
+                        },
                         "createdAt": {
                           "description": "CreatedAt is the time the image was created. This field is optional, and\nnot populated for every ImageSelectionStrategy.",
                           "format": "date-time",



Test patch:
diff --git a/internal/image/repository_client_test.go b/internal/image/repository_client_test.go
index dc708a97..78be5b0b 100644
--- a/internal/image/repository_client_test.go
+++ b/internal/image/repository_client_test.go
@@ -416,14 +416,18 @@ func TestImageFromV1ImageIndex(t *testing.T) {
 			},
 		},
 		{
-			name: "with platform constraint, success",
+			name: "with platform constraint and index annotations, success",
 			idx: &mockImageIndex{
 				indexManifest: &v1.IndexManifest{
 					Manifests: []v1.Descriptor{{
 						Platform: &v1.Platform{
 							OS:           "linux",
 							Architecture: "amd64",
-						}},
+						},
+					}},
+					Annotations: map[string]string{
+						"org.opencontainers.image.vendor":  "Test Vendor",
+						"org.opencontainers.image.version": "1.0.0",
 					},
 				},
 			},
@@ -435,12 +439,29 @@ func TestImageFromV1ImageIndex(t *testing.T) {
 				getImageByDigestFn: func(
 					context.Context, string, *platformConstraint,
 				) (*Image, error) {
-					return &testImage, nil
+					// Return image with its own annotations
+					return &Image{
+						Digest:    testDigest,
+						CreatedAt: testImage.CreatedAt,
+						Annotations: map[string]string{
+							"org.opencontainers.image.created": "2023-01-01T00:00:00Z",
+							// Duplicate key to test overriding
+							"org.opencontainers.image.version": "1.1.0",
+						},
+					}, nil
 				},
 			},
 			assertions: func(t *testing.T, img *Image, err error) {
 				require.NoError(t, err)
-				require.Equal(t, testImage, *img)
+				require.NotNil(t, img)
+				require.Equal(t, testDigest, img.Digest)
+				require.NotNil(t, img.Annotations)
+
+				// Image annotations from digest should be ignored
+				require.Equal(t, map[string]string{
+					"org.opencontainers.image.vendor":  "Test Vendor",
+					"org.opencontainers.image.version": "1.0.0",
+				}, img.Annotations)
 			},
 		},
 		{
@@ -491,7 +512,7 @@ func TestImageFromV1ImageIndex(t *testing.T) {
 			},
 		},
 		{
-			name: "without platform constraint, success",
+			name: "without platform constraint and with annotations, success",
 			idx: &mockImageIndex{
 				indexManifest: &v1.IndexManifest{
 					Manifests: []v1.Descriptor{{
@@ -500,18 +521,79 @@ func TestImageFromV1ImageIndex(t *testing.T) {
 							Architecture: "amd64",
 						},
 					}},
+					Annotations: map[string]string{
+						"org.opencontainers.image.vendor": "Test Vendor",
+					},
 				},
 			},
 			client: &repositoryClient{
 				getImageByDigestFn: func(
 					context.Context, string, *platformConstraint,
 				) (*Image, error) {
-					return &testImage, nil
+					return &Image{
+						Digest:    testDigest,
+						CreatedAt: testImage.CreatedAt,
+						Annotations: map[string]string{
+							"org.opencontainers.image.created": "2023-01-01T00:00:00Z",
+						},
+					}, nil
 				},
 			},
 			assertions: func(t *testing.T, img *Image, err error) {
 				require.NoError(t, err)
-				require.Equal(t, testImage, *img)
+				require.NotNil(t, img)
+				require.Equal(t, testDigest, img.Digest)
+				require.Len(t, img.Annotations, 1)
+				require.Equal(t, "Test Vendor", img.Annotations["org.opencontainers.image.vendor"])
+			},
+		},
+		{
+			name: "platform specific annotations are ignored",
+			idx: &mockImageIndex{
+				indexManifest: &v1.IndexManifest{
+					Manifests: []v1.Descriptor{{
+						Platform: &v1.Platform{
+							OS:           "linux",
+							Architecture: "amd64",
+						},
+						Annotations: map[string]string{
+							"common.key":            "platform-descriptor-value",
+							"platform.specific.key": "platform-value",
+						},
+					}},
+					Annotations: map[string]string{
+						"common.key":         "index-value",
+						"index.specific.key": "index-value",
+					},
+				},
+			},
+			platform: &platformConstraint{
+				os:   "linux",
+				arch: "amd64",
+			},
+			client: &repositoryClient{
+				getImageByDigestFn: func(
+					context.Context, string, *platformConstraint,
+				) (*Image, error) {
+					return &Image{
+						Digest:    testDigest,
+						CreatedAt: testImage.CreatedAt,
+						Annotations: map[string]string{
+							"common.key":            "manifest-value",
+							"manifest.specific.key": "manifest-value",
+						},
+					}, nil
+				},
+			},
+			assertions: func(t *testing.T, img *Image, err error) {
+				require.NoError(t, err)
+				require.NotNil(t, img)
+
+				require.Equal(t, map[string]string{
+					// Only index annotations are taken into account
+					"common.key":         "index-value",
+					"index.specific.key": "index-value",
+				}, img.Annotations)
 			},
 		},
 	}
@@ -549,6 +631,29 @@ func TestGetImageFromV1Image(t *testing.T) {
 				require.NotNil(t, img)
 				require.NotEmpty(t, img.Digest)
 				require.NotNil(t, img.CreatedAt)
+				require.Nil(t, img.Annotations) // No annotations in manifest
+			},
+		},
+		{
+			name: "with annotations",
+			img: &mockImage{
+				configFile: &v1.ConfigFile{},
+				manifest: &v1.Manifest{
+					Annotations: map[string]string{
+						"org.opencontainers.image.created": "2023-01-01T00:00:00Z",
+						"org.opencontainers.image.authors": "Test Author",
+					},
+				},
+			},
+			client: &repositoryClient{},
+			assertions: func(t *testing.T, img *Image, err error) {
+				require.NoError(t, err)
+				require.NotNil(t, img)
+				require.NotEmpty(t, img.Digest)
+				require.NotNil(t, img.CreatedAt)
+				require.NotNil(t, img.Annotations)
+				require.Equal(t, "Test Author", img.Annotations["org.opencontainers.image.authors"])
+				require.Equal(t, "2023-01-01T00:00:00Z", img.Annotations["org.opencontainers.image.created"])
 			},
 		},
 		{
@@ -570,12 +675,17 @@ func TestGetImageFromV1Image(t *testing.T) {
 			},
 		},
 		{
-			name: "matches platform constraint",
+			name: "matches platform constraint with annotations",
 			img: &mockImage{
 				configFile: &v1.ConfigFile{
 					OS:           "linux",
 					Architecture: "amd64",
 				},
+				manifest: &v1.Manifest{
+					Annotations: map[string]string{
+						"org.opencontainers.image.created": "2023-01-01T00:00:00Z",
+					},
+				},
 			},
 			platform: &platformConstraint{
 				os:   "linux",
@@ -587,6 +697,8 @@ func TestGetImageFromV1Image(t *testing.T) {
 				require.NotNil(t, img)
 				require.NotEmpty(t, img.Digest)
 				require.NotNil(t, img.CreatedAt)
+				require.NotNil(t, img.Annotations)
+				require.Equal(t, "2023-01-01T00:00:00Z", img.Annotations["org.opencontainers.image.created"])
 			},
 		},
 	}
@@ -636,6 +748,7 @@ func (m *mockImageIndex) ImageIndex(v1.Hash) (v1.ImageIndex, error) {
 
 type mockImage struct {
 	configFile *v1.ConfigFile
+	manifest   *v1.Manifest
 }
 
 func (m *mockImage) Layers() ([]v1.Layer, error) {
@@ -667,7 +780,10 @@ func (m *mockImage) Digest() (v1.Hash, error) {
 }
 
 func (m *mockImage) Manifest() (*v1.Manifest, error) {
-	return nil, errNotImplemented
+	if m.manifest == nil {
+		return &v1.Manifest{}, nil
+	}
+	return m.manifest, nil
 }
 
 func (m *mockImage) RawManifest() ([]byte, error) {
diff --git a/internal/image/selector_ghcr_test.go b/internal/image/selector_ghcr_test.go
index 98cfd10a..43855c90 100644
--- a/internal/image/selector_ghcr_test.go
+++ b/internal/image/selector_ghcr_test.go
@@ -171,7 +171,7 @@ func TestSelectImageGHCR(t *testing.T) {
 		require.NoError(t, err)
 		minimum := semver.MustParse("0.1.0")
 		require.True(t, semVer.GreaterThan(minimum) || semVer.Equal(minimum))
-		require.True(t, semVer.LessThan(semver.MustParse("1.0.0")))
+		require.True(t, semVer.LessThan(semver.MustParse("2.0.0")))
 		require.NotEmpty(t, image.Digest)
 		require.NotNil(t, image.CreatedAt)
 	})
@@ -196,7 +196,7 @@ func TestSelectImageGHCR(t *testing.T) {
 		require.NoError(t, err)
 		minimum := semver.MustParse("0.1.0")
 		require.True(t, semVer.GreaterThan(minimum) || semVer.Equal(minimum))
-		require.True(t, semVer.LessThan(semver.MustParse("1.0.0")))
+		require.True(t, semVer.LessThan(semver.MustParse("2.0.0")))
 		require.NotEmpty(t, image.Digest)
 		require.NotNil(t, image.CreatedAt)
 	})