@alphauspkgs/blue-sdk-ts 1.0.42 → 1.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/gc/v1/gc_pb.ts CHANGED
@@ -14,7 +14,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
14
14
  * Describes the file gc/v1/gc.proto.
15
15
  */
16
16
  export const file_gc_v1_gc: GenFile = /*@__PURE__*/
17
- fileDesc("Cg5nYy92MS9nYy5wcm90bxINYmx1ZWFwaS5nYy52MSIRCg9MaXN0T3Jnc1JlcXVlc3QiLAoaQ29tbWl0bWVudFBsYW5BcHBseVJlcXVlc3QSDgoGcGxhbklkGAEgASgJIhgKFkxpc3RDb21taXRtZW50c1JlcXVlc3QiZwoaR2V0Q29tbWl0bWVudHNDaGFydFJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJEg8KB2dyb3VwQnkYAiABKAkSEQoJc3RhcnREYXRlGAMgASgJEg8KB2VuZERhdGUYBCABKAkiOAogR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvblJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJIj4KEUdldE1ldHJpY3NSZXF1ZXN0EikKCHByb3ZpZGVyGAEgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlciKjAQoUTGlzdFJlc291cmNlc1JlcXVlc3QSKQoIcHJvdmlkZXIYASABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCXNlZ21lbnRJZBgCIAEoCRIOCgZzZWFyY2gYAyABKAkSDAoEZGVzYxgEIAEoCBIPCgdvcmRlckJ5GAUgASgJEgwKBHBhZ2UYBiABKAUSEAoIcGFnZVNpemUYByABKAUijAEKHEdldFJlc291cmNlRGFpbHlVc2FnZVJlcXVlc3QSEgoKcmVzb3VyY2VJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRIUCgxjYXRhbG9nU2t1SWQYBCABKAkSDAoEcGFnZRgFIAEoBRIQCghwYWdlU2l6ZRgGIAEoBSIjCiFMaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QiMAoeR2V0UHVyY2hhc2VQbGFuc0RldGFpbHNSZXF1ZXN0Eg4KBnBsYW5JZBgBIAEoCSIpCidHZXRVcGRhdGVkUHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QiJgoHT3JnVXNlchINCgVlbWFpbBgBIAEoCRIMCgRyb2xlGAIgASgJIiwKCk1lbWJlcnNoaXASDAoEcm9sZRgBIAEoCRIQCgh1c2VybmFtZRgCIAEoCSJiCgdBZGRyZXNzEg0KBWxpbmUxGAEgASgJEgwKBGNpdHkYAiABKAkSDQoFc3RhdGUYAyABKAkSCwoDemlwGAQgASgJEg8KB2NvdW50cnkYBSABKAkSDQoFbGluZTIYBiABKAkiVAoOQXdzRXhpc3RpbmdDdXISDgoGcmVnaW9uGAEgASgJEg4KBmJ1Y2tldBgCIAEoCRIOCgZwcmVmaXgYAyABKAkSEgoKcmVwb3J0TmFtZRgEIAEoCSKLAgoSUmVnaXN0ZXJPcmdSZXF1ZXN0EgwKBG5hbWUYASABKAkSGwoTbGFicmFTdWJzY3JpcHRpb25JZBgCIAEoCRIlCgV1c2VycxgDIAMoCzIWLmJsdWVhcGkuZ2MudjEuT3JnVXNlchIOCgZkb21haW4YBCABKAkSLgoOcHJpbWFyeUFkZHJlc3MYBSABKAsyFi5ibHVlYXBpLmdjLnYxLkFkZHJlc3MSHwoXYXdzTWFya2V0cGxhY2VPZmZlckxpbmsYBiABKAkSIQoZYXp1cmVNYXJrZXRwbGFjZU9mZmVyTGluaxgHIAEoCRIfChdnY3BNYXJrZXRwbGFjZU9mZmVyTGluaxgIIAEoCSKJAQoZU3RhcnRBd3NPbmJvYXJkaW5nUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIWCg5wYXllckFjY291bnRJZBgEIAEoCRIYChBwYXllckFjY291bnROYW1lGAUgASgJIpMBCiNHZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIWCg5wYXllckFjY291bnRJZBgEIAEoCRIYChBwYXllckFjY291bnROYW1lGAUgASgJIosBChtHZXRBd3NMYXVuY2hTdGFja1VybFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSFgoOcGF5ZXJBY2NvdW50SWQYBCABKAkSGAoQcGF5ZXJBY2NvdW50TmFtZRgFIAEoCSK1AQoaVmVyaWZ5QXdzT25ib2FyZGluZ1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSFAoMb25ib2FyZGluZ0lkGAQgASgJEhEKCWFjY291bnRJZBgFIAEoCRIyCgtleGlzdGluZ0N1chgGIAEoCzIdLmJsdWVhcGkuZ2MudjEuQXdzRXhpc3RpbmdDdXIiXwoaR2V0T25ib2FyZGluZ1N0YXR1c1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEhYKDnBheWVyQWNjb3VudElkGAMgASgJIhoKGExpc3RQYXllckFjY291bnRzUmVxdWVzdCJDCh1TZXRQYXllckFjY291bnRFbmFibGVkUmVxdWVzdBIRCgljb21wYW55SWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCCIeChxHZXRQYXllckFjY291bnRTdGF0dXNSZXF1ZXN0IhoKGExpc3RCaWxsaW5nR3JvdXBzUmVxdWVzdCJWChxTZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXF1ZXN0EhEKCWNvbXBhbnlJZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIEhIKCm5ld1ZlcnNpb24YAyABKAgiHgocR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdCJEChtWYWxpZGF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJEhIKCm5ld1ZlcnNpb24YAiABKAgiwgcKIVNhdmVDb21taXRtZW50c1BsYW5Bc0RyYWZ0UmVxdWVzdBIOCgZwbGFuSWQYASABKAkSFgoOcmVzZXJ2YXRpb25JZHMYAiADKAkSEwoLcmVzb3VyY2VJZHMYAyADKAkSFgoObWF4VXBmcm9udENvc3QYBCABKAESKQoIcHJvdmlkZXIYBSABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEg8KB2VuZERhdGUYBiABKAkSEQoJc3RhcnREYXRlGAcgASgJEhEKCXNlZ21lbnRJZBgIIAEoCRIOCgZzdGF0dXMYCSABKAkSEwoLZGVzY3JpcHRpb24YCiABKAkSDAoEbmFtZRgLIAEoCRIeChZwcmVmZXJyZWRQYXltZW50T3B0aW9uGAwgASgJEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgNIAMoCRI6ChVpbmNsdWRlZENvbnRyYWN0U3BlY3MYDiADKAsyGy5ibHVlYXBpLmdjLnYxLkNvbnRyYWN0U3BlYxIqCgpjb3ZlcmFnZUlkGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNyZWF0ZWRBdBgQIAEoCRIpCgljcmVhdGVkQnkYESABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEgoKZGF0YVNvdXJjZRgSIAEoCRIvCg9leGVjdXRpb25Qb2xpY3kYEyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFgoOZmxhZ2dlZEFjdGlvbnMYFCADKAkSCgoCaWQYFSABKAkSFQoNaXNDYWxjdWxhdGluZxgWIAEoCBIRCglpc0RlZmF1bHQYFyABKAgSEAoIaXNMb2NrZWQYGCABKAgSFQoNaXNSZWNvbW1lbmRlZBgZIAEoCBIRCglpc1JlbmV3YWwYGiABKAgSDwoHaXNTYXZlZBgbIAEoCBIUCgxsYXN0TW9kaWZpZWQYHCABKAkSEgoKbWV0YVBsYW5JZBgdIAEoCRI6ChptaW5pbXVtVXBmcm9udEludGVyZXN0UmF0ZRgeIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRINCgVvcmdJZBgfIAEoCRIQCghwbGFuVHlwZRggIAEoCRI+Ch5yZWNvbW1lbmRXaXRoaW5Db3ZlcmVkQWNjb3VudHMYISABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSJwoHc2VnbWVudBgiIAEoCzIWLmJsdWVhcGkuZ2MudjEuU2VnbWVudCIwCh1MaXN0RHJhZnRQdXJjaGFzZVBsYW5zUmVxdWVzdBIPCgdpc0RyYWZ0GAEgASgIIjUKHkRlbGV0ZURyYWZ0UHVyY2hhc2VQbGFuUmVxdWVzdBITCgtkcmFmdFBsYW5JZBgBIAEoCSI/CilHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVxdWVzdBISCgpleHRlcm5hbElkGAEgASgJIk0KJ0NyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVxdWVzdBIOCgZ0YXJnZXQYASABKAkSEgoKZXh0ZXJuYWxJZBgCIAEoCSKDAQobU3RhcnRBenVyZU9uYm9hcmRpbmdSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhAKCHRlbmFudElkGAQgASgJEhYKDnN1YnNjcmlwdGlvbklkGAUgASgJItIFChxVcGRhdGVBenVyZU9uYm9hcmRpbmdSZXF1ZXN0EhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIPCgdnY09yZ0lkGAIgASgJEhYKDmJpbGxpbmdHcm91cElkGAMgASgJEhEKCWNvbXBhbnlJZBgEIAEoCRIQCgh0ZW5hbnRJZBgFIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgGIAEoCRITCgthY2NvdW50S2luZBgHIAEoCRISCgphY2NvdW50SWRzGAggAygJEhUKDWJsb2JDb250YWluZXIYCSABKAkSFQoNcmVzb3VyY2VHcm91cBgKIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgLIAEoCRIQCghyb2xlTmFtZRgMIAEoCRIzChNyZXNvdXJjZUdyb3VwUmVnaW9uGA0gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFHN0b3JhZ2VBY2NvdW50UmVnaW9uGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjEKEXJlc291cmNlR3JvdXBUYWdzGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjIKEnN0b3JhZ2VBY2NvdW50VGFncxgQIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCgljb21wbGV0ZWQYESABKAgSEQoJY3JlYXRlZEF0GBIgASgJEjoKCWNyZWF0ZWRCeRgTIAEoCzInLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nQ3JlYXRlZEJ5EisKC2ludGVncmF0aW9uGBQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhUKDWludGVncmF0aW9uSWQYFSABKAkSEAoIcHJvdmlkZXIYFiABKAkSKwoDb3JnGBcgASgLMh4uYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmcicwogR2V0QXp1cmVPbmJvYXJkaW5nQXV0aFVybFJlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkSEAoIdGVuYW50SWQYAyABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBCABKAkitwUKHlZhbGlkYXRlQXp1cmVBcHBJbnN0YWxsUmVxdWVzdBIUCgxvbmJvYXJkaW5nSWQYASABKAkSDwoHZ2NPcmdJZBgCIAEoCRIMCgR0eXBlGAMgASgJEhAKCHRlbmFudElkGAQgASgJEhYKDnN1YnNjcmlwdGlvbklkGAUgASgJEhMKC2FjY291bnRLaW5kGAYgASgJEhIKCmFjY291bnRJZHMYByADKAkSFQoNYmxvYkNvbnRhaW5lchgIIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAkgASgJEhYKDnN0b3JhZ2VBY2NvdW50GAogASgJEhAKCHJvbGVOYW1lGAsgASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNvbXBsZXRlZBgQIAEoCBIRCgljcmVhdGVkQXQYESABKAkSOgoJY3JlYXRlZEJ5GBIgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSKwoLaW50ZWdyYXRpb24YEyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFQoNaW50ZWdyYXRpb25JZBgUIAEoCRIQCghwcm92aWRlchgVIAEoCRIrCgNvcmcYFiABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyJLCiJMaXN0QXp1cmVPbmJvYXJkaW5nQWNjb3VudHNSZXF1ZXN0EhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIPCgdnY09yZ0lkGAIgASgJIpQECh1DcmVhdGVBenVyZUludGVncmF0aW9uUmVxdWVzdBIPCgdnY09yZ0lkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhEKCWNvbXBhbnlJZBgDIAEoCRIWCg5wYXllckFjY291bnRJZBgEIAEoCRIMCgR0eXBlGAUgASgJEhAKCHRlbmFudElkGAYgASgJEhYKDnN1YnNjcmlwdGlvbklkGAcgASgJEhQKDG9uYm9hcmRpbmdJZBgIIAEoCRITCgthY2NvdW50S2luZBgJIAEoCRISCgphY2NvdW50SWRzGAogAygJEhUKDWJsb2JDb250YWluZXIYCyABKAkSFQoNcmVzb3VyY2VHcm91cBgMIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgNIAEoCRIQCghyb2xlTmFtZRgOIAEoCRIzChNyZXNvdXJjZUdyb3VwUmVnaW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFHN0b3JhZ2VBY2NvdW50UmVnaW9uGBAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjEKEXJlc291cmNlR3JvdXBUYWdzGBEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjIKEnN0b3JhZ2VBY2NvdW50VGFncxgSIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSIvChxMaXN0QXp1cmVJbnRlZ3JhdGlvbnNSZXF1ZXN0Eg8KB2djT3JnSWQYASABKAkiMQoDT3JnEg0KBW9yZ0lkGAEgASgJEgwKBG5hbWUYAiABKAkSDQoFZW1haWwYAyABKAki8wQKFUNvbW1pdG1lbnRQbGFuRGV0YWlscxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBW9yZ0lkGAQgASgJEhEKCWNyZWF0ZWRBdBgFIAEoCRIVCg1pc0NhbGN1bGF0aW5nGAYgASgIEg4KBnN0YXR1cxgHIAEoCRIPCgdtYXhUZXJtGAggASgJEiEKGWNvdmVyZWRPbmRlbWFuZENvc3RIb3VybHkYCSABKAESIAoYYmVmb3JlT25kZW1hbmRDb3N0SG91cmx5GAogASgBEiAKGGJlZm9yZVJlc2VydmVkQ29zdEhvdXJseRgLIAEoARIbChNhbW9ydGl6ZWRDb3N0SG91cmx5GAwgASgBEhsKE3JlY3VycmluZ0Nvc3RIb3VybHkYDSABKAESGQoRdXBmcm9udENvc3RIb3VybHkYDiABKAESGAoQYmVmb3JlQ29zdEhvdXJseRgPIAEoARIXCg9hZnRlckNvc3RIb3VybHkYECABKAESFwoPdG90YWxDb3N0SG91cmx5GBEgASgBEhUKDXNhdmluZ3NIb3VybHkYEiABKAESEQoJZmVlSG91cmx5GBMgASgBEhoKEmNvbW1pdG1lbnRDb3ZlcmFnZRgUIAEoARIdChVtaW5pbXVtQ29tbWl0bWVudENvc3QYFSABKAESFgoOYnJlYWtldmVuSG91cnMYFiABKAESFAoMdG90YWxTYXZpbmdzGBcgASgBEhYKDm1vbnRobHlTYXZpbmdzGBggASgBEh4KFnRvdGFsTW9udGhseUJlZm9yZUNvc3QYGSABKAEitAYKFkNvbW1pdG1lbnRQbGFuTGluZUl0ZW0SCgoCaWQYASABKAkSDgoGcGxhbklkGAIgASgJEg8KB29mZmVySWQYAyABKAkSFwoPbGVhc2VNZW51SXRlbUlkGAQgASgJEhEKCWFjY291bnRJZBgFIAEoCRIbChNyZWNvbW1lbmRlZFF1YW50aXR5GAYgASgBEhgKEHNlbGVjdGVkUXVhbnRpdHkYByABKAESHQoVcmVjb21tZW5kZWRDb21taXRtZW50GAggASgBEhoKEnNlbGVjdGVkQ29tbWl0bWVudBgJIAEoARISCgppc1NlbGVjdGVkGAogASgIEhoKEmFmdGVyQW1vcnRpemVkQ29zdBgLIAEoARITCgt1cGZyb250Q29zdBgMIAEoARIVCg1yZWN1cnJpbmdDb3N0GA0gASgBEhIKCmJlZm9yZUNvc3QYDiABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GA8gASgBEhoKEmJlZm9yZVJlc2VydmVkQ29zdBgQIAEoARIbChNjb3ZlcmVkT25kZW1hbmRDb3N0GBEgASgBEhkKEWFmdGVyQ292ZXJlZFVuaXRzGBIgASgBEhEKCXRvdGFsQ29zdBgTIAEoARITCgttb250aGx5Q29zdBgUIAEoARIPCgdzYXZpbmdzGBUgASgBEhYKDm1vbnRobHlTYXZpbmdzGBYgASgBEhQKDHRvdGFsU2F2aW5ncxgXIAEoARILCgNmZWUYGCABKAESFAoMZGlzY291bnRSYXRlGBkgASgBEhYKDmJyZWFrZXZlbkhvdXJzGBogASgBEhQKDGNvbnRyYWN0VGVybRgbIAEoCRIVCg1wYXltZW50T3B0aW9uGBwgASgJEi0KDGNvbnRyYWN0U3BlYxgdIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJgoFb2ZmZXIYHiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhwKFHJlbmV3YWxSZXNlcnZhdGlvbklkGB8gASgJEhQKDGNvdmVyZWRVbml0cxggIAEoARIVCg1hbW9ydGl6ZWRDb3N0GCEgASgBItcFChtDb21taXRtZW50UGxhblJlc291cmNlTWF0Y2gSCgoCaWQYASABKAkSEgoKdG90YWxVbml0cxgCIAEoARIcChRiZWZvcmVVbmNvdmVyZWRVbml0cxgDIAEoARIZChFhZnRlckNvdmVyZWRVbml0cxgEIAEoARIbChNhZnRlclVuY292ZXJlZFVuaXRzGAUgASgBEhUKDW9uZGVtYW5kUHJpY2UYBiABKAESGQoRaWZBbGxPbmRlbWFuZENvc3QYByABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GAggASgBEhkKEWFmdGVyT25kZW1hbmRDb3N0GAkgASgBEhsKE2NvdmVyZWRPbmRlbWFuZENvc3QYCiABKAESGgoSYmVmb3JlUmVzZXJ2ZWRDb3N0GAsgASgBEhkKEWFmdGVyUmVzZXJ2ZWRDb3N0GAwgASgBEhIKCmJlZm9yZUNvc3QYDSABKAESEQoJYWZ0ZXJDb3N0GA4gASgBEhkKEW1vbnRobHlCZWZvcmVDb3N0GA8gASgBEhgKEG1vbnRobHlBZnRlckNvc3QYECABKAESIAoYbW9udGhseUFmdGVyUmVzZXJ2ZWRDb3N0GBEgASgBEiAKGG1vbnRobHlBZnRlck9uZGVtYW5kQ29zdBgSIAEoARIWCg5hdmVyYWdlU2F2aW5ncxgTIAEoARIdChVhdmVyYWdlTW9udGhseVNhdmluZ3MYFCABKAESEQoJdXNhZ2VUeXBlGBUgASgJEhAKCGNvdmVyYWdlGBYgASgBEikKCHJlc291cmNlGBcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb3ZlcmVkVW5pdHMYGCABKAESHAoUZXhwbGFuYXRpb25Vbm1hdGNoZWQYGSABKAESFAoMb25kZW1hbmRDb3N0GBogASgBEhQKDHJlc2VydmVkQ29zdBgbIAEoASLuAQoFTGVhc2USCgoCaWQYASABKAkSDQoFb3JnSWQYAiABKAkSHQoVcHJvdmlkZXJSZXNlcnZhdGlvbklkGAMgASgJEhEKCWFjY291bnRJZBgEIAEoCRIOCgZzdGF0dXMYBSABKAkSEQoJc3RhcnREYXRlGAYgASgJEg8KB2VuZERhdGUYByABKAkSEgoKbG9ja2luRGF0ZRgIIAEoCRITCgt1cGZyb250Q29zdBgJIAEoARIVCg1yZWN1cnJpbmdDb3N0GAogASgBEhEKCWNyZWF0ZWRBdBgLIAEoCRIRCgl1cGRhdGVkQXQYDCABKAkiSQoQRGFpbHlVdGlsaXphdGlvbhIMCgRkYXRlGAEgASgJEhMKC3V0aWxpemF0aW9uGAIgASgBEhIKCm5ldFNhdmluZ3MYAyABKAEi0AcKCkNvbW1pdG1lbnQSCgoCaWQYASABKAkSEQoJYWNjb3VudElkGAIgASgJEhUKDWFtb3J0aXplZENvc3QYAyABKAESGAoQYmlsbGluZ0FjY291bnRJZBgEIAEoCRIRCgljYW5SZWJhdGUYBSABKAgSFAoMY29udHJhY3RUZXJtGAYgASgJEhMKC2Rpc3BsYXlOYW1lGAcgASgJEhcKD2R1cmF0aW9uU2Vjb25kcxgIIAEoARIeChZlZmZlY3RpdmVJbnN0YW5jZUNvdW50GAkgASgDEg8KB2VuZERhdGUYCiABKAkSFQoNaW5zdGFuY2VDb3VudBgLIAEoAxIWCg5pbnN0YW5jZUZhbWlseRgMIAEoCRIUCgxpbnN0YW5jZVR5cGUYDSABKAkSEAoIaXNBY3RpdmUYDiABKAgSEgoKaXNGbGV4aWJsZRgPIAEoCBIQCghpc0xlYXNlZBgQIAEoCBIRCglpc011bHRpQXoYESABKAgSFwoPbGVhc2VMb2NraW5EYXRlGBIgASgJEhIKCmxlYXNlU3RhcnQYEyABKAkSGQoRbGVhc2VkRGlzcGxheU5hbWUYFCABKAkSEwoLbW9udGhseUNvc3QYFSABKAESFgoObW9udGhseVNhdmluZ3MYFiABKAESDAoEbmFtZRgXIAEoCRISCgpuZXRTYXZpbmdzGBggASgBEhIKCm9mZmVyaW5nSWQYGSABKAkSFQoNcGF5bWVudE9wdGlvbhgaIAEoCRIYChBwb3RlbnRpYWxTYXZpbmdzGBsgASgBEhoKEnByb2R1Y3REZXNjcmlwdGlvbhgcIAEoCRIQCghwcm92aWRlchgdIAEoCRIeChZwcm92aWRlclJlc2VydmF0aW9uX2lkGB4gASgJEhUKDXJlY3VycmluZ0Nvc3QYHyABKAESDgoGcmVnaW9uGCAgASgJEhMKC3JlbmV3YWxQbGFuGCEgASgJEhYKDnJlc2VydmF0aW9uRW5kGCIgASgJEhgKEHJlc2VydmF0aW9uU3RhcnQYIyABKAkSFAoMcnVubmluZ0hvdXJzGCQgASgBEg8KB3NhdmluZ3MYJSABKAESEQoJc3RhcnREYXRlGCYgASgJEg4KBnN0YXR1cxgnIAEoCRIeChZ0cmFuc2ZlclJlc2VydmF0aW9uRW5kGCggASgJEiAKGHRyYW5zZmVyUmVzZXJ2YXRpb25TdGFydBgpIAEoCRIMCgR0eXBlGCogASgJEhMKC3VwZnJvbnRDb3N0GCsgASgBEhMKC3V0aWxpemF0aW9uGCwgASgBIkkKF0xpc3RDb21taXRtZW50c1Jlc3BvbnNlEi4KC2NvbW1pdG1lbnRzGAEgAygLMhkuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50IkoKFENvbW1pdG1lbnRzQ2hhcnREYXRhEgwKBGRhdGUYASABKAkSEAoIY2hhcnRLZXkYAiABKAkSEgoKY2hhcnRWYWx1ZRgDIAEoASJNChhDb21taXRtZW50c0NoYXJ0UmVzcG9uc2USMQoEZGF0YRgBIAMoCzIjLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNDaGFydERhdGEi/AEKGkNvbW1pdG1lbnRzVXRpbGl6YXRpb25EYXRhEhcKD3V0aWxpemF0aW9uRGF0ZRgBIAEoCRIMCgRjb3N0GAIgASgBEhMKC2NvdmVyZWRDb3N0GAMgASgBEg8KB2dyaUZlZXMYBCABKAESEgoKbmV0U2F2aW5ncxgFIAEoARIYChBwb3RlbnRpYWxTYXZpbmdzGAYgASgBEh4KFnJlc2VydmF0aW9uVXRpbGl6YXRpb24YByABKAESFAoMcnVubmluZ0hvdXJzGAggASgBEg8KB3NhdmluZ3MYCSABKAESHAoUdW51dGlsaXplZENvbW1pdG1lbnQYCiABKAEiWQoeQ29tbWl0bWVudHNVdGlsaXphdGlvblJlc3BvbnNlEjcKBGRhdGEYASADKAsyKS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRzVXRpbGl6YXRpb25EYXRhIs0DCg9NZXRyaWNzUmVzcG9uc2USFwoPbGlmZXRpbWVTYXZpbmdzGAEgASgBEhIKCm10ZFNhdmluZ3MYAiABKAESIQoZcHVyY2hhc2VBdXRvbWF0aW9uRW5hYmxlZBgDIAEoCBIgChhidXliYWNrQXV0b21hdGlvbkVuYWJsZWQYBCABKAgSFwoPaGFzQWN0aW9uZWRQbGFuGAUgASgIEhkKEWhhc1BlbmRpbmdBY3Rpb25zGAYgASgIEhsKE2xhdGVzdEV4ZWN1dGlvbkRhdGUYByABKAkSHQoVcHVyY2hhc2VNaXNzZWRTYXZpbmdzGAggASgBEhwKFGJ1eWJhY2tNaXNzZWRTYXZpbmdzGAkgASgBEh8KF3RvdGFsRGFpbHlNaXNzZWRTYXZpbmdzGAogASgBEhsKE2hvdXJseU1pc3NlZFNhdmluZ3MYCyABKAESHgoWbWlzc2VkU2F2aW5nc1N0YXJ0RGF0ZRgMIAEoCRIcChRtaXNzZWRTYXZpbmdzRW5kRGF0ZRgNIAEoCRIXCg9leHBpcmluZ1NhdmluZ3MYDiABKAESEAoIY292ZXJhZ2UYDyABKAESEwoLdXRpbGl6YXRpb24YECABKAEiiAgKCFJlc291cmNlEgoKAmlkGAEgASgJEhIKCnJlc291cmNlSWQYAiABKAkSKQoIcHJvdmlkZXIYAyABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhoKEnByb3ZpZGVyUmVzb3VyY2VJZBgEIAEoCRIOCgZpc1Nwb3QYBSABKAgSDAoEbmFtZRgGIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAcgASgJEhAKCHVzYWdlRW5kGAggASgJEhIKCnVzYWdlU3RhcnQYCSABKAkSJQoEdGFncxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEQoJY3JlYXRlZEF0GAsgASgJEhEKCXVwZGF0ZWRBdBgMIAEoCRISCgppbnN0YW5jZUlkGA0gASgJEhgKEGJpbGxpbmdBY2NvdW50SWQYDiABKAkSFAoMc3ViQWNjb3VudElkGA8gASgJEhsKE21hbmFnZW1lbnRBY2NvdW50SWQYECABKAkSFgoOb3duZXJBY2NvdW50SWQYESABKAkSEAoIc2t1VGl0bGUYEiABKAkSDwoHc2t1TmFtZRgTIAEoCRIYChBhdmFpbGFiaWxpdHlab25lGBQgASgJEhMKC2NhY2hlRW5naW5lGBUgASgJEhYKDmRhdGFiYXNlRW5naW5lGBYgASgJEhMKC2Rlc2NyaXB0aW9uGBcgASgJEg4KBmZhbWlseRgYIAEoCRIWCg5mdWxsUmVnaW9uTmFtZRgZIAEoCRIYChBoYXNPbmRlbWFuZFRlcm1zGBogASgIEhQKDGluc3RhbmNlVHlwZRgbIAEoCRIaChJpbnN0YW5jZVR5cGVGYW1pbHkYHCABKAkSFAoMaXNSZXNlcnZhYmxlGB0gASgIEhQKDGxpY2Vuc2VNb2RlbBgeIAEoCRIUCgxsb2NhdGlvblR5cGUYHyABKAkSHwoXbm9ybWFsaXphdGlvblNpemVGYWN0b3IYICABKAkSFwoPb3BlcmF0aW5nU3lzdGVtGCEgASgJEhYKDnByZUluc3RhbGxlZFN3GCIgASgJEhUKDXByaWNlQ3VycmVuY3kYIyABKAkSFwoPcHJvdmlkZXJTZXJ2aWNlGCQgASgJEhUKDXByb3ZpZGVyU2t1SWQYJSABKAkSFwoPcHVibGljYXRpb25EYXRlGCYgASgJEg4KBnJlZ2lvbhgnIAEoCRIPCgdzZXJ2aWNlGCggASgJEg8KB3RlbmFuY3kYKSABKAkSEQoJdXNhZ2VUeXBlGCogASgJEg8KB3ZlcnNpb24YKyABKAkSHAoUdnBjTmV0d29ya2luZ1N1cHBvcnQYLCABKAgSGQoRb25kZW1hbmRVc2FnZVVuaXQYLSABKAkiQwoVTGlzdFJlc291cmNlc1Jlc3BvbnNlEioKCXJlc291cmNlcxgBIAMoCzIXLmJsdWVhcGkuZ2MudjEuUmVzb3VyY2Ui1AIKElJlc291cmNlRGFpbHlVc2FnZRIMCgRkYXRlGAEgASgJEhYKDnVzYWdlQWNjb3VudElkGAIgASgJEhQKDHN1YkFjY291bnRJZBgDIAEoCRINCgV1c2FnZRgEIAEoARIYChByZXNlcnZhdGlvblVzYWdlGAUgASgBEhUKDWZyZWVUaWVyVXNhZ2UYBiABKAESFAoMb25kZW1hbmRDb3N0GAcgASgBEhQKDHJlc2VydmVkQ29zdBgIIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgJIAEoARIQCghzcG90Q29zdBgKIAEoARIXCg9mcmVlVGllclNhdmluZ3MYCyABKAESEQoJdXNhZ2VUeXBlGAwgASgJEhcKD2NvbW1vblVzYWdlVHlwZRgNIAEoCRIUCgxjb3ZlcmVkVXNhZ2UYDiABKAESDgoGdXB0aW1lGA8gASgBIlYKHUdldFJlc291cmNlRGFpbHlVc2FnZVJlc3BvbnNlEjUKCmRhaWx5VXNhZ2UYASADKAsyIS5ibHVlYXBpLmdjLnYxLlJlc291cmNlRGFpbHlVc2FnZSJ0CgdTZWdtZW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSKQoIcHJvdmlkZXIYAyABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCWlzRGVmYXVsdBgEIAEoCBIRCgljcmVhdGVkQXQYBSABKAkiQAoOU2VnbWVudENyZWF0b3ISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAkiSwoMUHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhEKCWlzUmVuZXdhbBgEIAEoCCKlBQoOU2VnbWVudERldGFpbHMSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIpCghwcm92aWRlchgEIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISFgoOY2xvdWRQcm92aWRlcnMYBSADKAkSEQoJaXNEZWZhdWx0GAYgASgIEhEKCWNyZWF0ZWRBdBgHIAEoCRIwCgljcmVhdGVkQnkYCCABKAsyHS5ibHVlYXBpLmdjLnYxLlNlZ21lbnRDcmVhdG9yEhAKCHBhcmVudElkGAkgASgJEg4KBnN0YXR1cxgKIAEoCRIUCgxzZWdtZW50Q2xhc3MYCyABKAkSJwoGcGFyYW1zGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBITCgttb250aGx5Q29zdBgNIAEoARIWCg5tb250aGx5TmV0Q29zdBgOIAEoARIgChhtb250aGx5SWZBbGxPbmRlbWFuZENvc3QYDyABKAESGwoTbW9udGhseU9uZGVtYW5kQ29zdBgQIAEoARIbChNtb250aGx5UmVzZXJ2ZWRDb3N0GBEgASgBEhcKD21vbnRobHlTcG90Q29zdBgSIAEoARIWCg5tb250aGx5U2F2aW5ncxgTIAEoARIVCg1tb250aGx5QnVkZ2V0GBQgASgBEhAKCGNvdmVyYWdlGBUgASgBEhsKE3JlY29tbWVuZGVkQ292ZXJhZ2UYFiABKAESFgoOdGFyZ2V0Q292ZXJhZ2UYFyABKAESHAoUbW9udGhseVJlc291cmNlQ291bnQYGCABKAUSMgoNcHVyY2hhc2VQbGFucxgZIAMoCzIbLmJsdWVhcGkuZ2MudjEuUHVyY2hhc2VQbGFuIngKDENvbnRyYWN0U3BlYxIWCg5jb21taXRtZW50VHlwZRgBIAEoCRIVCg1wYXltZW50T3B0aW9uGAIgASgJEgwKBHRlcm0YAyABKAkSKwoKcHJvcGVydGllcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi3gIKC1BsYW5TdW1tYXJ5EgsKA2tleRgBIAEoCRIQCghwcm92aWRlchgCIAEoCRIWCg5udW1Db21taXRtZW50cxgDIAEoBRIVCg1taW5Db21taXRtZW50GAQgASgBEhkKEW1vbnRobHlDb21taXRtZW50GAUgASgBEhMKC3VwZnJvbnRDb3N0GAYgASgBEhIKCm1pblNhdmluZ3MYByABKAESEgoKbWF4U2F2aW5ncxgIIAEoARIWCg5tb250aGx5U2F2aW5ncxgJIAEoARIUCgxtaW5UZXJtSG91cnMYCiABKAUSFAoMbWF4VGVybUhvdXJzGAsgASgFEhMKC2dyaVByZW1pdW1zGAwgASgBEhoKEmJlZm9yZU9uZGVtYW5kQ29zdBgNIAEoARIZChFhZnRlck9uZGVtYW5kQ29zdBgOIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgPIAEoASLlAgoOU2VydmljZVN1bW1hcnkSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLc2VydmljZU5hbWUYAyABKAkSEAoIcHJvdmlkZXIYBCABKAkSFgoObnVtQ29tbWl0bWVudHMYBSABKAUSFwoPY3VycmVudENvdmVyYWdlGAYgASgBEhkKEXBvdGVudGlhbENvdmVyYWdlGAcgASgBEhUKDW1pbkNvbW1pdG1lbnQYCCABKAESGQoRbW9udGhseUNvbW1pdG1lbnQYCSABKAESEwoLdXBmcm9udENvc3QYCiABKAESEgoKbWluU2F2aW5ncxgLIAEoARISCgptYXhTYXZpbmdzGAwgASgBEhYKDm1vbnRobHlTYXZpbmdzGA0gASgBEhQKDG1pblRlcm1Ib3VycxgOIAEoBRIUCgxtYXhUZXJtSG91cnMYDyABKAUSEgoKZ3JpUHJlbWl1bRgQIAEoASLaAQoQQWdncmVnYXRlTWV0cmljcxIXCg9jdXJyZW50Q292ZXJhZ2UYASABKAESGQoRcG90ZW50aWFsQ292ZXJhZ2UYAiABKAESQQoJc3VtbWFyaWVzGAMgAygLMi4uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzLlN1bW1hcmllc0VudHJ5Gk8KDlN1bW1hcmllc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmJsdWVhcGkuZ2MudjEuU2VydmljZVN1bW1hcnk6AjgBItUKChNEZWZhdWx0UHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJc2VnbWVudElkGAUgASgJEicKB3NlZ21lbnQYBiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQSDgoGc3RhdHVzGAcgASgJEhAKCHBsYW5UeXBlGAggASgJEhEKCWNyZWF0ZWRBdBgJIAEoCRIUCgxsYXN0TW9kaWZpZWQYCiABKAkSKQoJY3JlYXRlZEJ5GAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi8KD2V4ZWN1dGlvblBvbGljeRgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCglpc0RlZmF1bHQYDSABKAgSFQoNaXNSZWNvbW1lbmRlZBgOIAEoCBIRCglpc1JlbmV3YWwYDyABKAgSFQoNaXNDYWxjdWxhdGluZxgQIAEoCBIQCghpc0xvY2tlZBgRIAEoCBIPCgdpc1NhdmVkGBIgASgIEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgTIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgUIAMoCRIPCgdtYXhUZXJtGBUgASgJEh4KFnByZWZlcnJlZFBheW1lbnRPcHRpb24YFiABKAkSFgoObWF4VXBmcm9udENvc3QYFyABKAESIgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYGCABKAESPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGBkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCXN0YXJ0RGF0ZRgaIAEoCRIPCgdlbmREYXRlGBsgASgJEhIKCmRhdGFTb3VyY2UYHCABKAkSEgoKYmVmb3JlQ29zdBgdIAEoARIRCglhZnRlckNvc3QYHiABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GB8gASgBEhoKEmJlZm9yZVJlc2VydmVkQ29zdBggIAEoARIbChNjb3ZlcmVkT25kZW1hbmRDb3N0GCEgASgBEhUKDWFtb3J0aXplZENvc3QYIiABKAESFQoNcmVjdXJyaW5nQ29zdBgjIAEoARITCgt1cGZyb250Q29zdBgkIAEoARIRCgl0b3RhbENvc3QYJSABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgmIAEoARIPCgdzYXZpbmdzGCcgASgBEhYKDm1vbnRobHlTYXZpbmdzGCggASgBEhQKDHRvdGFsU2F2aW5ncxgpIAEoARILCgNmZWUYKiABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGCsgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgsIAEoARIWCg5icmVha2V2ZW5Ib3VycxgtIAEoARI5ChBhZ2dyZWdhdGVNZXRyaWNzGC4gASgLMh8uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzEi0KCXN1bW1hcmllcxgvIAMoCzIaLmJsdWVhcGkuZ2MudjEuUGxhblN1bW1hcnkSFgoOcmVzZXJ2YXRpb25JZHMYMCADKAkSEwoLcmVzb3VyY2VJZHMYMSADKAkSFgoOZmxhZ2dlZEFjdGlvbnMYMiADKAkSEgoKbWV0YVBsYW5JZBgzIAEoCRISCgpjb3ZlcmFnZUlkGDQgASgJIlcKIkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2USMQoFcGxhbnMYASADKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iXQooR2V0VXBkYXRlZFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJBCg9QbGFuSGlzdG9yeVVzZXISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAki9wEKEFBsYW5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRINCgVvcmdJZBgDIAEoCRIXCg9yZWxhdGVkT2JqZWN0SWQYBCABKAkSGQoRcmVsYXRlZE9iamVjdFR5cGUYBSABKAkSEQoJdGltZXN0YW1wGAYgASgJEgwKBHR5cGUYByABKAkSDgoGdXNlcklkGAggASgJEiQKBGRhdGEYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLAoEdXNlchgKIAEoCzIeLmJsdWVhcGkuZ2MudjEuUGxhbkhpc3RvcnlVc2VyIoQCChNSZWdpc3Rlck9yZ1Jlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSLgoLbWVtYmVyc2hpcHMYAyADKAsyGS5ibHVlYXBpLmdjLnYxLk1lbWJlcnNoaXASDgoGZG9tYWluGAQgASgJEi4KDnByaW1hcnlBZGRyZXNzGAUgASgLMhYuYmx1ZWFwaS5nYy52MS5BZGRyZXNzEh8KF2F3c01hcmtldHBsYWNlT2ZmZXJMaW5rGAYgASgJEiEKGWF6dXJlTWFya2V0cGxhY2VPZmZlckxpbmsYByABKAkSHwoXZ2NwTWFya2V0cGxhY2VPZmZlckxpbmsYCCABKAkiMgoaU3RhcnRBd3NPbmJvYXJkaW5nUmVzcG9uc2USFAoMb25ib2FyZGluZ0lkGAEgASgJIlEKJEdldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXNwb25zZRIpCgh0ZW1wbGF0ZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiKwocR2V0QXdzTGF1bmNoU3RhY2tVcmxSZXNwb25zZRILCgN1cmwYASABKAkijwQKG1ZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZRJUCgZjaGVja3MYASADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrGpkDChlBd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrEg8KB2ZlYXR1cmUYASABKAkSbwoGc3RhdHVzGAIgASgOMl8uYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjay5Bd3NPbmJvYXJkaW5nRmVhdHVyZVN0YXR1cyL5AQoaQXdzT25ib2FyZGluZ0ZlYXR1cmVTdGF0dXMSLQopQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIrCidBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19BVkFJTEFCTEUQARIpCiVBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19XQVJOSU5HEAISKQolQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfTUlTU0lORxADEikKJUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX1VOS05PV04QBCKcBQobR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlEg0KBWZvdW5kGAEgASgIEg0KBWlzTXNwGAIgASgIEikKCHByb3ZpZGVyGAMgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIPCgdnY09yZ0lkGAQgASgJEhQKDG9uYm9hcmRpbmdJZBgFIAEoCRJVChBvbmJvYXJkaW5nU3RhdHVzGAYgASgOMjsuYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UuT25ib2FyZGluZ1N0YXR1cxIRCglhY2NvdW50SWQYByABKAkSFgoOYmlsbGluZ0dyb3VwSWQYCCABKAkSEQoJY29tcGFueUlkGAkgASgJEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgKIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2silQIKEE9uYm9hcmRpbmdTdGF0dXMSIQodT05CT0FSRElOR19TVEFUVVNfVU5TUEVDSUZJRUQQABIkCiBPTkJPQVJESU5HX1NUQVRVU19OT1RfUkVHSVNURVJFRBABEiAKHE9OQk9BUkRJTkdfU1RBVFVTX1JFR0lTVEVSRUQQAhIoCiRPTkJPQVJESU5HX1NUQVRVU19PTkJPQVJESU5HX1NUQVJURUQQAxIeChpPTkJPQVJESU5HX1NUQVRVU19WRVJJRklFRBAEEicKI09OQk9BUkRJTkdfU1RBVFVTX1ZFUklGWV9JTkNPTVBMRVRFEAUSIwofT05CT0FSRElOR19TVEFUVVNfVkVSSUZZX0ZBSUxFRBAGIpUCChNQYXllckFjY291bnREZXRhaWxzEhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIgChhyaXBwbGVSZWdpc3RyYXRpb25TdGF0dXMYAyABKAkSUgoNZ2NTZXR1cFN0YXR1cxgEIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAggAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjayKoBQoZTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZRJMCg1wYXllckFjY291bnRzGAEgAygLMjUuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudBI/ChNwYXllckFjY291bnREZXRhaWxzGAIgAygLMiIuYmx1ZWFwaS5nYy52MS5QYXllckFjY291bnREZXRhaWxzGvoCCgxQYXllckFjY291bnQSEQoJYWNjb3VudElkGAEgASgJEhMKC2FjY291bnROYW1lGAIgASgJEhYKDmJpbGxpbmdHcm91cElkGAMgASgJEhEKCXNlZ21lbnRJZBgEIAEoCRJLCgZzdGF0dXMYBSABKA4yOy5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UuUGF5ZXJBY2NvdW50U3RhdHVzEhEKCWNvbXBhbnlJZBgGIAEoCRJVChBvbmJvYXJkaW5nU3RhdHVzGAcgASgOMjsuYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UuT25ib2FyZGluZ1N0YXR1cxJgChJ2ZXJpZmljYXRpb25DaGVja3MYCCADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrIn8KElBheWVyQWNjb3VudFN0YXR1cxIkCiBQQVlFUl9BQ0NPVU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEiAKHFBBWUVSX0FDQ09VTlRfU1RBVFVTX0VOQUJMRUQQARIhCh1QQVlFUl9BQ0NPVU5UX1NUQVRVU19ESVNBQkxFRBACIm0KHlNldFBheWVyQWNjb3VudEVuYWJsZWRSZXNwb25zZRJLCgxwYXllckFjY291bnQYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UuUGF5ZXJBY2NvdW50ImwKHUdldFBheWVyQWNjb3VudFN0YXR1c1Jlc3BvbnNlEksKDHBheWVyQWNjb3VudBgBIAEoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZS5QYXllckFjY291bnQitgUKGUxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2USTAoNYmlsbGluZ0dyb3VwcxgBIAMoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZS5CaWxsaW5nR3JvdXAayQMKDEJpbGxpbmdHcm91cBIRCgljb21wYW55SWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCRIWCg5wYXllckFjY291bnRJZBgFIAEoCRIYChBwYXllckFjY291bnROYW1lGAYgASgJEhEKCXNlZ21lbnRJZBgHIAEoCRIUCgxyZXNvdXJjZVR5cGUYCCABKAkSSwoGc3RhdHVzGAkgASgOMjsuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlLkJpbGxpbmdHcm91cFN0YXR1cxJVChBvbmJvYXJkaW5nU3RhdHVzGAogASgOMjsuYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UuT25ib2FyZGluZ1N0YXR1cxJgChJ2ZXJpZmljYXRpb25DaGVja3MYCyADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrIn8KEkJpbGxpbmdHcm91cFN0YXR1cxIkCiBCSUxMSU5HX0dST1VQX1NUQVRVU19VTlNQRUNJRklFRBAAEiAKHEJJTExJTkdfR1JPVVBfU1RBVFVTX0VOQUJMRUQQARIhCh1CSUxMSU5HX0dST1VQX1NUQVRVU19ESVNBQkxFRBACImwKHVNldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlEksKDGJpbGxpbmdHcm91cBgBIAEoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZS5CaWxsaW5nR3JvdXAibAodR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2USSwoMYmlsbGluZ0dyb3VwGAEgASgLMjUuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlLkJpbGxpbmdHcm91cCJaChxWYWxpZGF0ZUJpbGxpbmdHcm91cFJlc3BvbnNlEgoKAm9rGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSDAoEY29kZRgDIAEoCRIPCgdkZXRhaWxzGAQgAygJIlMKHkxpc3REcmFmdFB1cmNoYXNlUGxhbnNSZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJCCh9EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlc3BvbnNlEg4KBnBsYW5JZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIIt0BCipHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVzcG9uc2USEQoJbGF1bmNoVXJsGAEgASgJEhMKC3RlbXBsYXRlVXJsGAIgASgJEhEKCXN0YWNrTmFtZRgDIAEoCRIRCglwcmluY2lwYWwYBCABKAkSEgoKZXh0ZXJuYWxJZBgFIAEoCRIlCh1ndWFyYW50ZWVkQ29tbWl0bWVudFByaW5jaXBhbBgGIAEoCRImCh5ndWFyYW50ZWVkQ29tbWl0bWVudEV4dGVybmFsSWQYByABKAkivgIKKENyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVzcG9uc2USDgoGdGFyZ2V0GAEgASgJEhUKDXJpcHBsZVJvbGVBcm4YAiABKAkSGAoQcmlwcGxlRXh0ZXJuYWxJZBgDIAEoCRIjChtndWFyYW50ZWVkQ29tbWl0bWVudFJvbGVBcm4YBCABKAkSJgoeZ3VhcmFudGVlZENvbW1pdG1lbnRFeHRlcm5hbElkGAUgASgJEg8KB3N0YWNrSWQYBiABKAkSEwoLc3RhY2tSZWdpb24YByABKAkSEwoLdGVtcGxhdGVVcmwYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2xhc3RVcGRhdGVkGAogASgJEiQKHGd1YXJhbnRlZWRDb21taXRtZW50VmVyaWZpZWQYCyABKAgihAIKH0dldFB1cmNoYXNlUGxhbnNEZXRhaWxzUmVzcG9uc2USMAoEcGxhbhgBIAEoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbhI4CglsaW5lSXRlbXMYAiADKAsyJS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRQbGFuTGluZUl0ZW0SQwoPcmVzb3VyY2VNYXRjaGVzGAMgAygLMiouYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhblJlc291cmNlTWF0Y2gSMAoHaGlzdG9yeRgEIAMoCzIfLmJsdWVhcGkuZ2MudjEuUGxhbkhpc3RvcnlFbnRyeSJ6ChxBenVyZUFyY2hlcmFPcmdGZWF0dXJlU3RhdHVzEiYKBmRldGFpbBgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIPCgdmZWF0dXJlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIRCgl1cGRhdGVkQXQYBCABKAkiVgoaQXp1cmVBcmNoZXJhT3JnTGVhc2VCdWRnZXQSDgoGYnVkZ2V0GAEgASgBEhEKCWNyZWF0ZWRBdBgCIAEoCRIVCg1taW5UZXJtTW9udGhzGAMgASgFIp4LCg9BenVyZUFyY2hlcmFPcmcSHgoWYXBwbHlCYWxhbmNlVG9QcmVtaXVtcxgBIAEoCBITCgthdXRoU3NvT25seRgCIAEoCBI3Chdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRI5ChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB2JhbGFuY2UYBSABKAESFQoNYmlsbGluZ0FjdGl2ZRgGIAEoCBIaChJjaGFubmVsUGFydG5lclR5cGUYByABKAkSMgoSY2hhbm5lbFBhcnRuZXJzaGlwGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKC2NvbnRyYWN0RW5kGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNyZWF0ZWRBdBgKIAEoCRIoCghjdXJyZW5jeRgLIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9kZWZhdWx0VXNlclJvbGUYDCABKAkSLAoMZGlzY291bnRJbmZvGA0gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg4KBmRvbWFpbhgOIAEoCRItCg1lZmZlY3RpdmVEYXRlGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEkQKD2ZlYXR1cmVTdGF0dXNlcxgQIAMoCzIrLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnRmVhdHVyZVN0YXR1cxIQCghmZWF0dXJlcxgRIAMoCRIqCgpmcnVnYWxNb2RlGBIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjcKF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGBMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKC2hhc0Rpc2NvdW50GBQgASgIEg8KB2hhc0dyaXMYFSABKAgSIQoZaGFzVGRzUGFjUHJveHlDcmVkZW50aWFscxgWIAEoCBIKCgJpZBgXIAEoCRIfChdpc0xlYXNlQnV5YmFja0F1dG9tYXRlZBgYIAEoCBIcChRpc0xlYXNlU3dhcEF1dG9tYXRlZBgZIAEoCBIVCg1pc1Rkc1BhY1Byb3h5GBogASgIEj4KC2xlYXNlQnVkZ2V0GBsgASgLMikuYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmdMZWFzZUJ1ZGdldBIgChhsZWFzZUJ1eWJhY2tMb29rYmFja0RheXMYHCABKAUSHQoVbGVhc2VTd2FwTG9va2JhY2tEYXlzGB0gASgFEgwKBG5hbWUYHiABKAkSKQoJcGFydG5lcklkGB8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCXBsYW5UcmlhbBggIAEoCBIYChBwbGFuVHJpYWxFeHBpcmVzGCEgASgJEhYKDnBsYW5UeXBlQ2hvc2VuGCIgASgJEhkKEXBsYW5UeXBlRWZmZWN0aXZlGCMgASgJEi4KDnByaW1hcnlBZGRyZXNzGCQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi0KDXByb21vdGlvbkNvZGUYJSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSWgoWcHJvdmlkZXJSb290U2VnbWVudElkcxgmIAMoCzI6LmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnLlByb3ZpZGVyUm9vdFNlZ21lbnRJZHNFbnRyeRo9ChtQcm92aWRlclJvb3RTZWdtZW50SWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJUChhBenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSFAoMb25ib2FyZGluZ0lkGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJEhAKCGZ1bGxOYW1lGAMgASgJIrIHChRBenVyZU9uYm9hcmRpbmdTdGF0ZRIUCgxvbmJvYXJkaW5nSWQYASABKAkSDQoFb3JnSWQYAiABKAkSEAoIcHJvdmlkZXIYAyABKAkSEQoJY29tcGxldGVkGAQgASgIEhEKCWNyZWF0ZWRBdBgFIAEoCRI6CgljcmVhdGVkQnkYBiABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIrCgtpbnRlZ3JhdGlvbhgHIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1pbnRlZ3JhdGlvbklkGAggASgJEhoKEmFyY2hlcmFPdXRib3VuZElwcxgJIAMoCRIQCgh0ZW5hbnRJZBgKIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgLIAEoCRISCgphY2NvdW50SWRzGAwgAygJEhMKC2FjY291bnRLaW5kGA0gASgJEjAKEGFwcEF1dGhWYWxpZGF0ZWQYDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLQoNYXBwQXV0aG9yaXplZBgPIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1ibG9iQ29udGFpbmVyGBAgASgJEhUKDXJlc291cmNlR3JvdXAYESABKAkSFgoOc3RvcmFnZUFjY291bnQYEiABKAkSEAoIcm9sZU5hbWUYEyABKAkSLwoPY3JlYXRlUmVzb3VyY2VzGBQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFG1hcmtldHBsYWNlQ29tcGxldGVkGBUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi8KD3Blcm1pc3Npb25MZXZlbBgWIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIzChNyZXNvdXJjZUdyb3VwUmVnaW9uGBcgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKFHN0b3JhZ2VBY2NvdW50UmVnaW9uGBggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjEKEXJlc291cmNlR3JvdXBUYWdzGBkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjIKEnN0b3JhZ2VBY2NvdW50VGFncxgaIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIrCgNvcmcYGyABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyKTAQocU3RhcnRBenVyZU9uYm9hcmRpbmdSZXNwb25zZRIUCgxvbmJvYXJkaW5nSWQYASABKAkSMgoFc3RhdGUYAiABKAsyIy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ1N0YXRlEhYKDmJpbGxpbmdHcm91cElkGAMgASgJEhEKCWNvbXBhbnlJZBgEIAEoCSIwCiFHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVzcG9uc2USCwoDdXJsGAEgASgJInYKDEF6dXJlQWNjb3VudBIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkSFQoNYWNjb3VudFN0YXR1cxgDIAEoCRITCgthY2NvdW50VHlwZRgEIAEoCRISCgppc0VsaWdpYmxlGAUgASgIIlQKI0xpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1Jlc3BvbnNlEi0KCGFjY291bnRzGAEgAygLMhsuYmx1ZWFwaS5nYy52MS5BenVyZUFjY291bnQiUAodQXp1cmVJbnRlZ3JhdGlvbkZlYXR1cmVTdGF0dXMSDwoHZmVhdHVyZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDgoGZGV0YWlsGAMgAygJIsIBChpBenVyZUludGVncmF0aW9uT25ib2FyZGluZxIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghwcm92aWRlchgDIAEoCRIVCg1pbnRlZ3JhdGlvbklkGAQgASgJEhEKCWNvbXBsZXRlZBgFIAEoCBIRCgljcmVhdGVkQXQYBiABKAkSOgoJY3JlYXRlZEJ5GAcgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnki7gQKEEF6dXJlSW50ZWdyYXRpb24SCgoCaWQYASABKAkSDgoGYWN0aXZlGAIgASgIEgwKBG5hbWUYAyABKAkSEAoIcHJvdmlkZXIYBCABKAkSDAoEdHlwZRgFIAEoCRINCgVvcmdJZBgGIAEoCRIOCgZ1c2VySWQYByABKAkSEQoJY3JlYXRlZEF0GAggASgJEhEKCXVwZGF0ZWRBdBgJIAEoCRIgChhtYW5hZ2VtZW50U3Vic2NyaXB0aW9uSWQYCiABKAkSHgoWcHJvdmlkZXJPcmdhbml6YXRpb25JZBgLIAEoCRIVCg1ibG9iQ29udGFpbmVyGAwgASgJEhUKDXJlc291cmNlR3JvdXAYDSABKAkSFgoOc3RvcmFnZUFjY291bnQYDiABKAkSGAoQY29zdEV4cG9ydEZvcm1hdBgPIAEoCRIXCg9jdXJFYXJsaWVzdERhdGEYECABKAkSFQoNY3VyUmVwb3J0TmFtZRgRIAEoCRIRCgljdXJVc2FibGUYEiABKAgSFAoMaGFzQ3VyQWNjZXNzGBMgASgIEiAKGGhhc0Z1bGxSZXNlcnZhdGlvbkFjY2VzcxgUIAEoCBJFCg9mZWF0dXJlU3RhdHVzZXMYFSADKAsyLC5ibHVlYXBpLmdjLnYxLkF6dXJlSW50ZWdyYXRpb25GZWF0dXJlU3RhdHVzEj4KC29uYm9hcmRpbmdzGBYgAygLMikuYmx1ZWFwaS5nYy52MS5BenVyZUludGVncmF0aW9uT25ib2FyZGluZxInCgZjb25maWcYFyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IrQBCh5DcmVhdGVBenVyZUludGVncmF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIRCgllcnJvckNvZGUYAiABKAkSFAoMZXJyb3JNZXNzYWdlGAMgASgJEhUKDWludGVncmF0aW9uSWQYBCABKAkSFgoOYmlsbGluZ0dyb3VwSWQYBSABKAkSEQoJY29tcGFueUlkGAYgASgJEhYKDnBheWVyQWNjb3VudElkGAcgASgJIlYKHUxpc3RBenVyZUludGVncmF0aW9uc1Jlc3BvbnNlEjUKDGludGVncmF0aW9ucxgBIAMoCzIfLmJsdWVhcGkuZ2MudjEuQXp1cmVJbnRlZ3JhdGlvbipeCghQcm92aWRlchIYChRQUk9WSURFUl9VTlNQRUNJRklFRBAAEgcKA0FXUxABEgkKBUFaVVJFEAISBwoDR0NQEAMSDgoKS1VCRVJORVRFUxAEEgsKB1VOS05PV04QBSqYAQoQQ29tbWl0bWVudFN0YXR1cxIhCh1DT01NSVRNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEgcKA05FVxABEgwKCFJFVklFV0VEEAISDQoJU0NIRURVTEVEEAMSDQoJQ09NUExFVEVEEAQSCQoFRFJBRlQQBRIQCgxORUVEU19SRVZJRVcQBhIPCgtJTl9QUk9HUkVTUxAHKooBChlDb21taXRtZW50SW52ZW50b3J5U3RhdHVzEisKJ0NPTU1JVE1FTlRfSU5WRU5UT1JZX1NUQVRVU19VTlNQRUNJRklFRBAAEgoKBkFDVElWRRABEgsKB1JFVElSRUQQAhITCg9QQVlNRU5UX1BFTkRJTkcQAxISCg5QQVlNRU5UX0ZBSUxFRBAEKkMKBVNjb3BlEhUKEVNDT1BFX1VOU1BFQ0lGSUVEEAASCgoGU0hBUkVEEAESDAoIUkVHSU9OQUwQAhIJCgVaT05BTBADKkEKCVVzYWdlVHlwZRIaChZVU0FHRV9UWVBFX1VOU1BFQ0lGSUVEEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAjLILgoVR3VhcmFudGVlZENvbW1pdG1lbnRzEmMKCExpc3RPcmdzEh4uYmx1ZWFwaS5nYy52MS5MaXN0T3Jnc1JlcXVlc3QaEi5ibHVlYXBpLmdjLnYxLk9yZyIhgtPkkwIbOgEqIhYvdjEvb3JnYW5pemF0aW9uczpyZWFkMAESlwEKFENvbW1pdG1lbnRzUGxhbkFwcGx5EikuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhbkFwcGx5UmVxdWVzdBokLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudFBsYW5EZXRhaWxzIi6C0+STAig6ASoiIy92MS9jb21taXRtZW50cy9wbGFuL3twbGFuSWR9L2FwcGx5EnkKD0xpc3RDb21taXRtZW50cxIlLmJsdWVhcGkuZ2MudjEuTGlzdENvbW1pdG1lbnRzUmVxdWVzdBomLmJsdWVhcGkuZ2MudjEuTGlzdENvbW1pdG1lbnRzUmVzcG9uc2UiF4LT5JMCERIPL3YxL2NvbW1pdG1lbnRzEpcBChNHZXRDb21taXRtZW50c0NoYXJ0EikuYmx1ZWFwaS5nYy52MS5HZXRDb21taXRtZW50c0NoYXJ0UmVxdWVzdBonLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNDaGFydFJlc3BvbnNlIiyC0+STAiYSJC92MS9jb21taXRtZW50cy97Y29tbWl0bWVudElkfS9jaGFydBKvAQoZR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvbhIvLmJsdWVhcGkuZ2MudjEuR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvblJlcXVlc3QaLS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRzVXRpbGl6YXRpb25SZXNwb25zZSIygtPkkwIsEiovdjEvY29tbWl0bWVudHMve2NvbW1pdG1lbnRJZH0vdXRpbGl6YXRpb24SYwoKR2V0TWV0cmljcxIgLmJsdWVhcGkuZ2MudjEuR2V0TWV0cmljc1JlcXVlc3QaHi5ibHVlYXBpLmdjLnYxLk1ldHJpY3NSZXNwb25zZSITgtPkkwINEgsvdjEvbWV0cmljcxJxCg1MaXN0UmVzb3VyY2VzEiMuYmx1ZWFwaS5nYy52MS5MaXN0UmVzb3VyY2VzUmVxdWVzdBokLmJsdWVhcGkuZ2MudjEuTGlzdFJlc291cmNlc1Jlc3BvbnNlIhWC0+STAg8SDS92MS9yZXNvdXJjZXMSoQEKFUdldFJlc291cmNlRGFpbHlVc2FnZRIrLmJsdWVhcGkuZ2MudjEuR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVzcG9uc2UiLYLT5JMCJxIlL3YxL3Jlc291cmNlcy97cmVzb3VyY2VJZH0vZGFpbHl1c2FnZRKoAQoaTGlzdFB1cmNoYXNlUGxhbnNCeVNlZ21lbnQSMC5ibHVlYXBpLmdjLnYxLkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdBoxLmJsdWVhcGkuZ2MudjEuTGlzdFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXNwb25zZSIlgtPkkwIfEh0vdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFucxLEAQogR2V0VXBkYXRlZFB1cmNoYXNlUGxhbnNCeVNlZ21lbnQSNi5ibHVlYXBpLmdjLnYxLkdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdBo3LmJsdWVhcGkuZ2MudjEuR2V0VXBkYXRlZFB1cmNoYXNlUGxhbnNCeVNlZ21lbnRSZXNwb25zZSIvgtPkkwIpOgEqIiQvdjEvY29tbWl0bWVudHMvcHVyY2hhc2VwbGFuczp1cGRhdGUSqAEKF0dldFB1cmNoYXNlUGxhbnNEZXRhaWxzEi0uYmx1ZWFwaS5nYy52MS5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1JlcXVlc3QaLi5ibHVlYXBpLmdjLnYxLkdldFB1cmNoYXNlUGxhbnNEZXRhaWxzUmVzcG9uc2UiLoLT5JMCKBImL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMve3BsYW5JZH0SqwEKGlNhdmVDb21taXRtZW50c1BsYW5Bc0RyYWZ0EjAuYmx1ZWFwaS5nYy52MS5TYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdFJlcXVlc3QaIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iN4LT5JMCMToBKiIsL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvZHJhZnQve3BsYW5JZH0SogEKFkxpc3REcmFmdFB1cmNoYXNlUGxhbnMSLC5ibHVlYXBpLmdjLnYxLkxpc3REcmFmdFB1cmNoYXNlUGxhbnNSZXF1ZXN0Gi0uYmx1ZWFwaS5nYy52MS5MaXN0RHJhZnRQdXJjaGFzZVBsYW5zUmVzcG9uc2UiK4LT5JMCJRIjL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvZHJhZnQSswEKF0RlbGV0ZURyYWZ0UHVyY2hhc2VQbGFuEi0uYmx1ZWFwaS5nYy52MS5EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlcXVlc3QaLi5ibHVlYXBpLmdjLnYxLkRlbGV0ZURyYWZ0UHVyY2hhc2VQbGFuUmVzcG9uc2UiOYLT5JMCMyoxL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvZHJhZnQve2RyYWZ0UGxhbklkfRJvCgtSZWdpc3Rlck9yZxIhLmJsdWVhcGkuZ2MudjEuUmVnaXN0ZXJPcmdSZXF1ZXN0GiIuYmx1ZWFwaS5nYy52MS5SZWdpc3Rlck9yZ1Jlc3BvbnNlIhmC0+STAhM6ASoiDi92MS9vbmJvYXJkaW5nEo4BChJTdGFydEF3c09uYm9hcmRpbmcSKC5ibHVlYXBpLmdjLnYxLlN0YXJ0QXdzT25ib2FyZGluZ1JlcXVlc3QaKS5ibHVlYXBpLmdjLnYxLlN0YXJ0QXdzT25ib2FyZGluZ1Jlc3BvbnNlIiOC0+STAh06ASoiGC92MS9vbmJvYXJkaW5nL2F3cy9zdGFydBK7AQocR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZRIyLmJsdWVhcGkuZ2MudjEuR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZVJlcXVlc3QaMy5ibHVlYXBpLmdjLnYxLkdldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXNwb25zZSIygtPkkwIsEiovdjEvb25ib2FyZGluZy9hd3MvY2xvdWRmb3JtYXRpb24vdGVtcGxhdGUSqQEKFEdldEF3c0xhdW5jaFN0YWNrVXJsEiouYmx1ZWFwaS5nYy52MS5HZXRBd3NMYXVuY2hTdGFja1VybFJlcXVlc3QaKy5ibHVlYXBpLmdjLnYxLkdldEF3c0xhdW5jaFN0YWNrVXJsUmVzcG9uc2UiOILT5JMCMhIwL3YxL29uYm9hcmRpbmcvYXdzL2Nsb3VkZm9ybWF0aW9uL2xhdW5jaHN0YWNrdXJsEpIBChNWZXJpZnlBd3NPbmJvYXJkaW5nEikuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVxdWVzdBoqLmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlIiSC0+STAh46ASoiGS92MS9vbmJvYXJkaW5nL2F3cy92ZXJpZnkSkwEKE0dldE9uYm9hcmRpbmdTdGF0dXMSKS5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXF1ZXN0GiouYmx1ZWFwaS5nYy52MS5HZXRPbmJvYXJkaW5nU3RhdHVzUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL29uYm9hcmRpbmcvc3RhdHVzOnJlYWQSiAEKEUxpc3RQYXllckFjY291bnRzEicuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaKC5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UiIILT5JMCGhIYL3YxL21hbmFnZW1lbnRzL2FjY291bnRzEqYBChZTZXRQYXllckFjY291bnRFbmFibGVkEiwuYmx1ZWFwaS5nYy52MS5TZXRQYXllckFjY291bnRFbmFibGVkUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuU2V0UGF5ZXJBY2NvdW50RW5hYmxlZFJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9tYW5hZ2VtZW50cy9hY2NvdW50cy97Y29tcGFueUlkfRKbAQoVR2V0UGF5ZXJBY2NvdW50U3RhdHVzEisuYmx1ZWFwaS5nYy52MS5HZXRQYXllckFjY291bnRTdGF0dXNSZXF1ZXN0GiwuYmx1ZWFwaS5nYy52MS5HZXRQYXllckFjY291bnRTdGF0dXNSZXNwb25zZSIngtPkkwIhEh8vdjEvbWFuYWdlbWVudHMvYWNjb3VudHMvc3RhdHVzEo0BChFMaXN0QmlsbGluZ0dyb3VwcxInLmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXF1ZXN0GiguYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlIiWC0+STAh8SHS92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzEqgBChVTZXRCaWxsaW5nR3JvdXBTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLlNldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLlNldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlIjSC0+STAi46ASoiKS92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzL3tjb21wYW55SWR9EqABChVHZXRCaWxsaW5nR3JvdXBTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLkdldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkdldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlIiyC0+STAiYSJC92MS9tYW5hZ2VtZW50cy9iaWxsaW5nZ3JvdXBzL3N0YXR1cxKgAQoUVmFsaWRhdGVCaWxsaW5nR3JvdXASKi5ibHVlYXBpLmdjLnYxLlZhbGlkYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXNwb25zZSIvgtPkkwIpOgEqIiQvdjEvb25ib2FyZGluZy9iaWxsaW5nZ3JvdXA6dmFsaWRhdGUSzwEKIkdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmwSOC5ibHVlYXBpLmdjLnYxLkdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmxSZXF1ZXN0GjkuYmx1ZWFwaS5nYy52MS5HZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVzcG9uc2UiNILT5JMCLhIsL3YxL29uYm9hcmRpbmcvYXdzL2NmdGVtcGxhdGUvZ3VhcmFudGVlZDp1cmwSyAEKIENyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzEjYuYmx1ZWFwaS5nYy52MS5DcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2Vzc1JlcXVlc3QaNy5ibHVlYXBpLmdjLnYxLkNyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL29uYm9hcmRpbmcvYXdzL2NmdGVtcGxhdGUvZ3VhcmFudGVlZBKWAQoUU3RhcnRBenVyZU9uYm9hcmRpbmcSKi5ibHVlYXBpLmdjLnYxLlN0YXJ0QXp1cmVPbmJvYXJkaW5nUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuU3RhcnRBenVyZU9uYm9hcmRpbmdSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvb25ib2FyZGluZy9henVyZS9zdGFydBKgAQoVVXBkYXRlQXp1cmVPbmJvYXJkaW5nEisuYmx1ZWFwaS5nYy52MS5VcGRhdGVBenVyZU9uYm9hcmRpbmdSZXF1ZXN0GiMuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdTdGF0ZSI1gtPkkwIvOgEqIiovdjEvb25ib2FyZGluZy9henVyZS97b25ib2FyZGluZ0lkfTp1cGRhdGUSswEKGUdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmwSLy5ibHVlYXBpLmdjLnYxLkdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmxSZXF1ZXN0GjAuYmx1ZWFwaS5nYy52MS5HZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVzcG9uc2UiM4LT5JMCLRIrL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vYXV0aHVybBKmAQoXVmFsaWRhdGVBenVyZUFwcEluc3RhbGwSLS5ibHVlYXBpLmdjLnYxLlZhbGlkYXRlQXp1cmVBcHBJbnN0YWxsUmVxdWVzdBojLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUiN4LT5JMCMToBKiIsL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vdmFsaWRhdGUSugEKG0xpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50cxIxLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVzcG9uc2UiNILT5JMCLhIsL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vYWNjb3VudHMSogEKFkNyZWF0ZUF6dXJlSW50ZWdyYXRpb24SLC5ibHVlYXBpLmdjLnYxLkNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXF1ZXN0Gi0uYmx1ZWFwaS5nYy52MS5DcmVhdGVBenVyZUludGVncmF0aW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL29uYm9hcmRpbmcvYXp1cmUvaW50ZWdyYXRpb24SnQEKFUxpc3RBenVyZUludGVncmF0aW9ucxIrLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVzcG9uc2UiKYLT5JMCIxIhL3YxL29uYm9hcmRpbmcvYXp1cmUvaW50ZWdyYXRpb25zGqIBkkGeARJQKEFscGhhKSBHdWFyYW50ZWVkQ29tbWl0bWVudHMgQVBJLiBCYXNlIFVSTDogaHR0cHM6Ly9hcGkuYWxwaGF1cy5jbG91ZC9tL2JsdWUvZ2MaSgoSU2VydmljZSBkZWZpbml0aW9uEjRodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS90cmVlL21haW4vZ2MvQlUKFGNsb3VkLmFscGhhdXMuYXBpLmdjQhpHdWFyYW50ZWVkQ29tbWl0bWVudHNQcm90b1ohZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2djYgZwcm90bzM", [file_google_api_annotations, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
17
+ fileDesc("Cg5nYy92MS9nYy5wcm90bxINYmx1ZWFwaS5nYy52MSIRCg9MaXN0T3Jnc1JlcXVlc3QiLAoaQ29tbWl0bWVudFBsYW5BcHBseVJlcXVlc3QSDgoGcGxhbklkGAEgASgJIhgKFkxpc3RDb21taXRtZW50c1JlcXVlc3QiZwoaR2V0Q29tbWl0bWVudHNDaGFydFJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJEg8KB2dyb3VwQnkYAiABKAkSEQoJc3RhcnREYXRlGAMgASgJEg8KB2VuZERhdGUYBCABKAkiOAogR2V0Q29tbWl0bWVudHNVdGlsaXphdGlvblJlcXVlc3QSFAoMY29tbWl0bWVudElkGAEgASgJIj4KEUdldE1ldHJpY3NSZXF1ZXN0EikKCHByb3ZpZGVyGAEgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlciKjAQoUTGlzdFJlc291cmNlc1JlcXVlc3QSKQoIcHJvdmlkZXIYASABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCXNlZ21lbnRJZBgCIAEoCRIOCgZzZWFyY2gYAyABKAkSDAoEZGVzYxgEIAEoCBIPCgdvcmRlckJ5GAUgASgJEgwKBHBhZ2UYBiABKAUSEAoIcGFnZVNpemUYByABKAUijAEKHEdldFJlc291cmNlRGFpbHlVc2FnZVJlcXVlc3QSEgoKcmVzb3VyY2VJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRIUCgxjYXRhbG9nU2t1SWQYBCABKAkSDAoEcGFnZRgFIAEoBRIQCghwYWdlU2l6ZRgGIAEoBSIzCh5MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1JlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJIiMKIUxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCIwCh5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1JlcXVlc3QSDgoGcGxhbklkGAEgASgJIikKJ0dldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVxdWVzdCImCgdPcmdVc2VyEg0KBWVtYWlsGAEgASgJEgwKBHJvbGUYAiABKAkiLAoKTWVtYmVyc2hpcBIMCgRyb2xlGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJImIKB0FkZHJlc3MSDQoFbGluZTEYASABKAkSDAoEY2l0eRgCIAEoCRINCgVzdGF0ZRgDIAEoCRILCgN6aXAYBCABKAkSDwoHY291bnRyeRgFIAEoCRINCgVsaW5lMhgGIAEoCSJUCg5Bd3NFeGlzdGluZ0N1chIOCgZyZWdpb24YASABKAkSDgoGYnVja2V0GAIgASgJEg4KBnByZWZpeBgDIAEoCRISCgpyZXBvcnROYW1lGAQgASgJIosCChJSZWdpc3Rlck9yZ1JlcXVlc3QSDAoEbmFtZRgBIAEoCRIbChNsYWJyYVN1YnNjcmlwdGlvbklkGAIgASgJEiUKBXVzZXJzGAMgAygLMhYuYmx1ZWFwaS5nYy52MS5PcmdVc2VyEg4KBmRvbWFpbhgEIAEoCRIuCg5wcmltYXJ5QWRkcmVzcxgFIAEoCzIWLmJsdWVhcGkuZ2MudjEuQWRkcmVzcxIfChdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgGIAEoCRIhChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAcgASgJEh8KF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGAggASgJIokBChlTdGFydEF3c09uYm9hcmRpbmdSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBSABKAkikwEKI0dldEF3c0Nsb3VkRm9ybWF0aW9uVGVtcGxhdGVSZXF1ZXN0EhYKDmJpbGxpbmdHcm91cElkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCRIPCgdnY09yZ0lkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEhgKEHBheWVyQWNjb3VudE5hbWUYBSABKAkiiwEKG0dldEF3c0xhdW5jaFN0YWNrVXJsUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIWCg5wYXllckFjY291bnRJZBgEIAEoCRIYChBwYXllckFjY291bnROYW1lGAUgASgJIrUBChpWZXJpZnlBd3NPbmJvYXJkaW5nUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSDwoHZ2NPcmdJZBgDIAEoCRIUCgxvbmJvYXJkaW5nSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEjIKC2V4aXN0aW5nQ3VyGAYgASgLMh0uYmx1ZWFwaS5nYy52MS5Bd3NFeGlzdGluZ0N1ciJfChpHZXRPbmJvYXJkaW5nU3RhdHVzUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIRCgljb21wYW55SWQYAiABKAkSFgoOcGF5ZXJBY2NvdW50SWQYAyABKAkiGgoYTGlzdFBheWVyQWNjb3VudHNSZXF1ZXN0IkMKHVNldFBheWVyQWNjb3VudEVuYWJsZWRSZXF1ZXN0EhEKCWNvbXBhbnlJZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIh4KHEdldFBheWVyQWNjb3VudFN0YXR1c1JlcXVlc3QiGgoYTGlzdEJpbGxpbmdHcm91cHNSZXF1ZXN0IlYKHFNldEJpbGxpbmdHcm91cFN0YXR1c1JlcXVlc3QSEQoJY29tcGFueUlkGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEgoKbmV3VmVyc2lvbhgDIAEoCCIeChxHZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXF1ZXN0IkQKG1ZhbGlkYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBIRCgljb21wYW55SWQYASABKAkSEgoKbmV3VmVyc2lvbhgCIAEoCCJFChlHZXRBd3NQcml2YXRlT2ZmZXJSZXF1ZXN0EhYKDnBheWVyQWNjb3VudElkGAEgASgJEhAKCHJlY3JlYXRlGAIgASgIIsIHCiFTYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdFJlcXVlc3QSDgoGcGxhbklkGAEgASgJEhYKDnJlc2VydmF0aW9uSWRzGAIgAygJEhMKC3Jlc291cmNlSWRzGAMgAygJEhYKDm1heFVwZnJvbnRDb3N0GAQgASgBEikKCHByb3ZpZGVyGAUgASgOMhcuYmx1ZWFwaS5nYy52MS5Qcm92aWRlchIPCgdlbmREYXRlGAYgASgJEhEKCXN0YXJ0RGF0ZRgHIAEoCRIRCglzZWdtZW50SWQYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2Rlc2NyaXB0aW9uGAogASgJEgwKBG5hbWUYCyABKAkSHgoWcHJlZmVycmVkUGF5bWVudE9wdGlvbhgMIAEoCRIdChVpbmNsdWRlZENvbnRyYWN0VGVybXMYDSADKAkSOgoVaW5jbHVkZWRDb250cmFjdFNwZWNzGA4gAygLMhsuYmx1ZWFwaS5nYy52MS5Db250cmFjdFNwZWMSKgoKY292ZXJhZ2VJZBgPIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCgljcmVhdGVkQXQYECABKAkSKQoJY3JlYXRlZEJ5GBEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhIKCmRhdGFTb3VyY2UYEiABKAkSLwoPZXhlY3V0aW9uUG9saWN5GBMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhYKDmZsYWdnZWRBY3Rpb25zGBQgAygJEgoKAmlkGBUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYFiABKAgSEQoJaXNEZWZhdWx0GBcgASgIEhAKCGlzTG9ja2VkGBggASgIEhUKDWlzUmVjb21tZW5kZWQYGSABKAgSEQoJaXNSZW5ld2FsGBogASgIEg8KB2lzU2F2ZWQYGyABKAgSFAoMbGFzdE1vZGlmaWVkGBwgASgJEhIKCm1ldGFQbGFuSWQYHSABKAkSOgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYHiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDQoFb3JnSWQYHyABKAkSEAoIcGxhblR5cGUYICABKAkSPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGCEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEicKB3NlZ21lbnQYIiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQiQwodTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1JlcXVlc3QSDwoHaXNEcmFmdBgBIAEoCBIRCgljb21wYW55SWQYAiABKAkiSAoeRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXF1ZXN0EhMKC2RyYWZ0UGxhbklkGAEgASgJEhEKCWNvbXBhbnlJZBgCIAEoCSI2CiJHZXRBdmFpbGFibGVDb21taXRtZW50VHlwZXNSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIqMCCiFDcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlcXVlc3QSEAoIcHJvdmlkZXIYASABKAkSEQoJc3RhcnREYXRlGAIgASgJEg8KB2VuZERhdGUYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIMCgRuYW1lGAcgASgJEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgIIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgJIAMoCRITCgtyZXNvdXJjZUlkcxgKIAMoCRISCgpjb21wYW55SWRzGAsgAygJIj8KKUdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmxSZXF1ZXN0EhIKCmV4dGVybmFsSWQYASABKAkiTQonQ3JlYXRlR3VhcmFudGVlZENvbW1pdG1lbnRBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRISCgpleHRlcm5hbElkGAIgASgJIoMBChtTdGFydEF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSEQoJY29tcGFueUlkGAIgASgJEg8KB2djT3JnSWQYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAki0gUKHFVwZGF0ZUF6dXJlT25ib2FyZGluZ1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJY29tcGFueUlkGAQgASgJEhAKCHRlbmFudElkGAUgASgJEhYKDnN1YnNjcmlwdGlvbklkGAYgASgJEhMKC2FjY291bnRLaW5kGAcgASgJEhIKCmFjY291bnRJZHMYCCADKAkSFQoNYmxvYkNvbnRhaW5lchgJIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAogASgJEhYKDnN0b3JhZ2VBY2NvdW50GAsgASgJEhAKCHJvbGVOYW1lGAwgASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YDiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCWNvbXBsZXRlZBgRIAEoCBIRCgljcmVhdGVkQXQYEiABKAkSOgoJY3JlYXRlZEJ5GBMgASgLMicuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdDcmVhdGVkQnkSKwoLaW50ZWdyYXRpb24YFCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFQoNaW50ZWdyYXRpb25JZBgVIAEoCRIQCghwcm92aWRlchgWIAEoCRIrCgNvcmcYFyABKAsyHi5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZyJzCiBHZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVxdWVzdBIUCgxvbmJvYXJkaW5nSWQYASABKAkSDwoHZ2NPcmdJZBgCIAEoCRIQCgh0ZW5hbnRJZBgDIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgEIAEoCSK3BQoeVmFsaWRhdGVBenVyZUFwcEluc3RhbGxSZXF1ZXN0EhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIPCgdnY09yZ0lkGAIgASgJEgwKBHR5cGUYAyABKAkSEAoIdGVuYW50SWQYBCABKAkSFgoOc3Vic2NyaXB0aW9uSWQYBSABKAkSEwoLYWNjb3VudEtpbmQYBiABKAkSEgoKYWNjb3VudElkcxgHIAMoCRIVCg1ibG9iQ29udGFpbmVyGAggASgJEhUKDXJlc291cmNlR3JvdXAYCSABKAkSFgoOc3RvcmFnZUFjY291bnQYCiABKAkSEAoIcm9sZU5hbWUYCyABKAkSMwoTcmVzb3VyY2VHcm91cFJlZ2lvbhgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRI0ChRzdG9yYWdlQWNjb3VudFJlZ2lvbhgNIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIxChFyZXNvdXJjZUdyb3VwVGFncxgOIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIyChJzdG9yYWdlQWNjb3VudFRhZ3MYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJY29tcGxldGVkGBAgASgIEhEKCWNyZWF0ZWRBdBgRIAEoCRI6CgljcmVhdGVkQnkYEiABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIrCgtpbnRlZ3JhdGlvbhgTIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIVCg1pbnRlZ3JhdGlvbklkGBQgASgJEhAKCHByb3ZpZGVyGBUgASgJEisKA29yZxgWIAEoCzIeLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnIksKIkxpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50c1JlcXVlc3QSFAoMb25ib2FyZGluZ0lkGAEgASgJEg8KB2djT3JnSWQYAiABKAkilAQKHUNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXF1ZXN0Eg8KB2djT3JnSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEQoJY29tcGFueUlkGAMgASgJEhYKDnBheWVyQWNjb3VudElkGAQgASgJEgwKBHR5cGUYBSABKAkSEAoIdGVuYW50SWQYBiABKAkSFgoOc3Vic2NyaXB0aW9uSWQYByABKAkSFAoMb25ib2FyZGluZ0lkGAggASgJEhMKC2FjY291bnRLaW5kGAkgASgJEhIKCmFjY291bnRJZHMYCiADKAkSFQoNYmxvYkNvbnRhaW5lchgLIAEoCRIVCg1yZXNvdXJjZUdyb3VwGAwgASgJEhYKDnN0b3JhZ2VBY2NvdW50GA0gASgJEhAKCHJvbGVOYW1lGA4gASgJEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YECABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYESABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIi8KHExpc3RBenVyZUludGVncmF0aW9uc1JlcXVlc3QSDwoHZ2NPcmdJZBgBIAEoCSIxCgNPcmcSDQoFb3JnSWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVlbWFpbBgDIAEoCSLzBAoVQ29tbWl0bWVudFBsYW5EZXRhaWxzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJY3JlYXRlZEF0GAUgASgJEhUKDWlzQ2FsY3VsYXRpbmcYBiABKAgSDgoGc3RhdHVzGAcgASgJEg8KB21heFRlcm0YCCABKAkSIQoZY292ZXJlZE9uZGVtYW5kQ29zdEhvdXJseRgJIAEoARIgChhiZWZvcmVPbmRlbWFuZENvc3RIb3VybHkYCiABKAESIAoYYmVmb3JlUmVzZXJ2ZWRDb3N0SG91cmx5GAsgASgBEhsKE2Ftb3J0aXplZENvc3RIb3VybHkYDCABKAESGwoTcmVjdXJyaW5nQ29zdEhvdXJseRgNIAEoARIZChF1cGZyb250Q29zdEhvdXJseRgOIAEoARIYChBiZWZvcmVDb3N0SG91cmx5GA8gASgBEhcKD2FmdGVyQ29zdEhvdXJseRgQIAEoARIXCg90b3RhbENvc3RIb3VybHkYESABKAESFQoNc2F2aW5nc0hvdXJseRgSIAEoARIRCglmZWVIb3VybHkYEyABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGBQgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgVIAEoARIWCg5icmVha2V2ZW5Ib3VycxgWIAEoARIUCgx0b3RhbFNhdmluZ3MYFyABKAESFgoObW9udGhseVNhdmluZ3MYGCABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgZIAEoASK0BgoWQ29tbWl0bWVudFBsYW5MaW5lSXRlbRIKCgJpZBgBIAEoCRIOCgZwbGFuSWQYAiABKAkSDwoHb2ZmZXJJZBgDIAEoCRIXCg9sZWFzZU1lbnVJdGVtSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEhsKE3JlY29tbWVuZGVkUXVhbnRpdHkYBiABKAESGAoQc2VsZWN0ZWRRdWFudGl0eRgHIAEoARIdChVyZWNvbW1lbmRlZENvbW1pdG1lbnQYCCABKAESGgoSc2VsZWN0ZWRDb21taXRtZW50GAkgASgBEhIKCmlzU2VsZWN0ZWQYCiABKAgSGgoSYWZ0ZXJBbW9ydGl6ZWRDb3N0GAsgASgBEhMKC3VwZnJvbnRDb3N0GAwgASgBEhUKDXJlY3VycmluZ0Nvc3QYDSABKAESEgoKYmVmb3JlQ29zdBgOIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYDyABKAESGgoSYmVmb3JlUmVzZXJ2ZWRDb3N0GBAgASgBEhsKE2NvdmVyZWRPbmRlbWFuZENvc3QYESABKAESGQoRYWZ0ZXJDb3ZlcmVkVW5pdHMYEiABKAESEQoJdG90YWxDb3N0GBMgASgBEhMKC21vbnRobHlDb3N0GBQgASgBEg8KB3NhdmluZ3MYFSABKAESFgoObW9udGhseVNhdmluZ3MYFiABKAESFAoMdG90YWxTYXZpbmdzGBcgASgBEgsKA2ZlZRgYIAEoARIUCgxkaXNjb3VudFJhdGUYGSABKAESFgoOYnJlYWtldmVuSG91cnMYGiABKAESFAoMY29udHJhY3RUZXJtGBsgASgJEhUKDXBheW1lbnRPcHRpb24YHCABKAkSLQoMY29udHJhY3RTcGVjGB0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCgVvZmZlchgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSHAoUcmVuZXdhbFJlc2VydmF0aW9uSWQYHyABKAkSFAoMY292ZXJlZFVuaXRzGCAgASgBEhUKDWFtb3J0aXplZENvc3QYISABKAEi1wUKG0NvbW1pdG1lbnRQbGFuUmVzb3VyY2VNYXRjaBIKCgJpZBgBIAEoCRISCgp0b3RhbFVuaXRzGAIgASgBEhwKFGJlZm9yZVVuY292ZXJlZFVuaXRzGAMgASgBEhkKEWFmdGVyQ292ZXJlZFVuaXRzGAQgASgBEhsKE2FmdGVyVW5jb3ZlcmVkVW5pdHMYBSABKAESFQoNb25kZW1hbmRQcmljZRgGIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgHIAEoARIaChJiZWZvcmVPbmRlbWFuZENvc3QYCCABKAESGQoRYWZ0ZXJPbmRlbWFuZENvc3QYCSABKAESGwoTY292ZXJlZE9uZGVtYW5kQ29zdBgKIAEoARIaChJiZWZvcmVSZXNlcnZlZENvc3QYCyABKAESGQoRYWZ0ZXJSZXNlcnZlZENvc3QYDCABKAESEgoKYmVmb3JlQ29zdBgNIAEoARIRCglhZnRlckNvc3QYDiABKAESGQoRbW9udGhseUJlZm9yZUNvc3QYDyABKAESGAoQbW9udGhseUFmdGVyQ29zdBgQIAEoARIgChhtb250aGx5QWZ0ZXJSZXNlcnZlZENvc3QYESABKAESIAoYbW9udGhseUFmdGVyT25kZW1hbmRDb3N0GBIgASgBEhYKDmF2ZXJhZ2VTYXZpbmdzGBMgASgBEh0KFWF2ZXJhZ2VNb250aGx5U2F2aW5ncxgUIAEoARIRCgl1c2FnZVR5cGUYFSABKAkSEAoIY292ZXJhZ2UYFiABKAESKQoIcmVzb3VyY2UYFyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvdmVyZWRVbml0cxgYIAEoARIcChRleHBsYW5hdGlvblVubWF0Y2hlZBgZIAEoARIUCgxvbmRlbWFuZENvc3QYGiABKAESFAoMcmVzZXJ2ZWRDb3N0GBsgASgBIu4BCgVMZWFzZRIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIdChVwcm92aWRlclJlc2VydmF0aW9uSWQYAyABKAkSEQoJYWNjb3VudElkGAQgASgJEg4KBnN0YXR1cxgFIAEoCRIRCglzdGFydERhdGUYBiABKAkSDwoHZW5kRGF0ZRgHIAEoCRISCgpsb2NraW5EYXRlGAggASgJEhMKC3VwZnJvbnRDb3N0GAkgASgBEhUKDXJlY3VycmluZ0Nvc3QYCiABKAESEQoJY3JlYXRlZEF0GAsgASgJEhEKCXVwZGF0ZWRBdBgMIAEoCSJJChBEYWlseVV0aWxpemF0aW9uEgwKBGRhdGUYASABKAkSEwoLdXRpbGl6YXRpb24YAiABKAESEgoKbmV0U2F2aW5ncxgDIAEoASLQBwoKQ29tbWl0bWVudBIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSFQoNYW1vcnRpemVkQ29zdBgDIAEoARIYChBiaWxsaW5nQWNjb3VudElkGAQgASgJEhEKCWNhblJlYmF0ZRgFIAEoCBIUCgxjb250cmFjdFRlcm0YBiABKAkSEwoLZGlzcGxheU5hbWUYByABKAkSFwoPZHVyYXRpb25TZWNvbmRzGAggASgBEh4KFmVmZmVjdGl2ZUluc3RhbmNlQ291bnQYCSABKAMSDwoHZW5kRGF0ZRgKIAEoCRIVCg1pbnN0YW5jZUNvdW50GAsgASgDEhYKDmluc3RhbmNlRmFtaWx5GAwgASgJEhQKDGluc3RhbmNlVHlwZRgNIAEoCRIQCghpc0FjdGl2ZRgOIAEoCBISCgppc0ZsZXhpYmxlGA8gASgIEhAKCGlzTGVhc2VkGBAgASgIEhEKCWlzTXVsdGlBehgRIAEoCBIXCg9sZWFzZUxvY2tpbkRhdGUYEiABKAkSEgoKbGVhc2VTdGFydBgTIAEoCRIZChFsZWFzZWREaXNwbGF5TmFtZRgUIAEoCRITCgttb250aGx5Q29zdBgVIAEoARIWCg5tb250aGx5U2F2aW5ncxgWIAEoARIMCgRuYW1lGBcgASgJEhIKCm5ldFNhdmluZ3MYGCABKAESEgoKb2ZmZXJpbmdJZBgZIAEoCRIVCg1wYXltZW50T3B0aW9uGBogASgJEhgKEHBvdGVudGlhbFNhdmluZ3MYGyABKAESGgoScHJvZHVjdERlc2NyaXB0aW9uGBwgASgJEhAKCHByb3ZpZGVyGB0gASgJEh4KFnByb3ZpZGVyUmVzZXJ2YXRpb25faWQYHiABKAkSFQoNcmVjdXJyaW5nQ29zdBgfIAEoARIOCgZyZWdpb24YICABKAkSEwoLcmVuZXdhbFBsYW4YISABKAkSFgoOcmVzZXJ2YXRpb25FbmQYIiABKAkSGAoQcmVzZXJ2YXRpb25TdGFydBgjIAEoCRIUCgxydW5uaW5nSG91cnMYJCABKAESDwoHc2F2aW5ncxglIAEoARIRCglzdGFydERhdGUYJiABKAkSDgoGc3RhdHVzGCcgASgJEh4KFnRyYW5zZmVyUmVzZXJ2YXRpb25FbmQYKCABKAkSIAoYdHJhbnNmZXJSZXNlcnZhdGlvblN0YXJ0GCkgASgJEgwKBHR5cGUYKiABKAkSEwoLdXBmcm9udENvc3QYKyABKAESEwoLdXRpbGl6YXRpb24YLCABKAEiSQoXTGlzdENvbW1pdG1lbnRzUmVzcG9uc2USLgoLY29tbWl0bWVudHMYASADKAsyGS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnQiSgoUQ29tbWl0bWVudHNDaGFydERhdGESDAoEZGF0ZRgBIAEoCRIQCghjaGFydEtleRgCIAEoCRISCgpjaGFydFZhbHVlGAMgASgBIk0KGENvbW1pdG1lbnRzQ2hhcnRSZXNwb25zZRIxCgRkYXRhGAEgAygLMiMuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50c0NoYXJ0RGF0YSL8AQoaQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGESFwoPdXRpbGl6YXRpb25EYXRlGAEgASgJEgwKBGNvc3QYAiABKAESEwoLY292ZXJlZENvc3QYAyABKAESDwoHZ3JpRmVlcxgEIAEoARISCgpuZXRTYXZpbmdzGAUgASgBEhgKEHBvdGVudGlhbFNhdmluZ3MYBiABKAESHgoWcmVzZXJ2YXRpb25VdGlsaXphdGlvbhgHIAEoARIUCgxydW5uaW5nSG91cnMYCCABKAESDwoHc2F2aW5ncxgJIAEoARIcChR1bnV0aWxpemVkQ29tbWl0bWVudBgKIAEoASJZCh5Db21taXRtZW50c1V0aWxpemF0aW9uUmVzcG9uc2USNwoEZGF0YRgBIAMoCzIpLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNVdGlsaXphdGlvbkRhdGEizQMKD01ldHJpY3NSZXNwb25zZRIXCg9saWZldGltZVNhdmluZ3MYASABKAESEgoKbXRkU2F2aW5ncxgCIAEoARIhChlwdXJjaGFzZUF1dG9tYXRpb25FbmFibGVkGAMgASgIEiAKGGJ1eWJhY2tBdXRvbWF0aW9uRW5hYmxlZBgEIAEoCBIXCg9oYXNBY3Rpb25lZFBsYW4YBSABKAgSGQoRaGFzUGVuZGluZ0FjdGlvbnMYBiABKAgSGwoTbGF0ZXN0RXhlY3V0aW9uRGF0ZRgHIAEoCRIdChVwdXJjaGFzZU1pc3NlZFNhdmluZ3MYCCABKAESHAoUYnV5YmFja01pc3NlZFNhdmluZ3MYCSABKAESHwoXdG90YWxEYWlseU1pc3NlZFNhdmluZ3MYCiABKAESGwoTaG91cmx5TWlzc2VkU2F2aW5ncxgLIAEoARIeChZtaXNzZWRTYXZpbmdzU3RhcnREYXRlGAwgASgJEhwKFG1pc3NlZFNhdmluZ3NFbmREYXRlGA0gASgJEhcKD2V4cGlyaW5nU2F2aW5ncxgOIAEoARIQCghjb3ZlcmFnZRgPIAEoARITCgt1dGlsaXphdGlvbhgQIAEoASKICAoIUmVzb3VyY2USCgoCaWQYASABKAkSEgoKcmVzb3VyY2VJZBgCIAEoCRIpCghwcm92aWRlchgDIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISGgoScHJvdmlkZXJSZXNvdXJjZUlkGAQgASgJEg4KBmlzU3BvdBgFIAEoCBIMCgRuYW1lGAYgASgJEhUKDXJlc291cmNlR3JvdXAYByABKAkSEAoIdXNhZ2VFbmQYCCABKAkSEgoKdXNhZ2VTdGFydBgJIAEoCRIlCgR0YWdzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIRCgljcmVhdGVkQXQYCyABKAkSEQoJdXBkYXRlZEF0GAwgASgJEhIKCmluc3RhbmNlSWQYDSABKAkSGAoQYmlsbGluZ0FjY291bnRJZBgOIAEoCRIUCgxzdWJBY2NvdW50SWQYDyABKAkSGwoTbWFuYWdlbWVudEFjY291bnRJZBgQIAEoCRIWCg5vd25lckFjY291bnRJZBgRIAEoCRIQCghza3VUaXRsZRgSIAEoCRIPCgdza3VOYW1lGBMgASgJEhgKEGF2YWlsYWJpbGl0eVpvbmUYFCABKAkSEwoLY2FjaGVFbmdpbmUYFSABKAkSFgoOZGF0YWJhc2VFbmdpbmUYFiABKAkSEwoLZGVzY3JpcHRpb24YFyABKAkSDgoGZmFtaWx5GBggASgJEhYKDmZ1bGxSZWdpb25OYW1lGBkgASgJEhgKEGhhc09uZGVtYW5kVGVybXMYGiABKAgSFAoMaW5zdGFuY2VUeXBlGBsgASgJEhoKEmluc3RhbmNlVHlwZUZhbWlseRgcIAEoCRIUCgxpc1Jlc2VydmFibGUYHSABKAgSFAoMbGljZW5zZU1vZGVsGB4gASgJEhQKDGxvY2F0aW9uVHlwZRgfIAEoCRIfChdub3JtYWxpemF0aW9uU2l6ZUZhY3RvchggIAEoCRIXCg9vcGVyYXRpbmdTeXN0ZW0YISABKAkSFgoOcHJlSW5zdGFsbGVkU3cYIiABKAkSFQoNcHJpY2VDdXJyZW5jeRgjIAEoCRIXCg9wcm92aWRlclNlcnZpY2UYJCABKAkSFQoNcHJvdmlkZXJTa3VJZBglIAEoCRIXCg9wdWJsaWNhdGlvbkRhdGUYJiABKAkSDgoGcmVnaW9uGCcgASgJEg8KB3NlcnZpY2UYKCABKAkSDwoHdGVuYW5jeRgpIAEoCRIRCgl1c2FnZVR5cGUYKiABKAkSDwoHdmVyc2lvbhgrIAEoCRIcChR2cGNOZXR3b3JraW5nU3VwcG9ydBgsIAEoCBIZChFvbmRlbWFuZFVzYWdlVW5pdBgtIAEoCSJDChVMaXN0UmVzb3VyY2VzUmVzcG9uc2USKgoJcmVzb3VyY2VzGAEgAygLMhcuYmx1ZWFwaS5nYy52MS5SZXNvdXJjZSLvAgoSUmVzb3VyY2VEYWlseVVzYWdlEgwKBGRhdGUYASABKAkSFgoOdXNhZ2VBY2NvdW50SWQYAiABKAkSFAoMc3ViQWNjb3VudElkGAMgASgJEg0KBXVzYWdlGAQgASgBEhgKEHJlc2VydmF0aW9uVXNhZ2UYBSABKAESFQoNZnJlZVRpZXJVc2FnZRgGIAEoARIUCgxvbmRlbWFuZENvc3QYByABKAESFAoMcmVzZXJ2ZWRDb3N0GAggASgBEhkKEWlmQWxsT25kZW1hbmRDb3N0GAkgASgBEhAKCHNwb3RDb3N0GAogASgBEhcKD2ZyZWVUaWVyU2F2aW5ncxgLIAEoARIRCgl1c2FnZVR5cGUYDCABKAkSFwoPY29tbW9uVXNhZ2VUeXBlGA0gASgJEhQKDGNvdmVyZWRVc2FnZRgOIAEoARIOCgZ1cHRpbWUYDyABKAESGQoRcHJvdmlkZXJVc2FnZVR5cGUYECABKAkiVgodR2V0UmVzb3VyY2VEYWlseVVzYWdlUmVzcG9uc2USNQoKZGFpbHlVc2FnZRgBIAMoCzIhLmJsdWVhcGkuZ2MudjEuUmVzb3VyY2VEYWlseVVzYWdlIoMQChJSZXNlcnZhYmxlUmVzb3VyY2USCgoCaWQYASABKAkSEgoKcmVzb3VyY2VJZBgCIAEoCRIYChBiaWxsaW5nQWNjb3VudElkGAMgASgJEhQKDHN1YkFjY291bnRJZBgEIAEoCRIQCghwcm92aWRlchgFIAEoCRIaChJwcm92aWRlclJlc291cmNlSWQYBiABKAkSFwoPcHJvdmlkZXJTZXJ2aWNlGAcgASgJEhUKDXByb3ZpZGVyU2t1SWQYCCABKAkSDgoGaXNTcG90GAkgASgIEhQKDGlzUmVzZXJ2YWJsZRgKIAEoCBIkCgRuYW1lGAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi0KDXJlc291cmNlR3JvdXAYDCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEAoIdXNhZ2VFbmQYDSABKAkSEgoKdXNhZ2VTdGFydBgOIAEoCRIlCgR0YWdzGA8gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBItCgxwcm92aWRlclRhZ3MYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCHVzZXJUYWdzGBEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIRCgljcmVhdGVkQXQYEiABKAkSEQoJdXBkYXRlZEF0GBMgASgJEhIKCmluc3RhbmNlSWQYFCABKAkSMAoQYXZhaWxhYmlsaXR5Wm9uZRgVIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIrCgtjYWNoZUVuZ2luZRgWIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIUCgxjYXRhbG9nU2t1SWQYFyABKAkSFwoPY2F0YWxvZ1NrdU9yZ0lkGBggASgJEiAKGGNsYXNzaWNOZXR3b3JraW5nU3VwcG9ydBgZIAEoCBISCgpjbG9ja1NwZWVkGBogASgJEhcKD2NvbW1vblVzYWdlVHlwZRgbIAEoCRIUCgxjb3ZlcmVkVXNhZ2UYHCABKAESLgoOZGF0YWJhc2VFbmdpbmUYHSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHgoWZGVkaWNhdGVkRWJzVGhyb3VnaHB1dBgeIAEoCRIrCgtkZXNjcmlwdGlvbhgfIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRILCgNlY3UYICABKAkSIwobZW5oYW5jZWROZXR3b3JraW5nU3VwcG9ydGVkGCEgASgIEg4KBmZhbWlseRgiIAEoCRIWCg5mdWxsUmVnaW9uTmFtZRgjIAEoCRIYChBoYXNPbmRlbWFuZFRlcm1zGCQgASgIEg8KB2ljb25VcmwYJSABKAkSFQoNaW50ZWdyYXRpb25JZBgmIAEoCRIaChJpbnRlbEF2eDJBdmFpbGFibGUYJyABKAgSGQoRaW50ZWxBdnhBdmFpbGFibGUYKCABKAgSGwoTaW50ZWxUdXJib0F2YWlsYWJsZRgpIAEoCBIiCgJpbxgqIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIbChNpc0N1cnJlbnRHZW5lcmF0aW9uGCsgASgIEikKCWlzTXVsdGlBehgsIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIUCgxsaWNlbnNlTW9kZWwYLSABKAkSFAoMbG9jYXRpb25UeXBlGC4gASgJEg4KBm1lbW9yeRgvIAEoCRInCgdza3VOYW1lGDAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhAKCHNrdVRpdGxlGDEgASgJEg8KB25ldENvc3QYMiABKAESEgoKbmV0U2F2aW5ncxgzIAEoARIaChJuZXR3b3JrUGVyZm9ybWFuY2UYNCABKAkSHwoXbm9ybWFsaXphdGlvblNpemVGYWN0b3IYNSABKAkSFAoMb25kZW1hbmRDb3N0GDYgASgBEhkKEW9uZGVtYW5kVXNhZ2VVbml0GDcgASgJEhcKD29wZXJhdGluZ1N5c3RlbRg4IAEoCRIRCglvcGVyYXRpb24YOSABKAkSGQoRcGh5c2ljYWxQcm9jZXNzb3IYOiABKAkSFgoOcHJlSW5zdGFsbGVkU3cYOyABKAkSFQoNcHJpY2VDdXJyZW5jeRg8IAEoCRIdChVwcm9jZXNzb3JBcmNoaXRlY3R1cmUYPSABKAkSGQoRcHJvY2Vzc29yRmVhdHVyZXMYPiABKAkSFwoPcHVibGljYXRpb25EYXRlGD8gASgJEg4KBnJlZ2lvbhhAIAEoCRIPCgdzZXJ2aWNlGEEgASgJEg4KBnNvdXJjZRhCIAEoCRIPCgdzdG9yYWdlGEMgASgJEicKB3RheFR5cGUYRCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDwoHdGVuYW5jeRhFIAEoCRIOCgZ1cHRpbWUYRiABKAESEQoJdXNhZ2VUeXBlGEcgASgJEgwKBHZjcHUYSCABKAkSDwoHdmVyc2lvbhhJIAEoCRIcChR2cGNOZXR3b3JraW5nU3VwcG9ydBhKIAEoCBIUCgxpbnN0YW5jZVR5cGUYSyABKAkSGgoSaW5zdGFuY2VUeXBlRmFtaWx5GEwgASgJEjYKC2RhaWx5VXNhZ2VzGE0gAygLMiEuYmx1ZWFwaS5nYy52MS5SZXNvdXJjZURhaWx5VXNhZ2UiVwofTGlzdFJlc2VydmFibGVSZXNvdXJjZXNSZXNwb25zZRI0CglyZXNvdXJjZXMYASADKAsyIS5ibHVlYXBpLmdjLnYxLlJlc2VydmFibGVSZXNvdXJjZSJ0CgdTZWdtZW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSKQoIcHJvdmlkZXIYAyABKA4yFy5ibHVlYXBpLmdjLnYxLlByb3ZpZGVyEhEKCWlzRGVmYXVsdBgEIAEoCBIRCgljcmVhdGVkQXQYBSABKAkiQAoOU2VnbWVudENyZWF0b3ISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAkiSwoMUHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhEKCWlzUmVuZXdhbBgEIAEoCCKlBQoOU2VnbWVudERldGFpbHMSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIpCghwcm92aWRlchgEIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISFgoOY2xvdWRQcm92aWRlcnMYBSADKAkSEQoJaXNEZWZhdWx0GAYgASgIEhEKCWNyZWF0ZWRBdBgHIAEoCRIwCgljcmVhdGVkQnkYCCABKAsyHS5ibHVlYXBpLmdjLnYxLlNlZ21lbnRDcmVhdG9yEhAKCHBhcmVudElkGAkgASgJEg4KBnN0YXR1cxgKIAEoCRIUCgxzZWdtZW50Q2xhc3MYCyABKAkSJwoGcGFyYW1zGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBITCgttb250aGx5Q29zdBgNIAEoARIWCg5tb250aGx5TmV0Q29zdBgOIAEoARIgChhtb250aGx5SWZBbGxPbmRlbWFuZENvc3QYDyABKAESGwoTbW9udGhseU9uZGVtYW5kQ29zdBgQIAEoARIbChNtb250aGx5UmVzZXJ2ZWRDb3N0GBEgASgBEhcKD21vbnRobHlTcG90Q29zdBgSIAEoARIWCg5tb250aGx5U2F2aW5ncxgTIAEoARIVCg1tb250aGx5QnVkZ2V0GBQgASgBEhAKCGNvdmVyYWdlGBUgASgBEhsKE3JlY29tbWVuZGVkQ292ZXJhZ2UYFiABKAESFgoOdGFyZ2V0Q292ZXJhZ2UYFyABKAESHAoUbW9udGhseVJlc291cmNlQ291bnQYGCABKAUSMgoNcHVyY2hhc2VQbGFucxgZIAMoCzIbLmJsdWVhcGkuZ2MudjEuUHVyY2hhc2VQbGFuIngKDENvbnRyYWN0U3BlYxIWCg5jb21taXRtZW50VHlwZRgBIAEoCRIVCg1wYXltZW50T3B0aW9uGAIgASgJEgwKBHRlcm0YAyABKAkSKwoKcHJvcGVydGllcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi3gIKC1BsYW5TdW1tYXJ5EgsKA2tleRgBIAEoCRIQCghwcm92aWRlchgCIAEoCRIWCg5udW1Db21taXRtZW50cxgDIAEoBRIVCg1taW5Db21taXRtZW50GAQgASgBEhkKEW1vbnRobHlDb21taXRtZW50GAUgASgBEhMKC3VwZnJvbnRDb3N0GAYgASgBEhIKCm1pblNhdmluZ3MYByABKAESEgoKbWF4U2F2aW5ncxgIIAEoARIWCg5tb250aGx5U2F2aW5ncxgJIAEoARIUCgxtaW5UZXJtSG91cnMYCiABKAUSFAoMbWF4VGVybUhvdXJzGAsgASgFEhMKC2dyaVByZW1pdW1zGAwgASgBEhoKEmJlZm9yZU9uZGVtYW5kQ29zdBgNIAEoARIZChFhZnRlck9uZGVtYW5kQ29zdBgOIAEoARIZChFpZkFsbE9uZGVtYW5kQ29zdBgPIAEoASLlAgoOU2VydmljZVN1bW1hcnkSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLc2VydmljZU5hbWUYAyABKAkSEAoIcHJvdmlkZXIYBCABKAkSFgoObnVtQ29tbWl0bWVudHMYBSABKAUSFwoPY3VycmVudENvdmVyYWdlGAYgASgBEhkKEXBvdGVudGlhbENvdmVyYWdlGAcgASgBEhUKDW1pbkNvbW1pdG1lbnQYCCABKAESGQoRbW9udGhseUNvbW1pdG1lbnQYCSABKAESEwoLdXBmcm9udENvc3QYCiABKAESEgoKbWluU2F2aW5ncxgLIAEoARISCgptYXhTYXZpbmdzGAwgASgBEhYKDm1vbnRobHlTYXZpbmdzGA0gASgBEhQKDG1pblRlcm1Ib3VycxgOIAEoBRIUCgxtYXhUZXJtSG91cnMYDyABKAUSEgoKZ3JpUHJlbWl1bRgQIAEoASLaAQoQQWdncmVnYXRlTWV0cmljcxIXCg9jdXJyZW50Q292ZXJhZ2UYASABKAESGQoRcG90ZW50aWFsQ292ZXJhZ2UYAiABKAESQQoJc3VtbWFyaWVzGAMgAygLMi4uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzLlN1bW1hcmllc0VudHJ5Gk8KDlN1bW1hcmllc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmJsdWVhcGkuZ2MudjEuU2VydmljZVN1bW1hcnk6AjgBIs4LChNEZWZhdWx0UHVyY2hhc2VQbGFuEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFb3JnSWQYBCABKAkSEQoJc2VnbWVudElkGAUgASgJEicKB3NlZ21lbnQYBiABKAsyFi5ibHVlYXBpLmdjLnYxLlNlZ21lbnQSDgoGc3RhdHVzGAcgASgJEhAKCHBsYW5UeXBlGAggASgJEhEKCWNyZWF0ZWRBdBgJIAEoCRIUCgxsYXN0TW9kaWZpZWQYCiABKAkSKQoJY3JlYXRlZEJ5GAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEi8KD2V4ZWN1dGlvblBvbGljeRgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIRCglpc0RlZmF1bHQYDSABKAgSFQoNaXNSZWNvbW1lbmRlZBgOIAEoCBIRCglpc1JlbmV3YWwYDyABKAgSFQoNaXNDYWxjdWxhdGluZxgQIAEoCBIQCghpc0xvY2tlZBgRIAEoCBIPCgdpc1NhdmVkGBIgASgIEjoKFWluY2x1ZGVkQ29udHJhY3RTcGVjcxgTIAMoCzIbLmJsdWVhcGkuZ2MudjEuQ29udHJhY3RTcGVjEh0KFWluY2x1ZGVkQ29udHJhY3RUZXJtcxgUIAMoCRIPCgdtYXhUZXJtGBUgASgJEh4KFnByZWZlcnJlZFBheW1lbnRPcHRpb24YFiABKAkSFgoObWF4VXBmcm9udENvc3QYFyABKAESIgoabWluaW11bVVwZnJvbnRJbnRlcmVzdFJhdGUYGCABKAESPgoecmVjb21tZW5kV2l0aGluQ292ZXJlZEFjY291bnRzGBkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhEKCXN0YXJ0RGF0ZRgaIAEoCRIPCgdlbmREYXRlGBsgASgJEhIKCmRhdGFTb3VyY2UYHCABKAkSEgoKYmVmb3JlQ29zdBgdIAEoARIRCglhZnRlckNvc3QYHiABKAESGgoSYmVmb3JlT25kZW1hbmRDb3N0GB8gASgBEhoKEmJlZm9yZVJlc2VydmVkQ29zdBggIAEoARIbChNjb3ZlcmVkT25kZW1hbmRDb3N0GCEgASgBEhUKDWFtb3J0aXplZENvc3QYIiABKAESFQoNcmVjdXJyaW5nQ29zdBgjIAEoARITCgt1cGZyb250Q29zdBgkIAEoARIRCgl0b3RhbENvc3QYJSABKAESHgoWdG90YWxNb250aGx5QmVmb3JlQ29zdBgmIAEoARIPCgdzYXZpbmdzGCcgASgBEhYKDm1vbnRobHlTYXZpbmdzGCggASgBEhQKDHRvdGFsU2F2aW5ncxgpIAEoARILCgNmZWUYKiABKAESGgoSY29tbWl0bWVudENvdmVyYWdlGCsgASgBEh0KFW1pbmltdW1Db21taXRtZW50Q29zdBgsIAEoARIWCg5icmVha2V2ZW5Ib3VycxgtIAEoARI5ChBhZ2dyZWdhdGVNZXRyaWNzGC4gASgLMh8uYmx1ZWFwaS5nYy52MS5BZ2dyZWdhdGVNZXRyaWNzEi0KCXN1bW1hcmllcxgvIAMoCzIaLmJsdWVhcGkuZ2MudjEuUGxhblN1bW1hcnkSFgoOcmVzZXJ2YXRpb25JZHMYMCADKAkSEwoLcmVzb3VyY2VJZHMYMSADKAkSFgoOZmxhZ2dlZEFjdGlvbnMYMiADKAkSEgoKbWV0YVBsYW5JZBgzIAEoCRISCgpjb3ZlcmFnZUlkGDQgASgJEhgKEG1vbnRobHlBZnRlckNvc3QYNSABKAESHAoUbW9udGhseUFtb3J0aXplZENvc3QYNiABKAESGQoRbW9udGhseUJlZm9yZUNvc3QYNyABKAESEgoKbW9udGhseUZlZRg4IAEoARIQCghhbGxUZXJtcxg5IAMoCSJXCiJMaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlc3BvbnNlEjEKBXBsYW5zGAEgAygLMiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuIl0KKEdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2USMQoFcGxhbnMYASADKAsyIi5ibHVlYXBpLmdjLnYxLkRlZmF1bHRQdXJjaGFzZVBsYW4iQQoPUGxhbkhpc3RvcnlVc2VyEgoKAmlkGAEgASgJEhAKCHVzZXJuYW1lGAIgASgJEhAKCGZ1bGxOYW1lGAMgASgJIvcBChBQbGFuSGlzdG9yeUVudHJ5EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSDQoFb3JnSWQYAyABKAkSFwoPcmVsYXRlZE9iamVjdElkGAQgASgJEhkKEXJlbGF0ZWRPYmplY3RUeXBlGAUgASgJEhEKCXRpbWVzdGFtcBgGIAEoCRIMCgR0eXBlGAcgASgJEg4KBnVzZXJJZBgIIAEoCRIkCgRkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiwKBHVzZXIYCiABKAsyHi5ibHVlYXBpLmdjLnYxLlBsYW5IaXN0b3J5VXNlciKEAgoTUmVnaXN0ZXJPcmdSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEi4KC21lbWJlcnNoaXBzGAMgAygLMhkuYmx1ZWFwaS5nYy52MS5NZW1iZXJzaGlwEg4KBmRvbWFpbhgEIAEoCRIuCg5wcmltYXJ5QWRkcmVzcxgFIAEoCzIWLmJsdWVhcGkuZ2MudjEuQWRkcmVzcxIfChdhd3NNYXJrZXRwbGFjZU9mZmVyTGluaxgGIAEoCRIhChlhenVyZU1hcmtldHBsYWNlT2ZmZXJMaW5rGAcgASgJEh8KF2djcE1hcmtldHBsYWNlT2ZmZXJMaW5rGAggASgJIjIKGlN0YXJ0QXdzT25ib2FyZGluZ1Jlc3BvbnNlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCSJRCiRHZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlUmVzcG9uc2USKQoIdGVtcGxhdGUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IisKHEdldEF3c0xhdW5jaFN0YWNrVXJsUmVzcG9uc2USCwoDdXJsGAEgASgJIo8EChtWZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2USVAoGY2hlY2tzGAEgAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjaxqZAwoZQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjaxIPCgdmZWF0dXJlGAEgASgJEm8KBnN0YXR1cxgCIAEoDjJfLmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2suQXdzT25ib2FyZGluZ0ZlYXR1cmVTdGF0dXMi+QEKGkF3c09uYm9hcmRpbmdGZWF0dXJlU3RhdHVzEi0KKUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKwonQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfQVZBSUxBQkxFEAESKQolQVdTX09OQk9BUkRJTkdfRkVBVFVSRV9TVEFUVVNfV0FSTklORxACEikKJUFXU19PTkJPQVJESU5HX0ZFQVRVUkVfU1RBVFVTX01JU1NJTkcQAxIpCiVBV1NfT05CT0FSRElOR19GRUFUVVJFX1NUQVRVU19VTktOT1dOEAQinAUKG0dldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZRINCgVmb3VuZBgBIAEoCBINCgVpc01zcBgCIAEoCBIpCghwcm92aWRlchgDIAEoDjIXLmJsdWVhcGkuZ2MudjEuUHJvdmlkZXISDwoHZ2NPcmdJZBgEIAEoCRIUCgxvbmJvYXJkaW5nSWQYBSABKAkSVQoQb25ib2FyZGluZ1N0YXR1cxgGIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSEQoJYWNjb3VudElkGAcgASgJEhYKDmJpbGxpbmdHcm91cElkGAggASgJEhEKCWNvbXBhbnlJZBgJIAEoCRJgChJ2ZXJpZmljYXRpb25DaGVja3MYCiADKAsyRC5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXNwb25zZS5Bd3NPbmJvYXJkaW5nRmVhdHVyZUNoZWNrIpUCChBPbmJvYXJkaW5nU3RhdHVzEiEKHU9OQk9BUkRJTkdfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogT05CT0FSRElOR19TVEFUVVNfTk9UX1JFR0lTVEVSRUQQARIgChxPTkJPQVJESU5HX1NUQVRVU19SRUdJU1RFUkVEEAISKAokT05CT0FSRElOR19TVEFUVVNfT05CT0FSRElOR19TVEFSVEVEEAMSHgoaT05CT0FSRElOR19TVEFUVVNfVkVSSUZJRUQQBBInCiNPTkJPQVJESU5HX1NUQVRVU19WRVJJRllfSU5DT01QTEVURRAFEiMKH09OQk9BUkRJTkdfU1RBVFVTX1ZFUklGWV9GQUlMRUQQBiKVAgoTUGF5ZXJBY2NvdW50RGV0YWlscxIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkSIAoYcmlwcGxlUmVnaXN0cmF0aW9uU3RhdHVzGAMgASgJElIKDWdjU2V0dXBTdGF0dXMYBCABKA4yOy5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZS5PbmJvYXJkaW5nU3RhdHVzEmAKEnZlcmlmaWNhdGlvbkNoZWNrcxgIIAMoCzJELmJsdWVhcGkuZ2MudjEuVmVyaWZ5QXdzT25ib2FyZGluZ1Jlc3BvbnNlLkF3c09uYm9hcmRpbmdGZWF0dXJlQ2hlY2siqAUKGUxpc3RQYXllckFjY291bnRzUmVzcG9uc2USTAoNcGF5ZXJBY2NvdW50cxgBIAMoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZS5QYXllckFjY291bnQSPwoTcGF5ZXJBY2NvdW50RGV0YWlscxgCIAMoCzIiLmJsdWVhcGkuZ2MudjEuUGF5ZXJBY2NvdW50RGV0YWlscxr6AgoMUGF5ZXJBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgDIAEoCRIRCglzZWdtZW50SWQYBCABKAkSSwoGc3RhdHVzGAUgASgOMjsuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudFN0YXR1cxIRCgljb21wYW55SWQYBiABKAkSVQoQb25ib2FyZGluZ1N0YXR1cxgHIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAggAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjayJ/ChJQYXllckFjY291bnRTdGF0dXMSJAogUEFZRVJfQUNDT1VOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIgChxQQVlFUl9BQ0NPVU5UX1NUQVRVU19FTkFCTEVEEAESIQodUEFZRVJfQUNDT1VOVF9TVEFUVVNfRElTQUJMRUQQAiJtCh5TZXRQYXllckFjY291bnRFbmFibGVkUmVzcG9uc2USSwoMcGF5ZXJBY2NvdW50GAEgASgLMjUuYmx1ZWFwaS5nYy52MS5MaXN0UGF5ZXJBY2NvdW50c1Jlc3BvbnNlLlBheWVyQWNjb3VudCJsCh1HZXRQYXllckFjY291bnRTdGF0dXNSZXNwb25zZRJLCgxwYXllckFjY291bnQYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVzcG9uc2UuUGF5ZXJBY2NvdW50IrYFChlMaXN0QmlsbGluZ0dyb3Vwc1Jlc3BvbnNlEkwKDWJpbGxpbmdHcm91cHMYASADKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwGskDCgxCaWxsaW5nR3JvdXASEQoJY29tcGFueUlkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkSFgoOcGF5ZXJBY2NvdW50SWQYBSABKAkSGAoQcGF5ZXJBY2NvdW50TmFtZRgGIAEoCRIRCglzZWdtZW50SWQYByABKAkSFAoMcmVzb3VyY2VUeXBlGAggASgJEksKBnN0YXR1cxgJIAEoDjI7LmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZS5CaWxsaW5nR3JvdXBTdGF0dXMSVQoQb25ib2FyZGluZ1N0YXR1cxgKIAEoDjI7LmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1Jlc3BvbnNlLk9uYm9hcmRpbmdTdGF0dXMSYAoSdmVyaWZpY2F0aW9uQ2hlY2tzGAsgAygLMkQuYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UuQXdzT25ib2FyZGluZ0ZlYXR1cmVDaGVjayJ/ChJCaWxsaW5nR3JvdXBTdGF0dXMSJAogQklMTElOR19HUk9VUF9TVEFUVVNfVU5TUEVDSUZJRUQQABIgChxCSUxMSU5HX0dST1VQX1NUQVRVU19FTkFCTEVEEAESIQodQklMTElOR19HUk9VUF9TVEFUVVNfRElTQUJMRUQQAiJsCh1TZXRCaWxsaW5nR3JvdXBTdGF0dXNSZXNwb25zZRJLCgxiaWxsaW5nR3JvdXAYASABKAsyNS5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UuQmlsbGluZ0dyb3VwImwKHUdldEJpbGxpbmdHcm91cFN0YXR1c1Jlc3BvbnNlEksKDGJpbGxpbmdHcm91cBgBIAEoCzI1LmJsdWVhcGkuZ2MudjEuTGlzdEJpbGxpbmdHcm91cHNSZXNwb25zZS5CaWxsaW5nR3JvdXAiWgocVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXNwb25zZRIKCgJvaxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEgwKBGNvZGUYAyABKAkSDwoHZGV0YWlscxgEIAMoCSLOAQoaR2V0QXdzUHJpdmF0ZU9mZmVyUmVzcG9uc2USFgoOcGF5ZXJBY2NvdW50SWQYASABKAkSDwoHb2ZmZXJJZBgCIAEoCRIRCglvZmZlck5hbWUYAyABKAkSDgoGc3RhdHVzGAQgASgJEhAKCG9mZmVyVXJsGAUgASgJEhEKCXByb2R1Y3RJZBgGIAEoCRIUCgxwcmljZVBlclVuaXQYByABKAESEQoJY3JlYXRlZEF0GAggASgJEhYKDmV4cGlyYXRpb25EYXRlGAkgASgJIlMKHkxpc3REcmFmdFB1cmNoYXNlUGxhbnNSZXNwb25zZRIxCgVwbGFucxgBIAMoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbiJCCh9EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlc3BvbnNlEg4KBnBsYW5JZBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIIjQKI0dldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlc1Jlc3BvbnNlEg0KBXR5cGVzGAEgAygJIt0BCipHZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVzcG9uc2USEQoJbGF1bmNoVXJsGAEgASgJEhMKC3RlbXBsYXRlVXJsGAIgASgJEhEKCXN0YWNrTmFtZRgDIAEoCRIRCglwcmluY2lwYWwYBCABKAkSEgoKZXh0ZXJuYWxJZBgFIAEoCRIlCh1ndWFyYW50ZWVkQ29tbWl0bWVudFByaW5jaXBhbBgGIAEoCRImCh5ndWFyYW50ZWVkQ29tbWl0bWVudEV4dGVybmFsSWQYByABKAkivgIKKENyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVzcG9uc2USDgoGdGFyZ2V0GAEgASgJEhUKDXJpcHBsZVJvbGVBcm4YAiABKAkSGAoQcmlwcGxlRXh0ZXJuYWxJZBgDIAEoCRIjChtndWFyYW50ZWVkQ29tbWl0bWVudFJvbGVBcm4YBCABKAkSJgoeZ3VhcmFudGVlZENvbW1pdG1lbnRFeHRlcm5hbElkGAUgASgJEg8KB3N0YWNrSWQYBiABKAkSEwoLc3RhY2tSZWdpb24YByABKAkSEwoLdGVtcGxhdGVVcmwYCCABKAkSDgoGc3RhdHVzGAkgASgJEhMKC2xhc3RVcGRhdGVkGAogASgJEiQKHGd1YXJhbnRlZWRDb21taXRtZW50VmVyaWZpZWQYCyABKAgihAIKH0dldFB1cmNoYXNlUGxhbnNEZXRhaWxzUmVzcG9uc2USMAoEcGxhbhgBIAEoCzIiLmJsdWVhcGkuZ2MudjEuRGVmYXVsdFB1cmNoYXNlUGxhbhI4CglsaW5lSXRlbXMYAiADKAsyJS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRQbGFuTGluZUl0ZW0SQwoPcmVzb3VyY2VNYXRjaGVzGAMgAygLMiouYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhblJlc291cmNlTWF0Y2gSMAoHaGlzdG9yeRgEIAMoCzIfLmJsdWVhcGkuZ2MudjEuUGxhbkhpc3RvcnlFbnRyeSJXCiJDcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlc3BvbnNlEjEKBXBsYW5zGAEgAygLMiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuInoKHEF6dXJlQXJjaGVyYU9yZ0ZlYXR1cmVTdGF0dXMSJgoGZGV0YWlsGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB2ZlYXR1cmUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhEKCXVwZGF0ZWRBdBgEIAEoCSJWChpBenVyZUFyY2hlcmFPcmdMZWFzZUJ1ZGdldBIOCgZidWRnZXQYASABKAESEQoJY3JlYXRlZEF0GAIgASgJEhUKDW1pblRlcm1Nb250aHMYAyABKAUingsKD0F6dXJlQXJjaGVyYU9yZxIeChZhcHBseUJhbGFuY2VUb1ByZW1pdW1zGAEgASgIEhMKC2F1dGhTc29Pbmx5GAIgASgIEjcKF2F3c01hcmtldHBsYWNlT2ZmZXJMaW5rGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjkKGWF6dXJlTWFya2V0cGxhY2VPZmZlckxpbmsYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDwoHYmFsYW5jZRgFIAEoARIVCg1iaWxsaW5nQWN0aXZlGAYgASgIEhoKEmNoYW5uZWxQYXJ0bmVyVHlwZRgHIAEoCRIyChJjaGFubmVsUGFydG5lcnNoaXAYCCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSKwoLY29udHJhY3RFbmQYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJY3JlYXRlZEF0GAogASgJEigKCGN1cnJlbmN5GAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhcKD2RlZmF1bHRVc2VyUm9sZRgMIAEoCRIsCgxkaXNjb3VudEluZm8YDSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDgoGZG9tYWluGA4gASgJEi0KDWVmZmVjdGl2ZURhdGUYDyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSRAoPZmVhdHVyZVN0YXR1c2VzGBAgAygLMisuYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmdGZWF0dXJlU3RhdHVzEhAKCGZlYXR1cmVzGBEgAygJEioKCmZydWdhbE1vZGUYEiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNwoXZ2NwTWFya2V0cGxhY2VPZmZlckxpbmsYEyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEwoLaGFzRGlzY291bnQYFCABKAgSDwoHaGFzR3JpcxgVIAEoCBIhChloYXNUZHNQYWNQcm94eUNyZWRlbnRpYWxzGBYgASgIEgoKAmlkGBcgASgJEh8KF2lzTGVhc2VCdXliYWNrQXV0b21hdGVkGBggASgIEhwKFGlzTGVhc2VTd2FwQXV0b21hdGVkGBkgASgIEhUKDWlzVGRzUGFjUHJveHkYGiABKAgSPgoLbGVhc2VCdWRnZXQYGyABKAsyKS5ibHVlYXBpLmdjLnYxLkF6dXJlQXJjaGVyYU9yZ0xlYXNlQnVkZ2V0EiAKGGxlYXNlQnV5YmFja0xvb2tiYWNrRGF5cxgcIAEoBRIdChVsZWFzZVN3YXBMb29rYmFja0RheXMYHSABKAUSDAoEbmFtZRgeIAEoCRIpCglwYXJ0bmVySWQYHyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSEQoJcGxhblRyaWFsGCAgASgIEhgKEHBsYW5UcmlhbEV4cGlyZXMYISABKAkSFgoOcGxhblR5cGVDaG9zZW4YIiABKAkSGQoRcGxhblR5cGVFZmZlY3RpdmUYIyABKAkSLgoOcHJpbWFyeUFkZHJlc3MYJCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLQoNcHJvbW90aW9uQ29kZRglIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRJaChZwcm92aWRlclJvb3RTZWdtZW50SWRzGCYgAygLMjouYmx1ZWFwaS5nYy52MS5BenVyZUFyY2hlcmFPcmcuUHJvdmlkZXJSb290U2VnbWVudElkc0VudHJ5Gj0KG1Byb3ZpZGVyUm9vdFNlZ21lbnRJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlQKGEF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeRIUCgxvbmJvYXJkaW5nSWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIZnVsbE5hbWUYAyABKAkisgcKFEF6dXJlT25ib2FyZGluZ1N0YXRlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghwcm92aWRlchgDIAEoCRIRCgljb21wbGV0ZWQYBCABKAgSEQoJY3JlYXRlZEF0GAUgASgJEjoKCWNyZWF0ZWRCeRgGIAEoCzInLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nQ3JlYXRlZEJ5EisKC2ludGVncmF0aW9uGAcgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhUKDWludGVncmF0aW9uSWQYCCABKAkSGgoSYXJjaGVyYU91dGJvdW5kSXBzGAkgAygJEhAKCHRlbmFudElkGAogASgJEhYKDnN1YnNjcmlwdGlvbklkGAsgASgJEhIKCmFjY291bnRJZHMYDCADKAkSEwoLYWNjb3VudEtpbmQYDSABKAkSMAoQYXBwQXV0aFZhbGlkYXRlZBgOIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRItCg1hcHBBdXRob3JpemVkGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhUKDWJsb2JDb250YWluZXIYECABKAkSFQoNcmVzb3VyY2VHcm91cBgRIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgSIAEoCRIQCghyb2xlTmFtZRgTIAEoCRIvCg9jcmVhdGVSZXNvdXJjZXMYFCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUbWFya2V0cGxhY2VDb21wbGV0ZWQYFSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSLwoPcGVybWlzc2lvbkxldmVsGBYgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjMKE3Jlc291cmNlR3JvdXBSZWdpb24YFyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSNAoUc3RvcmFnZUFjY291bnRSZWdpb24YGCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMQoRcmVzb3VyY2VHcm91cFRhZ3MYGSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSMgoSc3RvcmFnZUFjY291bnRUYWdzGBogASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKA29yZxgbIAEoCzIeLmJsdWVhcGkuZ2MudjEuQXp1cmVBcmNoZXJhT3JnIpMBChxTdGFydEF6dXJlT25ib2FyZGluZ1Jlc3BvbnNlEhQKDG9uYm9hcmRpbmdJZBgBIAEoCRIyCgVzdGF0ZRgCIAEoCzIjLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUSFgoOYmlsbGluZ0dyb3VwSWQYAyABKAkSEQoJY29tcGFueUlkGAQgASgJIjAKIUdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmxSZXNwb25zZRILCgN1cmwYASABKAkidgoMQXp1cmVBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRIVCg1hY2NvdW50U3RhdHVzGAMgASgJEhMKC2FjY291bnRUeXBlGAQgASgJEhIKCmlzRWxpZ2libGUYBSABKAgiVAojTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVzcG9uc2USLQoIYWNjb3VudHMYASADKAsyGy5ibHVlYXBpLmdjLnYxLkF6dXJlQWNjb3VudCJQCh1BenVyZUludGVncmF0aW9uRmVhdHVyZVN0YXR1cxIPCgdmZWF0dXJlGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIOCgZkZXRhaWwYAyADKAkiwgEKGkF6dXJlSW50ZWdyYXRpb25PbmJvYXJkaW5nEgoKAmlkGAEgASgJEg0KBW9yZ0lkGAIgASgJEhAKCHByb3ZpZGVyGAMgASgJEhUKDWludGVncmF0aW9uSWQYBCABKAkSEQoJY29tcGxldGVkGAUgASgIEhEKCWNyZWF0ZWRBdBgGIAEoCRI6CgljcmVhdGVkQnkYByABKAsyJy5ibHVlYXBpLmdjLnYxLkF6dXJlT25ib2FyZGluZ0NyZWF0ZWRCeSLuBAoQQXp1cmVJbnRlZ3JhdGlvbhIKCgJpZBgBIAEoCRIOCgZhY3RpdmUYAiABKAgSDAoEbmFtZRgDIAEoCRIQCghwcm92aWRlchgEIAEoCRIMCgR0eXBlGAUgASgJEg0KBW9yZ0lkGAYgASgJEg4KBnVzZXJJZBgHIAEoCRIRCgljcmVhdGVkQXQYCCABKAkSEQoJdXBkYXRlZEF0GAkgASgJEiAKGG1hbmFnZW1lbnRTdWJzY3JpcHRpb25JZBgKIAEoCRIeChZwcm92aWRlck9yZ2FuaXphdGlvbklkGAsgASgJEhUKDWJsb2JDb250YWluZXIYDCABKAkSFQoNcmVzb3VyY2VHcm91cBgNIAEoCRIWCg5zdG9yYWdlQWNjb3VudBgOIAEoCRIYChBjb3N0RXhwb3J0Rm9ybWF0GA8gASgJEhcKD2N1ckVhcmxpZXN0RGF0YRgQIAEoCRIVCg1jdXJSZXBvcnROYW1lGBEgASgJEhEKCWN1clVzYWJsZRgSIAEoCBIUCgxoYXNDdXJBY2Nlc3MYEyABKAgSIAoYaGFzRnVsbFJlc2VydmF0aW9uQWNjZXNzGBQgASgIEkUKD2ZlYXR1cmVTdGF0dXNlcxgVIAMoCzIsLmJsdWVhcGkuZ2MudjEuQXp1cmVJbnRlZ3JhdGlvbkZlYXR1cmVTdGF0dXMSPgoLb25ib2FyZGluZ3MYFiADKAsyKS5ibHVlYXBpLmdjLnYxLkF6dXJlSW50ZWdyYXRpb25PbmJvYXJkaW5nEicKBmNvbmZpZxgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitAEKHkNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhEKCWVycm9yQ29kZRgCIAEoCRIUCgxlcnJvck1lc3NhZ2UYAyABKAkSFQoNaW50ZWdyYXRpb25JZBgEIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgFIAEoCRIRCgljb21wYW55SWQYBiABKAkSFgoOcGF5ZXJBY2NvdW50SWQYByABKAkiVgodTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVzcG9uc2USNQoMaW50ZWdyYXRpb25zGAEgAygLMh8uYmx1ZWFwaS5nYy52MS5BenVyZUludGVncmF0aW9uKl4KCFByb3ZpZGVyEhgKFFBST1ZJREVSX1VOU1BFQ0lGSUVEEAASBwoDQVdTEAESCQoFQVpVUkUQAhIHCgNHQ1AQAxIOCgpLVUJFUk5FVEVTEAQSCwoHVU5LTk9XThAFKpgBChBDb21taXRtZW50U3RhdHVzEiEKHUNPTU1JVE1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASBwoDTkVXEAESDAoIUkVWSUVXRUQQAhINCglTQ0hFRFVMRUQQAxINCglDT01QTEVURUQQBBIJCgVEUkFGVBAFEhAKDE5FRURTX1JFVklFVxAGEg8KC0lOX1BST0dSRVNTEAcqigEKGUNvbW1pdG1lbnRJbnZlbnRvcnlTdGF0dXMSKwonQ09NTUlUTUVOVF9JTlZFTlRPUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASCgoGQUNUSVZFEAESCwoHUkVUSVJFRBACEhMKD1BBWU1FTlRfUEVORElORxADEhIKDlBBWU1FTlRfRkFJTEVEEAQqQwoFU2NvcGUSFQoRU0NPUEVfVU5TUEVDSUZJRUQQABIKCgZTSEFSRUQQARIMCghSRUdJT05BTBACEgkKBVpPTkFMEAMqQQoJVXNhZ2VUeXBlEhoKFlVTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABILCgdSVU5OSU5HEAESCwoHU1RPUFBFRBACMv4zChVHdWFyYW50ZWVkQ29tbWl0bWVudHMSYwoITGlzdE9yZ3MSHi5ibHVlYXBpLmdjLnYxLkxpc3RPcmdzUmVxdWVzdBoSLmJsdWVhcGkuZ2MudjEuT3JnIiGC0+STAhs6ASoiFi92MS9vcmdhbml6YXRpb25zOnJlYWQwARKXAQoUQ29tbWl0bWVudHNQbGFuQXBwbHkSKS5ibHVlYXBpLmdjLnYxLkNvbW1pdG1lbnRQbGFuQXBwbHlSZXF1ZXN0GiQuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50UGxhbkRldGFpbHMiLoLT5JMCKDoBKiIjL3YxL2NvbW1pdG1lbnRzL3BsYW4ve3BsYW5JZH0vYXBwbHkSeQoPTGlzdENvbW1pdG1lbnRzEiUuYmx1ZWFwaS5nYy52MS5MaXN0Q29tbWl0bWVudHNSZXF1ZXN0GiYuYmx1ZWFwaS5nYy52MS5MaXN0Q29tbWl0bWVudHNSZXNwb25zZSIXgtPkkwIREg8vdjEvY29tbWl0bWVudHMSlwEKE0dldENvbW1pdG1lbnRzQ2hhcnQSKS5ibHVlYXBpLmdjLnYxLkdldENvbW1pdG1lbnRzQ2hhcnRSZXF1ZXN0GicuYmx1ZWFwaS5nYy52MS5Db21taXRtZW50c0NoYXJ0UmVzcG9uc2UiLILT5JMCJhIkL3YxL2NvbW1pdG1lbnRzL3tjb21taXRtZW50SWR9L2NoYXJ0Eq8BChlHZXRDb21taXRtZW50c1V0aWxpemF0aW9uEi8uYmx1ZWFwaS5nYy52MS5HZXRDb21taXRtZW50c1V0aWxpemF0aW9uUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuQ29tbWl0bWVudHNVdGlsaXphdGlvblJlc3BvbnNlIjKC0+STAiwSKi92MS9jb21taXRtZW50cy97Y29tbWl0bWVudElkfS91dGlsaXphdGlvbhJjCgpHZXRNZXRyaWNzEiAuYmx1ZWFwaS5nYy52MS5HZXRNZXRyaWNzUmVxdWVzdBoeLmJsdWVhcGkuZ2MudjEuTWV0cmljc1Jlc3BvbnNlIhOC0+STAg0SCy92MS9tZXRyaWNzEnEKDUxpc3RSZXNvdXJjZXMSIy5ibHVlYXBpLmdjLnYxLkxpc3RSZXNvdXJjZXNSZXF1ZXN0GiQuYmx1ZWFwaS5nYy52MS5MaXN0UmVzb3VyY2VzUmVzcG9uc2UiFYLT5JMCDxINL3YxL3Jlc291cmNlcxKhAQoVR2V0UmVzb3VyY2VEYWlseVVzYWdlEisuYmx1ZWFwaS5nYy52MS5HZXRSZXNvdXJjZURhaWx5VXNhZ2VSZXF1ZXN0GiwuYmx1ZWFwaS5nYy52MS5HZXRSZXNvdXJjZURhaWx5VXNhZ2VSZXNwb25zZSItgtPkkwInEiUvdjEvcmVzb3VyY2VzL3tyZXNvdXJjZUlkfS9kYWlseXVzYWdlEpsBChdMaXN0UmVzZXJ2YWJsZVJlc291cmNlcxItLmJsdWVhcGkuZ2MudjEuTGlzdFJlc2VydmFibGVSZXNvdXJjZXNSZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5MaXN0UmVzZXJ2YWJsZVJlc291cmNlc1Jlc3BvbnNlIiGC0+STAhsSGS92MS9jb21taXRtZW50cy9yZXNvdXJjZXMSqAEKGkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50EjAuYmx1ZWFwaS5nYy52MS5MaXN0UHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QaMS5ibHVlYXBpLmdjLnYxLkxpc3RQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2UiJYLT5JMCHxIdL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMSxAEKIEdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50EjYuYmx1ZWFwaS5nYy52MS5HZXRVcGRhdGVkUHVyY2hhc2VQbGFuc0J5U2VnbWVudFJlcXVlc3QaNy5ibHVlYXBpLmdjLnYxLkdldFVwZGF0ZWRQdXJjaGFzZVBsYW5zQnlTZWdtZW50UmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnM6dXBkYXRlEqgBChdHZXRQdXJjaGFzZVBsYW5zRGV0YWlscxItLmJsdWVhcGkuZ2MudjEuR2V0UHVyY2hhc2VQbGFuc0RldGFpbHNSZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5HZXRQdXJjaGFzZVBsYW5zRGV0YWlsc1Jlc3BvbnNlIi6C0+STAigSJi92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL3twbGFuSWR9EqsBChpTYXZlQ29tbWl0bWVudHNQbGFuQXNEcmFmdBIwLmJsdWVhcGkuZ2MudjEuU2F2ZUNvbW1pdG1lbnRzUGxhbkFzRHJhZnRSZXF1ZXN0GiIuYmx1ZWFwaS5nYy52MS5EZWZhdWx0UHVyY2hhc2VQbGFuIjeC0+STAjE6ASoiLC92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0L3twbGFuSWR9EqIBChZMaXN0RHJhZnRQdXJjaGFzZVBsYW5zEiwuYmx1ZWFwaS5nYy52MS5MaXN0RHJhZnRQdXJjaGFzZVBsYW5zUmVxdWVzdBotLmJsdWVhcGkuZ2MudjEuTGlzdERyYWZ0UHVyY2hhc2VQbGFuc1Jlc3BvbnNlIiuC0+STAiUSIy92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0ErMBChdEZWxldGVEcmFmdFB1cmNoYXNlUGxhbhItLmJsdWVhcGkuZ2MudjEuRGVsZXRlRHJhZnRQdXJjaGFzZVBsYW5SZXF1ZXN0Gi4uYmx1ZWFwaS5nYy52MS5EZWxldGVEcmFmdFB1cmNoYXNlUGxhblJlc3BvbnNlIjmC0+STAjMqMS92MS9jb21taXRtZW50cy9wdXJjaGFzZXBsYW5zL2RyYWZ0L3tkcmFmdFBsYW5JZH0SugEKG0dldEF2YWlsYWJsZUNvbW1pdG1lbnRUeXBlcxIxLmJsdWVhcGkuZ2MudjEuR2V0QXZhaWxhYmxlQ29tbWl0bWVudFR5cGVzUmVxdWVzdBoyLmJsdWVhcGkuZ2MudjEuR2V0QXZhaWxhYmxlQ29tbWl0bWVudFR5cGVzUmVzcG9uc2UiNILT5JMCLhIsL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvYXZhaWxhYmxldHlwZXMSsgEKGkNyZWF0ZUN1c3RvbUNvbW1pdG1lbnRQbGFuEjAuYmx1ZWFwaS5nYy52MS5DcmVhdGVDdXN0b21Db21taXRtZW50UGxhblJlcXVlc3QaMS5ibHVlYXBpLmdjLnYxLkNyZWF0ZUN1c3RvbUNvbW1pdG1lbnRQbGFuUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2NvbW1pdG1lbnRzL3B1cmNoYXNlcGxhbnMvY3VzdG9tEm8KC1JlZ2lzdGVyT3JnEiEuYmx1ZWFwaS5nYy52MS5SZWdpc3Rlck9yZ1JlcXVlc3QaIi5ibHVlYXBpLmdjLnYxLlJlZ2lzdGVyT3JnUmVzcG9uc2UiGYLT5JMCEzoBKiIOL3YxL29uYm9hcmRpbmcSjgEKElN0YXJ0QXdzT25ib2FyZGluZxIoLmJsdWVhcGkuZ2MudjEuU3RhcnRBd3NPbmJvYXJkaW5nUmVxdWVzdBopLmJsdWVhcGkuZ2MudjEuU3RhcnRBd3NPbmJvYXJkaW5nUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL29uYm9hcmRpbmcvYXdzL3N0YXJ0ErsBChxHZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlEjIuYmx1ZWFwaS5nYy52MS5HZXRBd3NDbG91ZEZvcm1hdGlvblRlbXBsYXRlUmVxdWVzdBozLmJsdWVhcGkuZ2MudjEuR2V0QXdzQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZVJlc3BvbnNlIjKC0+STAiwSKi92MS9vbmJvYXJkaW5nL2F3cy9jbG91ZGZvcm1hdGlvbi90ZW1wbGF0ZRKpAQoUR2V0QXdzTGF1bmNoU3RhY2tVcmwSKi5ibHVlYXBpLmdjLnYxLkdldEF3c0xhdW5jaFN0YWNrVXJsUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuR2V0QXdzTGF1bmNoU3RhY2tVcmxSZXNwb25zZSI4gtPkkwIyEjAvdjEvb25ib2FyZGluZy9hd3MvY2xvdWRmb3JtYXRpb24vbGF1bmNoc3RhY2t1cmwSkgEKE1ZlcmlmeUF3c09uYm9hcmRpbmcSKS5ibHVlYXBpLmdjLnYxLlZlcmlmeUF3c09uYm9hcmRpbmdSZXF1ZXN0GiouYmx1ZWFwaS5nYy52MS5WZXJpZnlBd3NPbmJvYXJkaW5nUmVzcG9uc2UiJILT5JMCHjoBKiIZL3YxL29uYm9hcmRpbmcvYXdzL3ZlcmlmeRKTAQoTR2V0T25ib2FyZGluZ1N0YXR1cxIpLmJsdWVhcGkuZ2MudjEuR2V0T25ib2FyZGluZ1N0YXR1c1JlcXVlc3QaKi5ibHVlYXBpLmdjLnYxLkdldE9uYm9hcmRpbmdTdGF0dXNSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvb25ib2FyZGluZy9zdGF0dXM6cmVhZBKIAQoRTGlzdFBheWVyQWNjb3VudHMSJy5ibHVlYXBpLmdjLnYxLkxpc3RQYXllckFjY291bnRzUmVxdWVzdBooLmJsdWVhcGkuZ2MudjEuTGlzdFBheWVyQWNjb3VudHNSZXNwb25zZSIggtPkkwIaEhgvdjEvbWFuYWdlbWVudHMvYWNjb3VudHMSpgEKFlNldFBheWVyQWNjb3VudEVuYWJsZWQSLC5ibHVlYXBpLmdjLnYxLlNldFBheWVyQWNjb3VudEVuYWJsZWRSZXF1ZXN0Gi0uYmx1ZWFwaS5nYy52MS5TZXRQYXllckFjY291bnRFbmFibGVkUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL21hbmFnZW1lbnRzL2FjY291bnRzL3tjb21wYW55SWR9EpsBChVHZXRQYXllckFjY291bnRTdGF0dXMSKy5ibHVlYXBpLmdjLnYxLkdldFBheWVyQWNjb3VudFN0YXR1c1JlcXVlc3QaLC5ibHVlYXBpLmdjLnYxLkdldFBheWVyQWNjb3VudFN0YXR1c1Jlc3BvbnNlIieC0+STAiESHy92MS9tYW5hZ2VtZW50cy9hY2NvdW50cy9zdGF0dXMSjQEKEUxpc3RCaWxsaW5nR3JvdXBzEicuYmx1ZWFwaS5nYy52MS5MaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QaKC5ibHVlYXBpLmdjLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVzcG9uc2UiJYLT5JMCHxIdL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMSqAEKFVNldEJpbGxpbmdHcm91cFN0YXR1cxIrLmJsdWVhcGkuZ2MudjEuU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuU2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2UiNILT5JMCLjoBKiIpL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMve2NvbXBhbnlJZH0SoAEKFUdldEJpbGxpbmdHcm91cFN0YXR1cxIrLmJsdWVhcGkuZ2MudjEuR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuR2V0QmlsbGluZ0dyb3VwU3RhdHVzUmVzcG9uc2UiLILT5JMCJhIkL3YxL21hbmFnZW1lbnRzL2JpbGxpbmdncm91cHMvc3RhdHVzEqABChRWYWxpZGF0ZUJpbGxpbmdHcm91cBIqLmJsdWVhcGkuZ2MudjEuVmFsaWRhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0GisuYmx1ZWFwaS5nYy52MS5WYWxpZGF0ZUJpbGxpbmdHcm91cFJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9vbmJvYXJkaW5nL2JpbGxpbmdncm91cDp2YWxpZGF0ZRKjAQoSR2V0QXdzUHJpdmF0ZU9mZmVyEiguYmx1ZWFwaS5nYy52MS5HZXRBd3NQcml2YXRlT2ZmZXJSZXF1ZXN0GikuYmx1ZWFwaS5nYy52MS5HZXRBd3NQcml2YXRlT2ZmZXJSZXNwb25zZSI4gtPkkwIyEjAvdjEvb25ib2FyZGluZy9hd3MvcHJpdmF0ZW9mZmVyL3twYXllckFjY291bnRJZH0SzwEKIkdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmwSOC5ibHVlYXBpLmdjLnYxLkdldEd1YXJhbnRlZWRDb21taXRtZW50VGVtcGxhdGVVcmxSZXF1ZXN0GjkuYmx1ZWFwaS5nYy52MS5HZXRHdWFyYW50ZWVkQ29tbWl0bWVudFRlbXBsYXRlVXJsUmVzcG9uc2UiNILT5JMCLhIsL3YxL29uYm9hcmRpbmcvYXdzL2NmdGVtcGxhdGUvZ3VhcmFudGVlZDp1cmwSyAEKIENyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzEjYuYmx1ZWFwaS5nYy52MS5DcmVhdGVHdWFyYW50ZWVkQ29tbWl0bWVudEFjY2Vzc1JlcXVlc3QaNy5ibHVlYXBpLmdjLnYxLkNyZWF0ZUd1YXJhbnRlZWRDb21taXRtZW50QWNjZXNzUmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL29uYm9hcmRpbmcvYXdzL2NmdGVtcGxhdGUvZ3VhcmFudGVlZBKWAQoUU3RhcnRBenVyZU9uYm9hcmRpbmcSKi5ibHVlYXBpLmdjLnYxLlN0YXJ0QXp1cmVPbmJvYXJkaW5nUmVxdWVzdBorLmJsdWVhcGkuZ2MudjEuU3RhcnRBenVyZU9uYm9hcmRpbmdSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvb25ib2FyZGluZy9henVyZS9zdGFydBKgAQoVVXBkYXRlQXp1cmVPbmJvYXJkaW5nEisuYmx1ZWFwaS5nYy52MS5VcGRhdGVBenVyZU9uYm9hcmRpbmdSZXF1ZXN0GiMuYmx1ZWFwaS5nYy52MS5BenVyZU9uYm9hcmRpbmdTdGF0ZSI1gtPkkwIvOgEqIiovdjEvb25ib2FyZGluZy9henVyZS97b25ib2FyZGluZ0lkfTp1cGRhdGUSswEKGUdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmwSLy5ibHVlYXBpLmdjLnYxLkdldEF6dXJlT25ib2FyZGluZ0F1dGhVcmxSZXF1ZXN0GjAuYmx1ZWFwaS5nYy52MS5HZXRBenVyZU9uYm9hcmRpbmdBdXRoVXJsUmVzcG9uc2UiM4LT5JMCLRIrL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vYXV0aHVybBKmAQoXVmFsaWRhdGVBenVyZUFwcEluc3RhbGwSLS5ibHVlYXBpLmdjLnYxLlZhbGlkYXRlQXp1cmVBcHBJbnN0YWxsUmVxdWVzdBojLmJsdWVhcGkuZ2MudjEuQXp1cmVPbmJvYXJkaW5nU3RhdGUiN4LT5JMCMToBKiIsL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vdmFsaWRhdGUSugEKG0xpc3RBenVyZU9uYm9hcmRpbmdBY2NvdW50cxIxLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlT25ib2FyZGluZ0FjY291bnRzUmVzcG9uc2UiNILT5JMCLhIsL3YxL29uYm9hcmRpbmcvYXp1cmUve29uYm9hcmRpbmdJZH0vYWNjb3VudHMSogEKFkNyZWF0ZUF6dXJlSW50ZWdyYXRpb24SLC5ibHVlYXBpLmdjLnYxLkNyZWF0ZUF6dXJlSW50ZWdyYXRpb25SZXF1ZXN0Gi0uYmx1ZWFwaS5nYy52MS5DcmVhdGVBenVyZUludGVncmF0aW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL29uYm9hcmRpbmcvYXp1cmUvaW50ZWdyYXRpb24SnQEKFUxpc3RBenVyZUludGVncmF0aW9ucxIrLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVxdWVzdBosLmJsdWVhcGkuZ2MudjEuTGlzdEF6dXJlSW50ZWdyYXRpb25zUmVzcG9uc2UiKYLT5JMCIxIhL3YxL29uYm9hcmRpbmcvYXp1cmUvaW50ZWdyYXRpb25zGqIBkkGeARJQKEFscGhhKSBHdWFyYW50ZWVkQ29tbWl0bWVudHMgQVBJLiBCYXNlIFVSTDogaHR0cHM6Ly9hcGkuYWxwaGF1cy5jbG91ZC9tL2JsdWUvZ2MaSgoSU2VydmljZSBkZWZpbml0aW9uEjRodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS90cmVlL21haW4vZ2MvQlUKFGNsb3VkLmFscGhhdXMuYXBpLmdjQhpHdWFyYW50ZWVkQ29tbWl0bWVudHNQcm90b1ohZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2djYgZwcm90bzM", [file_google_api_annotations, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
18
18
 
19
19
  /**
20
20
  * @generated from message blueapi.gc.v1.ListOrgsRequest
@@ -220,6 +220,41 @@ export type GetResourceDailyUsageRequest = Message<"blueapi.gc.v1.GetResourceDai
220
220
  export const GetResourceDailyUsageRequestSchema: GenMessage<GetResourceDailyUsageRequest> = /*@__PURE__*/
221
221
  messageDesc(file_gc_v1_gc, 7);
222
222
 
223
+ /**
224
+ * @generated from message blueapi.gc.v1.ListReservableResourcesRequest
225
+ */
226
+ export type ListReservableResourcesRequest = Message<"blueapi.gc.v1.ListReservableResourcesRequest"> & {
227
+ /**
228
+ * Required. The company ID to scope the query to.
229
+ *
230
+ * // Optional. Field to sort by. Example: "ondemand_cost".
231
+ * string orderBy = 2;
232
+ * // Optional. If true, sort in descending order.
233
+ * bool desc = 3;
234
+ * // Optional. URL-encoded JSON filter expression.
235
+ * // Example (decoded): {"and":[{"and":[{"field":"covered_usage","op":"<","value":1}]},{"and":[{"field":"is_reservable","op":"=","value":"true"}]}]}
236
+ * string filter = 4;
237
+ * // Required. Start of the usage lookback window (YYYY-MM-DD).
238
+ * string startDate = 5;
239
+ * // Required. End of the usage lookback window (YYYY-MM-DD).
240
+ * string endDate = 6;
241
+ * // Optional. Page number (1-based).
242
+ * int32 page = 7;
243
+ * // Optional. Number of results per page.
244
+ * int32 pageSize = 8;
245
+ *
246
+ * @generated from field: string companyId = 1;
247
+ */
248
+ companyId: string;
249
+ };
250
+
251
+ /**
252
+ * Describes the message blueapi.gc.v1.ListReservableResourcesRequest.
253
+ * Use `create(ListReservableResourcesRequestSchema)` to create a new message.
254
+ */
255
+ export const ListReservableResourcesRequestSchema: GenMessage<ListReservableResourcesRequest> = /*@__PURE__*/
256
+ messageDesc(file_gc_v1_gc, 8);
257
+
223
258
  /**
224
259
  * @generated from message blueapi.gc.v1.ListPurchasePlansBySegmentRequest
225
260
  */
@@ -231,7 +266,7 @@ export type ListPurchasePlansBySegmentRequest = Message<"blueapi.gc.v1.ListPurch
231
266
  * Use `create(ListPurchasePlansBySegmentRequestSchema)` to create a new message.
232
267
  */
233
268
  export const ListPurchasePlansBySegmentRequestSchema: GenMessage<ListPurchasePlansBySegmentRequest> = /*@__PURE__*/
234
- messageDesc(file_gc_v1_gc, 8);
269
+ messageDesc(file_gc_v1_gc, 9);
235
270
 
236
271
  /**
237
272
  * @generated from message blueapi.gc.v1.GetPurchasePlansDetailsRequest
@@ -248,7 +283,7 @@ export type GetPurchasePlansDetailsRequest = Message<"blueapi.gc.v1.GetPurchaseP
248
283
  * Use `create(GetPurchasePlansDetailsRequestSchema)` to create a new message.
249
284
  */
250
285
  export const GetPurchasePlansDetailsRequestSchema: GenMessage<GetPurchasePlansDetailsRequest> = /*@__PURE__*/
251
- messageDesc(file_gc_v1_gc, 9);
286
+ messageDesc(file_gc_v1_gc, 10);
252
287
 
253
288
  /**
254
289
  * @generated from message blueapi.gc.v1.GetUpdatedPurchasePlansBySegmentRequest
@@ -261,7 +296,7 @@ export type GetUpdatedPurchasePlansBySegmentRequest = Message<"blueapi.gc.v1.Get
261
296
  * Use `create(GetUpdatedPurchasePlansBySegmentRequestSchema)` to create a new message.
262
297
  */
263
298
  export const GetUpdatedPurchasePlansBySegmentRequestSchema: GenMessage<GetUpdatedPurchasePlansBySegmentRequest> = /*@__PURE__*/
264
- messageDesc(file_gc_v1_gc, 10);
299
+ messageDesc(file_gc_v1_gc, 11);
265
300
 
266
301
  /**
267
302
  * @generated from message blueapi.gc.v1.OrgUser
@@ -283,7 +318,7 @@ export type OrgUser = Message<"blueapi.gc.v1.OrgUser"> & {
283
318
  * Use `create(OrgUserSchema)` to create a new message.
284
319
  */
285
320
  export const OrgUserSchema: GenMessage<OrgUser> = /*@__PURE__*/
286
- messageDesc(file_gc_v1_gc, 11);
321
+ messageDesc(file_gc_v1_gc, 12);
287
322
 
288
323
  /**
289
324
  * @generated from message blueapi.gc.v1.Membership
@@ -305,7 +340,7 @@ export type Membership = Message<"blueapi.gc.v1.Membership"> & {
305
340
  * Use `create(MembershipSchema)` to create a new message.
306
341
  */
307
342
  export const MembershipSchema: GenMessage<Membership> = /*@__PURE__*/
308
- messageDesc(file_gc_v1_gc, 12);
343
+ messageDesc(file_gc_v1_gc, 13);
309
344
 
310
345
  /**
311
346
  * @generated from message blueapi.gc.v1.Address
@@ -359,7 +394,7 @@ export type Address = Message<"blueapi.gc.v1.Address"> & {
359
394
  * Use `create(AddressSchema)` to create a new message.
360
395
  */
361
396
  export const AddressSchema: GenMessage<Address> = /*@__PURE__*/
362
- messageDesc(file_gc_v1_gc, 13);
397
+ messageDesc(file_gc_v1_gc, 14);
363
398
 
364
399
  /**
365
400
  * @generated from message blueapi.gc.v1.AwsExistingCur
@@ -401,7 +436,7 @@ export type AwsExistingCur = Message<"blueapi.gc.v1.AwsExistingCur"> & {
401
436
  * Use `create(AwsExistingCurSchema)` to create a new message.
402
437
  */
403
438
  export const AwsExistingCurSchema: GenMessage<AwsExistingCur> = /*@__PURE__*/
404
- messageDesc(file_gc_v1_gc, 14);
439
+ messageDesc(file_gc_v1_gc, 15);
405
440
 
406
441
  /**
407
442
  * @generated from message blueapi.gc.v1.RegisterOrgRequest
@@ -453,7 +488,7 @@ export type RegisterOrgRequest = Message<"blueapi.gc.v1.RegisterOrgRequest"> & {
453
488
  * Use `create(RegisterOrgRequestSchema)` to create a new message.
454
489
  */
455
490
  export const RegisterOrgRequestSchema: GenMessage<RegisterOrgRequest> = /*@__PURE__*/
456
- messageDesc(file_gc_v1_gc, 15);
491
+ messageDesc(file_gc_v1_gc, 16);
457
492
 
458
493
  /**
459
494
  * @generated from message blueapi.gc.v1.StartAwsOnboardingRequest
@@ -492,7 +527,7 @@ export type StartAwsOnboardingRequest = Message<"blueapi.gc.v1.StartAwsOnboardin
492
527
  * Use `create(StartAwsOnboardingRequestSchema)` to create a new message.
493
528
  */
494
529
  export const StartAwsOnboardingRequestSchema: GenMessage<StartAwsOnboardingRequest> = /*@__PURE__*/
495
- messageDesc(file_gc_v1_gc, 16);
530
+ messageDesc(file_gc_v1_gc, 17);
496
531
 
497
532
  /**
498
533
  * @generated from message blueapi.gc.v1.GetAwsCloudFormationTemplateRequest
@@ -531,7 +566,7 @@ export type GetAwsCloudFormationTemplateRequest = Message<"blueapi.gc.v1.GetAwsC
531
566
  * Use `create(GetAwsCloudFormationTemplateRequestSchema)` to create a new message.
532
567
  */
533
568
  export const GetAwsCloudFormationTemplateRequestSchema: GenMessage<GetAwsCloudFormationTemplateRequest> = /*@__PURE__*/
534
- messageDesc(file_gc_v1_gc, 17);
569
+ messageDesc(file_gc_v1_gc, 18);
535
570
 
536
571
  /**
537
572
  * @generated from message blueapi.gc.v1.GetAwsLaunchStackUrlRequest
@@ -570,7 +605,7 @@ export type GetAwsLaunchStackUrlRequest = Message<"blueapi.gc.v1.GetAwsLaunchSta
570
605
  * Use `create(GetAwsLaunchStackUrlRequestSchema)` to create a new message.
571
606
  */
572
607
  export const GetAwsLaunchStackUrlRequestSchema: GenMessage<GetAwsLaunchStackUrlRequest> = /*@__PURE__*/
573
- messageDesc(file_gc_v1_gc, 18);
608
+ messageDesc(file_gc_v1_gc, 19);
574
609
 
575
610
  /**
576
611
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingRequest
@@ -620,7 +655,7 @@ export type VerifyAwsOnboardingRequest = Message<"blueapi.gc.v1.VerifyAwsOnboard
620
655
  * Use `create(VerifyAwsOnboardingRequestSchema)` to create a new message.
621
656
  */
622
657
  export const VerifyAwsOnboardingRequestSchema: GenMessage<VerifyAwsOnboardingRequest> = /*@__PURE__*/
623
- messageDesc(file_gc_v1_gc, 19);
658
+ messageDesc(file_gc_v1_gc, 20);
624
659
 
625
660
  /**
626
661
  * @generated from message blueapi.gc.v1.GetOnboardingStatusRequest
@@ -653,7 +688,7 @@ export type GetOnboardingStatusRequest = Message<"blueapi.gc.v1.GetOnboardingSta
653
688
  * Use `create(GetOnboardingStatusRequestSchema)` to create a new message.
654
689
  */
655
690
  export const GetOnboardingStatusRequestSchema: GenMessage<GetOnboardingStatusRequest> = /*@__PURE__*/
656
- messageDesc(file_gc_v1_gc, 20);
691
+ messageDesc(file_gc_v1_gc, 21);
657
692
 
658
693
  /**
659
694
  * @generated from message blueapi.gc.v1.ListPayerAccountsRequest
@@ -666,7 +701,7 @@ export type ListPayerAccountsRequest = Message<"blueapi.gc.v1.ListPayerAccountsR
666
701
  * Use `create(ListPayerAccountsRequestSchema)` to create a new message.
667
702
  */
668
703
  export const ListPayerAccountsRequestSchema: GenMessage<ListPayerAccountsRequest> = /*@__PURE__*/
669
- messageDesc(file_gc_v1_gc, 21);
704
+ messageDesc(file_gc_v1_gc, 22);
670
705
 
671
706
  /**
672
707
  * @generated from message blueapi.gc.v1.SetPayerAccountEnabledRequest
@@ -688,7 +723,7 @@ export type SetPayerAccountEnabledRequest = Message<"blueapi.gc.v1.SetPayerAccou
688
723
  * Use `create(SetPayerAccountEnabledRequestSchema)` to create a new message.
689
724
  */
690
725
  export const SetPayerAccountEnabledRequestSchema: GenMessage<SetPayerAccountEnabledRequest> = /*@__PURE__*/
691
- messageDesc(file_gc_v1_gc, 22);
726
+ messageDesc(file_gc_v1_gc, 23);
692
727
 
693
728
  /**
694
729
  * @generated from message blueapi.gc.v1.GetPayerAccountStatusRequest
@@ -701,7 +736,7 @@ export type GetPayerAccountStatusRequest = Message<"blueapi.gc.v1.GetPayerAccoun
701
736
  * Use `create(GetPayerAccountStatusRequestSchema)` to create a new message.
702
737
  */
703
738
  export const GetPayerAccountStatusRequestSchema: GenMessage<GetPayerAccountStatusRequest> = /*@__PURE__*/
704
- messageDesc(file_gc_v1_gc, 23);
739
+ messageDesc(file_gc_v1_gc, 24);
705
740
 
706
741
  /**
707
742
  * @generated from message blueapi.gc.v1.ListBillingGroupsRequest
@@ -714,7 +749,7 @@ export type ListBillingGroupsRequest = Message<"blueapi.gc.v1.ListBillingGroupsR
714
749
  * Use `create(ListBillingGroupsRequestSchema)` to create a new message.
715
750
  */
716
751
  export const ListBillingGroupsRequestSchema: GenMessage<ListBillingGroupsRequest> = /*@__PURE__*/
717
- messageDesc(file_gc_v1_gc, 24);
752
+ messageDesc(file_gc_v1_gc, 25);
718
753
 
719
754
  /**
720
755
  * @generated from message blueapi.gc.v1.SetBillingGroupStatusRequest
@@ -745,7 +780,7 @@ export type SetBillingGroupStatusRequest = Message<"blueapi.gc.v1.SetBillingGrou
745
780
  * Use `create(SetBillingGroupStatusRequestSchema)` to create a new message.
746
781
  */
747
782
  export const SetBillingGroupStatusRequestSchema: GenMessage<SetBillingGroupStatusRequest> = /*@__PURE__*/
748
- messageDesc(file_gc_v1_gc, 25);
783
+ messageDesc(file_gc_v1_gc, 26);
749
784
 
750
785
  /**
751
786
  * @generated from message blueapi.gc.v1.GetBillingGroupStatusRequest
@@ -758,7 +793,7 @@ export type GetBillingGroupStatusRequest = Message<"blueapi.gc.v1.GetBillingGrou
758
793
  * Use `create(GetBillingGroupStatusRequestSchema)` to create a new message.
759
794
  */
760
795
  export const GetBillingGroupStatusRequestSchema: GenMessage<GetBillingGroupStatusRequest> = /*@__PURE__*/
761
- messageDesc(file_gc_v1_gc, 26);
796
+ messageDesc(file_gc_v1_gc, 27);
762
797
 
763
798
  /**
764
799
  * @generated from message blueapi.gc.v1.ValidateBillingGroupRequest
@@ -786,7 +821,35 @@ export type ValidateBillingGroupRequest = Message<"blueapi.gc.v1.ValidateBilling
786
821
  * Use `create(ValidateBillingGroupRequestSchema)` to create a new message.
787
822
  */
788
823
  export const ValidateBillingGroupRequestSchema: GenMessage<ValidateBillingGroupRequest> = /*@__PURE__*/
789
- messageDesc(file_gc_v1_gc, 27);
824
+ messageDesc(file_gc_v1_gc, 28);
825
+
826
+ /**
827
+ * @generated from message blueapi.gc.v1.GetAwsPrivateOfferRequest
828
+ */
829
+ export type GetAwsPrivateOfferRequest = Message<"blueapi.gc.v1.GetAwsPrivateOfferRequest"> & {
830
+ /**
831
+ * Required. The AWS payer account ID that the private offer targets.
832
+ *
833
+ * @generated from field: string payerAccountId = 1;
834
+ */
835
+ payerAccountId: string;
836
+
837
+ /**
838
+ * Optional. If true, recreate the private offer when the existing row is
839
+ * in a retryable terminal state: FAILED, EXPIRED, or WITHDRAWN.
840
+ * ACCEPTED, PENDING, and CREATING are not recreated.
841
+ *
842
+ * @generated from field: bool recreate = 2;
843
+ */
844
+ recreate: boolean;
845
+ };
846
+
847
+ /**
848
+ * Describes the message blueapi.gc.v1.GetAwsPrivateOfferRequest.
849
+ * Use `create(GetAwsPrivateOfferRequestSchema)` to create a new message.
850
+ */
851
+ export const GetAwsPrivateOfferRequestSchema: GenMessage<GetAwsPrivateOfferRequest> = /*@__PURE__*/
852
+ messageDesc(file_gc_v1_gc, 29);
790
853
 
791
854
  /**
792
855
  * @generated from message blueapi.gc.v1.SaveCommitmentsPlanAsDraftRequest
@@ -976,7 +1039,7 @@ export type SaveCommitmentsPlanAsDraftRequest = Message<"blueapi.gc.v1.SaveCommi
976
1039
  * Use `create(SaveCommitmentsPlanAsDraftRequestSchema)` to create a new message.
977
1040
  */
978
1041
  export const SaveCommitmentsPlanAsDraftRequestSchema: GenMessage<SaveCommitmentsPlanAsDraftRequest> = /*@__PURE__*/
979
- messageDesc(file_gc_v1_gc, 28);
1042
+ messageDesc(file_gc_v1_gc, 30);
980
1043
 
981
1044
  /**
982
1045
  * @generated from message blueapi.gc.v1.ListDraftPurchasePlansRequest
@@ -988,6 +1051,11 @@ export type ListDraftPurchasePlansRequest = Message<"blueapi.gc.v1.ListDraftPurc
988
1051
  * @generated from field: bool isDraft = 1;
989
1052
  */
990
1053
  isDraft: boolean;
1054
+
1055
+ /**
1056
+ * @generated from field: string companyId = 2;
1057
+ */
1058
+ companyId: string;
991
1059
  };
992
1060
 
993
1061
  /**
@@ -995,7 +1063,7 @@ export type ListDraftPurchasePlansRequest = Message<"blueapi.gc.v1.ListDraftPurc
995
1063
  * Use `create(ListDraftPurchasePlansRequestSchema)` to create a new message.
996
1064
  */
997
1065
  export const ListDraftPurchasePlansRequestSchema: GenMessage<ListDraftPurchasePlansRequest> = /*@__PURE__*/
998
- messageDesc(file_gc_v1_gc, 29);
1066
+ messageDesc(file_gc_v1_gc, 31);
999
1067
 
1000
1068
  /**
1001
1069
  * @generated from message blueapi.gc.v1.DeleteDraftPurchasePlanRequest
@@ -1007,6 +1075,11 @@ export type DeleteDraftPurchasePlanRequest = Message<"blueapi.gc.v1.DeleteDraftP
1007
1075
  * @generated from field: string draftPlanId = 1;
1008
1076
  */
1009
1077
  draftPlanId: string;
1078
+
1079
+ /**
1080
+ * @generated from field: string companyId = 2;
1081
+ */
1082
+ companyId: string;
1010
1083
  };
1011
1084
 
1012
1085
  /**
@@ -1014,7 +1087,143 @@ export type DeleteDraftPurchasePlanRequest = Message<"blueapi.gc.v1.DeleteDraftP
1014
1087
  * Use `create(DeleteDraftPurchasePlanRequestSchema)` to create a new message.
1015
1088
  */
1016
1089
  export const DeleteDraftPurchasePlanRequestSchema: GenMessage<DeleteDraftPurchasePlanRequest> = /*@__PURE__*/
1017
- messageDesc(file_gc_v1_gc, 30);
1090
+ messageDesc(file_gc_v1_gc, 32);
1091
+
1092
+ /**
1093
+ * @generated from message blueapi.gc.v1.GetAvailableCommitmentTypesRequest
1094
+ */
1095
+ export type GetAvailableCommitmentTypesRequest = Message<"blueapi.gc.v1.GetAvailableCommitmentTypesRequest"> & {
1096
+ /**
1097
+ * Required. The cloud provider to query available types for.
1098
+ * Acceptable values: "aws", "azure", "gcp".
1099
+ *
1100
+ * @generated from field: string provider = 1;
1101
+ */
1102
+ provider: string;
1103
+ };
1104
+
1105
+ /**
1106
+ * Describes the message blueapi.gc.v1.GetAvailableCommitmentTypesRequest.
1107
+ * Use `create(GetAvailableCommitmentTypesRequestSchema)` to create a new message.
1108
+ */
1109
+ export const GetAvailableCommitmentTypesRequestSchema: GenMessage<GetAvailableCommitmentTypesRequest> = /*@__PURE__*/
1110
+ messageDesc(file_gc_v1_gc, 33);
1111
+
1112
+ /**
1113
+ * CreateCustomCommitmentPlanRequest creates a new top-down custom commitment plan.
1114
+ *
1115
+ * @generated from message blueapi.gc.v1.CreateCustomCommitmentPlanRequest
1116
+ */
1117
+ export type CreateCustomCommitmentPlanRequest = Message<"blueapi.gc.v1.CreateCustomCommitmentPlanRequest"> & {
1118
+ /**
1119
+ * Required. The cloud provider. Acceptable values: "aws", "azure", "gcp".
1120
+ *
1121
+ * @generated from field: string provider = 1;
1122
+ */
1123
+ provider: string;
1124
+
1125
+ /**
1126
+ * Required. ISO 8601 lookback window start timestamp (e.g. "2026-04-09T02:43:39.717Z").
1127
+ *
1128
+ * @generated from field: string startDate = 2;
1129
+ */
1130
+ startDate: string;
1131
+
1132
+ /**
1133
+ * Required. ISO 8601 lookback window end timestamp (e.g. "2026-04-16T02:43:39.717Z").
1134
+ *
1135
+ * @generated from field: string endDate = 3;
1136
+ */
1137
+ endDate: string;
1138
+
1139
+ /**
1140
+ * Required. The company ID to scope the plan to.
1141
+ *
1142
+ * @generated from field: string companyId = 4;
1143
+ */
1144
+ companyId: string;
1145
+
1146
+ /**
1147
+ * Plan status. Use "draft" to save without submitting.
1148
+ * Acceptable values: "draft", "submitted".
1149
+ *
1150
+ * @generated from field: string status = 5;
1151
+ */
1152
+ status: string;
1153
+
1154
+ /**
1155
+ * Optional. Human-readable description for the plan.
1156
+ *
1157
+ * @generated from field: string description = 6;
1158
+ */
1159
+ description: string;
1160
+
1161
+ /**
1162
+ * Required. Human-readable name for the plan.
1163
+ *
1164
+ * @generated from field: string name = 7;
1165
+ */
1166
+ name: string;
1167
+
1168
+ /**
1169
+ * List of contract specifications to include in the plan.
1170
+ * Each entry selects a commitment category, term, payment option, and optional properties.
1171
+ *
1172
+ * Acceptable commitment_type values:
1173
+ * "aws/AmazonEC2", "aws/AmazonRDS", "aws/AmazonElastiCache",
1174
+ * "aws/savingsplan/Compute", "aws/savingsplan/EC2Instance", "aws/savingsplan/Database"
1175
+ *
1176
+ * Acceptable term values:
1177
+ * "thirty_day_gris" - 30-day Archera Insured (leased: true)
1178
+ * "one_year_gris" - 1-year Archera Insured (leased: true)
1179
+ * "one_year" - 1-year Native Uninsured (leased: false)
1180
+ * "three_year" - 3-year Native Uninsured (leased: false)
1181
+ *
1182
+ * Acceptable payment_option values:
1183
+ * "no_upfront", "partial_upfront", "all_upfront"
1184
+ * Note: "partial_upfront" and "all_upfront" are not available for 30-day terms.
1185
+ *
1186
+ * Acceptable properties keys:
1187
+ * "leased" (bool) - true for Archera Insured terms, false for Native terms.
1188
+ * "offering_class" (string) - only for "aws/AmazonEC2"; "convertible" or "standard".
1189
+ *
1190
+ * @generated from field: repeated blueapi.gc.v1.ContractSpec includedContractSpecs = 8;
1191
+ */
1192
+ includedContractSpecs: ContractSpec[];
1193
+
1194
+ /**
1195
+ * List of contract term keys included in the plan.
1196
+ * Acceptable values: "thirty_day_gris", "one_year_gris", "one_year", "three_year".
1197
+ *
1198
+ * @generated from field: repeated string includedContractTerms = 9;
1199
+ */
1200
+ includedContractTerms: string[];
1201
+
1202
+ /**
1203
+ * Optional. Specific resource IDs to pin the plan to selected infrastructure resources.
1204
+ * When populated, the server returns plan_type "infrastructure"; omit for a top-down
1205
+ * "purchase" plan. IDs are composite strings in the format
1206
+ * "{resource_id}|{catalog_sku_org_id}|{catalog_sku_id}" as returned by ListReservableResources.
1207
+ *
1208
+ * @generated from field: repeated string resourceIds = 10;
1209
+ */
1210
+ resourceIds: string[];
1211
+
1212
+ /**
1213
+ * For top down creation, one or more company IDs to create a plan per segment.
1214
+ * Mutually exclusive with companyId — do not set both.
1215
+ *
1216
+ * @generated from field: repeated string companyIds = 11;
1217
+ */
1218
+ companyIds: string[];
1219
+ };
1220
+
1221
+ /**
1222
+ * Describes the message blueapi.gc.v1.CreateCustomCommitmentPlanRequest.
1223
+ * Use `create(CreateCustomCommitmentPlanRequestSchema)` to create a new message.
1224
+ */
1225
+ export const CreateCustomCommitmentPlanRequestSchema: GenMessage<CreateCustomCommitmentPlanRequest> = /*@__PURE__*/
1226
+ messageDesc(file_gc_v1_gc, 34);
1018
1227
 
1019
1228
  /**
1020
1229
  * @generated from message blueapi.gc.v1.GetGuaranteedCommitmentTemplateUrlRequest
@@ -1033,7 +1242,7 @@ export type GetGuaranteedCommitmentTemplateUrlRequest = Message<"blueapi.gc.v1.G
1033
1242
  * Use `create(GetGuaranteedCommitmentTemplateUrlRequestSchema)` to create a new message.
1034
1243
  */
1035
1244
  export const GetGuaranteedCommitmentTemplateUrlRequestSchema: GenMessage<GetGuaranteedCommitmentTemplateUrlRequest> = /*@__PURE__*/
1036
- messageDesc(file_gc_v1_gc, 31);
1245
+ messageDesc(file_gc_v1_gc, 35);
1037
1246
 
1038
1247
  /**
1039
1248
  * @generated from message blueapi.gc.v1.CreateGuaranteedCommitmentAccessRequest
@@ -1059,7 +1268,7 @@ export type CreateGuaranteedCommitmentAccessRequest = Message<"blueapi.gc.v1.Cre
1059
1268
  * Use `create(CreateGuaranteedCommitmentAccessRequestSchema)` to create a new message.
1060
1269
  */
1061
1270
  export const CreateGuaranteedCommitmentAccessRequestSchema: GenMessage<CreateGuaranteedCommitmentAccessRequest> = /*@__PURE__*/
1062
- messageDesc(file_gc_v1_gc, 32);
1271
+ messageDesc(file_gc_v1_gc, 36);
1063
1272
 
1064
1273
  /**
1065
1274
  * StartAzureOnboardingRequest initiates Azure onboarding (Step 1).
@@ -1110,7 +1319,7 @@ export type StartAzureOnboardingRequest = Message<"blueapi.gc.v1.StartAzureOnboa
1110
1319
  * Use `create(StartAzureOnboardingRequestSchema)` to create a new message.
1111
1320
  */
1112
1321
  export const StartAzureOnboardingRequestSchema: GenMessage<StartAzureOnboardingRequest> = /*@__PURE__*/
1113
- messageDesc(file_gc_v1_gc, 33);
1322
+ messageDesc(file_gc_v1_gc, 37);
1114
1323
 
1115
1324
  /**
1116
1325
  * @generated from message blueapi.gc.v1.UpdateAzureOnboardingRequest
@@ -1258,7 +1467,7 @@ export type UpdateAzureOnboardingRequest = Message<"blueapi.gc.v1.UpdateAzureOnb
1258
1467
  * Use `create(UpdateAzureOnboardingRequestSchema)` to create a new message.
1259
1468
  */
1260
1469
  export const UpdateAzureOnboardingRequestSchema: GenMessage<UpdateAzureOnboardingRequest> = /*@__PURE__*/
1261
- messageDesc(file_gc_v1_gc, 34);
1470
+ messageDesc(file_gc_v1_gc, 38);
1262
1471
 
1263
1472
  /**
1264
1473
  * GetAzureOnboardingAuthUrlRequest fetches the OAuth authorization URL (Step 4).
@@ -1300,7 +1509,7 @@ export type GetAzureOnboardingAuthUrlRequest = Message<"blueapi.gc.v1.GetAzureOn
1300
1509
  * Use `create(GetAzureOnboardingAuthUrlRequestSchema)` to create a new message.
1301
1510
  */
1302
1511
  export const GetAzureOnboardingAuthUrlRequestSchema: GenMessage<GetAzureOnboardingAuthUrlRequest> = /*@__PURE__*/
1303
- messageDesc(file_gc_v1_gc, 35);
1512
+ messageDesc(file_gc_v1_gc, 39);
1304
1513
 
1305
1514
  /**
1306
1515
  * @generated from message blueapi.gc.v1.ValidateAzureAppInstallRequest
@@ -1438,7 +1647,7 @@ export type ValidateAzureAppInstallRequest = Message<"blueapi.gc.v1.ValidateAzur
1438
1647
  * Use `create(ValidateAzureAppInstallRequestSchema)` to create a new message.
1439
1648
  */
1440
1649
  export const ValidateAzureAppInstallRequestSchema: GenMessage<ValidateAzureAppInstallRequest> = /*@__PURE__*/
1441
- messageDesc(file_gc_v1_gc, 36);
1650
+ messageDesc(file_gc_v1_gc, 40);
1442
1651
 
1443
1652
  /**
1444
1653
  * ListAzureOnboardingAccountsRequest lists available Azure accounts (Step 6).
@@ -1466,7 +1675,7 @@ export type ListAzureOnboardingAccountsRequest = Message<"blueapi.gc.v1.ListAzur
1466
1675
  * Use `create(ListAzureOnboardingAccountsRequestSchema)` to create a new message.
1467
1676
  */
1468
1677
  export const ListAzureOnboardingAccountsRequestSchema: GenMessage<ListAzureOnboardingAccountsRequest> = /*@__PURE__*/
1469
- messageDesc(file_gc_v1_gc, 37);
1678
+ messageDesc(file_gc_v1_gc, 41);
1470
1679
 
1471
1680
  /**
1472
1681
  * CreateAzureIntegrationRequest creates the final Azure integration (Step 8).
@@ -1584,7 +1793,7 @@ export type CreateAzureIntegrationRequest = Message<"blueapi.gc.v1.CreateAzureIn
1584
1793
  * Use `create(CreateAzureIntegrationRequestSchema)` to create a new message.
1585
1794
  */
1586
1795
  export const CreateAzureIntegrationRequestSchema: GenMessage<CreateAzureIntegrationRequest> = /*@__PURE__*/
1587
- messageDesc(file_gc_v1_gc, 38);
1796
+ messageDesc(file_gc_v1_gc, 42);
1588
1797
 
1589
1798
  /**
1590
1799
  * ListAzureIntegrationsRequest lists integrations to verify completion (Step 9).
@@ -1605,7 +1814,7 @@ export type ListAzureIntegrationsRequest = Message<"blueapi.gc.v1.ListAzureInteg
1605
1814
  * Use `create(ListAzureIntegrationsRequestSchema)` to create a new message.
1606
1815
  */
1607
1816
  export const ListAzureIntegrationsRequestSchema: GenMessage<ListAzureIntegrationsRequest> = /*@__PURE__*/
1608
- messageDesc(file_gc_v1_gc, 39);
1817
+ messageDesc(file_gc_v1_gc, 43);
1609
1818
 
1610
1819
  /**
1611
1820
  * @generated from message blueapi.gc.v1.Org
@@ -1632,7 +1841,7 @@ export type Org = Message<"blueapi.gc.v1.Org"> & {
1632
1841
  * Use `create(OrgSchema)` to create a new message.
1633
1842
  */
1634
1843
  export const OrgSchema: GenMessage<Org> = /*@__PURE__*/
1635
- messageDesc(file_gc_v1_gc, 40);
1844
+ messageDesc(file_gc_v1_gc, 44);
1636
1845
 
1637
1846
  /**
1638
1847
  * @generated from message blueapi.gc.v1.CommitmentPlanDetails
@@ -1769,7 +1978,7 @@ export type CommitmentPlanDetails = Message<"blueapi.gc.v1.CommitmentPlanDetails
1769
1978
  * Use `create(CommitmentPlanDetailsSchema)` to create a new message.
1770
1979
  */
1771
1980
  export const CommitmentPlanDetailsSchema: GenMessage<CommitmentPlanDetails> = /*@__PURE__*/
1772
- messageDesc(file_gc_v1_gc, 41);
1981
+ messageDesc(file_gc_v1_gc, 45);
1773
1982
 
1774
1983
  /**
1775
1984
  * @generated from message blueapi.gc.v1.CommitmentPlanLineItem
@@ -1946,7 +2155,7 @@ export type CommitmentPlanLineItem = Message<"blueapi.gc.v1.CommitmentPlanLineIt
1946
2155
  * Use `create(CommitmentPlanLineItemSchema)` to create a new message.
1947
2156
  */
1948
2157
  export const CommitmentPlanLineItemSchema: GenMessage<CommitmentPlanLineItem> = /*@__PURE__*/
1949
- messageDesc(file_gc_v1_gc, 42);
2158
+ messageDesc(file_gc_v1_gc, 46);
1950
2159
 
1951
2160
  /**
1952
2161
  * @generated from message blueapi.gc.v1.CommitmentPlanResourceMatch
@@ -2093,7 +2302,7 @@ export type CommitmentPlanResourceMatch = Message<"blueapi.gc.v1.CommitmentPlanR
2093
2302
  * Use `create(CommitmentPlanResourceMatchSchema)` to create a new message.
2094
2303
  */
2095
2304
  export const CommitmentPlanResourceMatchSchema: GenMessage<CommitmentPlanResourceMatch> = /*@__PURE__*/
2096
- messageDesc(file_gc_v1_gc, 43);
2305
+ messageDesc(file_gc_v1_gc, 47);
2097
2306
 
2098
2307
  /**
2099
2308
  * @generated from message blueapi.gc.v1.Lease
@@ -2165,7 +2374,7 @@ export type Lease = Message<"blueapi.gc.v1.Lease"> & {
2165
2374
  * Use `create(LeaseSchema)` to create a new message.
2166
2375
  */
2167
2376
  export const LeaseSchema: GenMessage<Lease> = /*@__PURE__*/
2168
- messageDesc(file_gc_v1_gc, 44);
2377
+ messageDesc(file_gc_v1_gc, 48);
2169
2378
 
2170
2379
  /**
2171
2380
  * @generated from message blueapi.gc.v1.DailyUtilization
@@ -2192,7 +2401,7 @@ export type DailyUtilization = Message<"blueapi.gc.v1.DailyUtilization"> & {
2192
2401
  * Use `create(DailyUtilizationSchema)` to create a new message.
2193
2402
  */
2194
2403
  export const DailyUtilizationSchema: GenMessage<DailyUtilization> = /*@__PURE__*/
2195
- messageDesc(file_gc_v1_gc, 45);
2404
+ messageDesc(file_gc_v1_gc, 49);
2196
2405
 
2197
2406
  /**
2198
2407
  * @generated from message blueapi.gc.v1.Commitment
@@ -2424,7 +2633,7 @@ export type Commitment = Message<"blueapi.gc.v1.Commitment"> & {
2424
2633
  * Use `create(CommitmentSchema)` to create a new message.
2425
2634
  */
2426
2635
  export const CommitmentSchema: GenMessage<Commitment> = /*@__PURE__*/
2427
- messageDesc(file_gc_v1_gc, 46);
2636
+ messageDesc(file_gc_v1_gc, 50);
2428
2637
 
2429
2638
  /**
2430
2639
  * @generated from message blueapi.gc.v1.ListCommitmentsResponse
@@ -2441,7 +2650,7 @@ export type ListCommitmentsResponse = Message<"blueapi.gc.v1.ListCommitmentsResp
2441
2650
  * Use `create(ListCommitmentsResponseSchema)` to create a new message.
2442
2651
  */
2443
2652
  export const ListCommitmentsResponseSchema: GenMessage<ListCommitmentsResponse> = /*@__PURE__*/
2444
- messageDesc(file_gc_v1_gc, 47);
2653
+ messageDesc(file_gc_v1_gc, 51);
2445
2654
 
2446
2655
  /**
2447
2656
  * @generated from message blueapi.gc.v1.CommitmentsChartData
@@ -2468,7 +2677,7 @@ export type CommitmentsChartData = Message<"blueapi.gc.v1.CommitmentsChartData">
2468
2677
  * Use `create(CommitmentsChartDataSchema)` to create a new message.
2469
2678
  */
2470
2679
  export const CommitmentsChartDataSchema: GenMessage<CommitmentsChartData> = /*@__PURE__*/
2471
- messageDesc(file_gc_v1_gc, 48);
2680
+ messageDesc(file_gc_v1_gc, 52);
2472
2681
 
2473
2682
  /**
2474
2683
  * @generated from message blueapi.gc.v1.CommitmentsChartResponse
@@ -2485,7 +2694,7 @@ export type CommitmentsChartResponse = Message<"blueapi.gc.v1.CommitmentsChartRe
2485
2694
  * Use `create(CommitmentsChartResponseSchema)` to create a new message.
2486
2695
  */
2487
2696
  export const CommitmentsChartResponseSchema: GenMessage<CommitmentsChartResponse> = /*@__PURE__*/
2488
- messageDesc(file_gc_v1_gc, 49);
2697
+ messageDesc(file_gc_v1_gc, 53);
2489
2698
 
2490
2699
  /**
2491
2700
  * @generated from message blueapi.gc.v1.CommitmentsUtilizationData
@@ -2547,7 +2756,7 @@ export type CommitmentsUtilizationData = Message<"blueapi.gc.v1.CommitmentsUtili
2547
2756
  * Use `create(CommitmentsUtilizationDataSchema)` to create a new message.
2548
2757
  */
2549
2758
  export const CommitmentsUtilizationDataSchema: GenMessage<CommitmentsUtilizationData> = /*@__PURE__*/
2550
- messageDesc(file_gc_v1_gc, 50);
2759
+ messageDesc(file_gc_v1_gc, 54);
2551
2760
 
2552
2761
  /**
2553
2762
  * @generated from message blueapi.gc.v1.CommitmentsUtilizationResponse
@@ -2564,7 +2773,7 @@ export type CommitmentsUtilizationResponse = Message<"blueapi.gc.v1.CommitmentsU
2564
2773
  * Use `create(CommitmentsUtilizationResponseSchema)` to create a new message.
2565
2774
  */
2566
2775
  export const CommitmentsUtilizationResponseSchema: GenMessage<CommitmentsUtilizationResponse> = /*@__PURE__*/
2567
- messageDesc(file_gc_v1_gc, 51);
2776
+ messageDesc(file_gc_v1_gc, 55);
2568
2777
 
2569
2778
  /**
2570
2779
  * @generated from message blueapi.gc.v1.MetricsResponse
@@ -2656,7 +2865,7 @@ export type MetricsResponse = Message<"blueapi.gc.v1.MetricsResponse"> & {
2656
2865
  * Use `create(MetricsResponseSchema)` to create a new message.
2657
2866
  */
2658
2867
  export const MetricsResponseSchema: GenMessage<MetricsResponse> = /*@__PURE__*/
2659
- messageDesc(file_gc_v1_gc, 52);
2868
+ messageDesc(file_gc_v1_gc, 56);
2660
2869
 
2661
2870
  /**
2662
2871
  * @generated from message blueapi.gc.v1.Resource
@@ -2893,7 +3102,7 @@ export type Resource = Message<"blueapi.gc.v1.Resource"> & {
2893
3102
  * Use `create(ResourceSchema)` to create a new message.
2894
3103
  */
2895
3104
  export const ResourceSchema: GenMessage<Resource> = /*@__PURE__*/
2896
- messageDesc(file_gc_v1_gc, 53);
3105
+ messageDesc(file_gc_v1_gc, 57);
2897
3106
 
2898
3107
  /**
2899
3108
  * @generated from message blueapi.gc.v1.ListResourcesResponse
@@ -2910,111 +3119,571 @@ export type ListResourcesResponse = Message<"blueapi.gc.v1.ListResourcesResponse
2910
3119
  * Use `create(ListResourcesResponseSchema)` to create a new message.
2911
3120
  */
2912
3121
  export const ListResourcesResponseSchema: GenMessage<ListResourcesResponse> = /*@__PURE__*/
2913
- messageDesc(file_gc_v1_gc, 54);
3122
+ messageDesc(file_gc_v1_gc, 58);
2914
3123
 
2915
3124
  /**
2916
3125
  * @generated from message blueapi.gc.v1.ResourceDailyUsage
2917
3126
  */
2918
3127
  export type ResourceDailyUsage = Message<"blueapi.gc.v1.ResourceDailyUsage"> & {
2919
3128
  /**
2920
- * @generated from field: string date = 1;
3129
+ * @generated from field: string date = 1;
3130
+ */
3131
+ date: string;
3132
+
3133
+ /**
3134
+ * @generated from field: string usageAccountId = 2;
3135
+ */
3136
+ usageAccountId: string;
3137
+
3138
+ /**
3139
+ * @generated from field: string subAccountId = 3;
3140
+ */
3141
+ subAccountId: string;
3142
+
3143
+ /**
3144
+ * @generated from field: double usage = 4;
3145
+ */
3146
+ usage: number;
3147
+
3148
+ /**
3149
+ * @generated from field: double reservationUsage = 5;
3150
+ */
3151
+ reservationUsage: number;
3152
+
3153
+ /**
3154
+ * @generated from field: double freeTierUsage = 6;
3155
+ */
3156
+ freeTierUsage: number;
3157
+
3158
+ /**
3159
+ * @generated from field: double ondemandCost = 7;
3160
+ */
3161
+ ondemandCost: number;
3162
+
3163
+ /**
3164
+ * @generated from field: double reservedCost = 8;
3165
+ */
3166
+ reservedCost: number;
3167
+
3168
+ /**
3169
+ * @generated from field: double ifAllOndemandCost = 9;
3170
+ */
3171
+ ifAllOndemandCost: number;
3172
+
3173
+ /**
3174
+ * @generated from field: double spotCost = 10;
3175
+ */
3176
+ spotCost: number;
3177
+
3178
+ /**
3179
+ * @generated from field: double freeTierSavings = 11;
3180
+ */
3181
+ freeTierSavings: number;
3182
+
3183
+ /**
3184
+ * @generated from field: string usageType = 12;
3185
+ */
3186
+ usageType: string;
3187
+
3188
+ /**
3189
+ * @generated from field: string commonUsageType = 13;
3190
+ */
3191
+ commonUsageType: string;
3192
+
3193
+ /**
3194
+ * @generated from field: double coveredUsage = 14;
3195
+ */
3196
+ coveredUsage: number;
3197
+
3198
+ /**
3199
+ * @generated from field: double uptime = 15;
3200
+ */
3201
+ uptime: number;
3202
+
3203
+ /**
3204
+ * Provider-specific usage type label (e.g. "BoxUsage:c5n.xlarge").
3205
+ *
3206
+ * @generated from field: string providerUsageType = 16;
3207
+ */
3208
+ providerUsageType: string;
3209
+ };
3210
+
3211
+ /**
3212
+ * Describes the message blueapi.gc.v1.ResourceDailyUsage.
3213
+ * Use `create(ResourceDailyUsageSchema)` to create a new message.
3214
+ */
3215
+ export const ResourceDailyUsageSchema: GenMessage<ResourceDailyUsage> = /*@__PURE__*/
3216
+ messageDesc(file_gc_v1_gc, 59);
3217
+
3218
+ /**
3219
+ * @generated from message blueapi.gc.v1.GetResourceDailyUsageResponse
3220
+ */
3221
+ export type GetResourceDailyUsageResponse = Message<"blueapi.gc.v1.GetResourceDailyUsageResponse"> & {
3222
+ /**
3223
+ * @generated from field: repeated blueapi.gc.v1.ResourceDailyUsage dailyUsage = 1;
3224
+ */
3225
+ dailyUsage: ResourceDailyUsage[];
3226
+ };
3227
+
3228
+ /**
3229
+ * Describes the message blueapi.gc.v1.GetResourceDailyUsageResponse.
3230
+ * Use `create(GetResourceDailyUsageResponseSchema)` to create a new message.
3231
+ */
3232
+ export const GetResourceDailyUsageResponseSchema: GenMessage<GetResourceDailyUsageResponse> = /*@__PURE__*/
3233
+ messageDesc(file_gc_v1_gc, 60);
3234
+
3235
+ /**
3236
+ * ReservableResource is a fully-detailed infrastructure resource returned by ListReservableResources.
3237
+ * It extends the basic resource shape with usage metrics, daily usage breakdown,
3238
+ * and hardware/catalog attributes needed for the Reservable Infrastructure view.
3239
+ *
3240
+ * Composite ID formatted as
3241
+ * "{url_encoded_resource_id}|{url_encoded_catalog_sku_org_id}|{url_encoded_catalog_sku_id}".
3242
+ * Each component must be URL/percent-encoded before concatenation so embedded "|"
3243
+ * characters do not break parsing. Consumers must split on "|" and URL-decode each part.
3244
+ *
3245
+ * @generated from message blueapi.gc.v1.ReservableResource
3246
+ */
3247
+ export type ReservableResource = Message<"blueapi.gc.v1.ReservableResource"> & {
3248
+ /**
3249
+ * @generated from field: string id = 1;
3250
+ */
3251
+ id: string;
3252
+
3253
+ /**
3254
+ * @generated from field: string resourceId = 2;
3255
+ */
3256
+ resourceId: string;
3257
+
3258
+ /**
3259
+ * @generated from field: string billingAccountId = 3;
3260
+ */
3261
+ billingAccountId: string;
3262
+
3263
+ /**
3264
+ * @generated from field: string subAccountId = 4;
3265
+ */
3266
+ subAccountId: string;
3267
+
3268
+ /**
3269
+ * Cloud provider string, e.g. "aws".
3270
+ *
3271
+ * @generated from field: string provider = 5;
3272
+ */
3273
+ provider: string;
3274
+
3275
+ /**
3276
+ * @generated from field: string providerResourceId = 6;
3277
+ */
3278
+ providerResourceId: string;
3279
+
3280
+ /**
3281
+ * @generated from field: string providerService = 7;
3282
+ */
3283
+ providerService: string;
3284
+
3285
+ /**
3286
+ * @generated from field: string providerSkuId = 8;
3287
+ */
3288
+ providerSkuId: string;
3289
+
3290
+ /**
3291
+ * @generated from field: bool isSpot = 9;
3292
+ */
3293
+ isSpot: boolean;
3294
+
3295
+ /**
3296
+ * @generated from field: bool isReservable = 10;
3297
+ */
3298
+ isReservable: boolean;
3299
+
3300
+ /**
3301
+ * Display name (nullable).
3302
+ *
3303
+ * @generated from field: google.protobuf.Value name = 11;
3304
+ */
3305
+ name?: Value;
3306
+
3307
+ /**
3308
+ * Resource group (nullable).
3309
+ *
3310
+ * @generated from field: google.protobuf.Value resourceGroup = 12;
3311
+ */
3312
+ resourceGroup?: Value;
3313
+
3314
+ /**
3315
+ * @generated from field: string usageEnd = 13;
3316
+ */
3317
+ usageEnd: string;
3318
+
3319
+ /**
3320
+ * @generated from field: string usageStart = 14;
3321
+ */
3322
+ usageStart: string;
3323
+
3324
+ /**
3325
+ * @generated from field: google.protobuf.Struct tags = 15;
3326
+ */
3327
+ tags?: JsonObject;
3328
+
3329
+ /**
3330
+ * @generated from field: google.protobuf.Struct providerTags = 16;
3331
+ */
3332
+ providerTags?: JsonObject;
3333
+
3334
+ /**
3335
+ * @generated from field: google.protobuf.Struct userTags = 17;
3336
+ */
3337
+ userTags?: JsonObject;
3338
+
3339
+ /**
3340
+ * @generated from field: string createdAt = 18;
3341
+ */
3342
+ createdAt: string;
3343
+
3344
+ /**
3345
+ * @generated from field: string updatedAt = 19;
3346
+ */
3347
+ updatedAt: string;
3348
+
3349
+ /**
3350
+ * @generated from field: string instanceId = 20;
3351
+ */
3352
+ instanceId: string;
3353
+
3354
+ /**
3355
+ * Availability zone (nullable).
3356
+ *
3357
+ * @generated from field: google.protobuf.Value availabilityZone = 21;
3358
+ */
3359
+ availabilityZone?: Value;
3360
+
3361
+ /**
3362
+ * Cache engine (nullable).
3363
+ *
3364
+ * @generated from field: google.protobuf.Value cacheEngine = 22;
3365
+ */
3366
+ cacheEngine?: Value;
3367
+
3368
+ /**
3369
+ * @generated from field: string catalogSkuId = 23;
3370
+ */
3371
+ catalogSkuId: string;
3372
+
3373
+ /**
3374
+ * @generated from field: string catalogSkuOrgId = 24;
3375
+ */
3376
+ catalogSkuOrgId: string;
3377
+
3378
+ /**
3379
+ * @generated from field: bool classicNetworkingSupport = 25;
3380
+ */
3381
+ classicNetworkingSupport: boolean;
3382
+
3383
+ /**
3384
+ * @generated from field: string clockSpeed = 26;
3385
+ */
3386
+ clockSpeed: string;
3387
+
3388
+ /**
3389
+ * @generated from field: string commonUsageType = 27;
3390
+ */
3391
+ commonUsageType: string;
3392
+
3393
+ /**
3394
+ * Fraction of usage covered by existing commitments (0.0–1.0).
3395
+ *
3396
+ * @generated from field: double coveredUsage = 28;
3397
+ */
3398
+ coveredUsage: number;
3399
+
3400
+ /**
3401
+ * Database engine (nullable).
3402
+ *
3403
+ * @generated from field: google.protobuf.Value databaseEngine = 29;
3404
+ */
3405
+ databaseEngine?: Value;
3406
+
3407
+ /**
3408
+ * @generated from field: string dedicatedEbsThroughput = 30;
3409
+ */
3410
+ dedicatedEbsThroughput: string;
3411
+
3412
+ /**
3413
+ * Description (nullable).
3414
+ *
3415
+ * @generated from field: google.protobuf.Value description = 31;
3416
+ */
3417
+ description?: Value;
3418
+
3419
+ /**
3420
+ * @generated from field: string ecu = 32;
3421
+ */
3422
+ ecu: string;
3423
+
3424
+ /**
3425
+ * @generated from field: bool enhancedNetworkingSupported = 33;
3426
+ */
3427
+ enhancedNetworkingSupported: boolean;
3428
+
3429
+ /**
3430
+ * @generated from field: string family = 34;
3431
+ */
3432
+ family: string;
3433
+
3434
+ /**
3435
+ * @generated from field: string fullRegionName = 35;
3436
+ */
3437
+ fullRegionName: string;
3438
+
3439
+ /**
3440
+ * @generated from field: bool hasOndemandTerms = 36;
3441
+ */
3442
+ hasOndemandTerms: boolean;
3443
+
3444
+ /**
3445
+ * @generated from field: string iconUrl = 37;
3446
+ */
3447
+ iconUrl: string;
3448
+
3449
+ /**
3450
+ * @generated from field: string integrationId = 38;
3451
+ */
3452
+ integrationId: string;
3453
+
3454
+ /**
3455
+ * @generated from field: bool intelAvx2Available = 39;
3456
+ */
3457
+ intelAvx2Available: boolean;
3458
+
3459
+ /**
3460
+ * @generated from field: bool intelAvxAvailable = 40;
3461
+ */
3462
+ intelAvxAvailable: boolean;
3463
+
3464
+ /**
3465
+ * @generated from field: bool intelTurboAvailable = 41;
3466
+ */
3467
+ intelTurboAvailable: boolean;
3468
+
3469
+ /**
3470
+ * IO descriptor (nullable).
3471
+ *
3472
+ * @generated from field: google.protobuf.Value io = 42;
3473
+ */
3474
+ io?: Value;
3475
+
3476
+ /**
3477
+ * @generated from field: bool isCurrentGeneration = 43;
3478
+ */
3479
+ isCurrentGeneration: boolean;
3480
+
3481
+ /**
3482
+ * Multi-AZ flag (nullable).
3483
+ *
3484
+ * @generated from field: google.protobuf.Value isMultiAz = 44;
3485
+ */
3486
+ isMultiAz?: Value;
3487
+
3488
+ /**
3489
+ * @generated from field: string licenseModel = 45;
3490
+ */
3491
+ licenseModel: string;
3492
+
3493
+ /**
3494
+ * @generated from field: string locationType = 46;
3495
+ */
3496
+ locationType: string;
3497
+
3498
+ /**
3499
+ * Memory in bytes as a string, e.g. "11274289152.0".
3500
+ *
3501
+ * @generated from field: string memory = 47;
3502
+ */
3503
+ memory: string;
3504
+
3505
+ /**
3506
+ * SKU name (nullable).
3507
+ *
3508
+ * @generated from field: google.protobuf.Value skuName = 48;
3509
+ */
3510
+ skuName?: Value;
3511
+
3512
+ /**
3513
+ * @generated from field: string skuTitle = 49;
3514
+ */
3515
+ skuTitle: string;
3516
+
3517
+ /**
3518
+ * @generated from field: double netCost = 50;
3519
+ */
3520
+ netCost: number;
3521
+
3522
+ /**
3523
+ * @generated from field: double netSavings = 51;
3524
+ */
3525
+ netSavings: number;
3526
+
3527
+ /**
3528
+ * @generated from field: string networkPerformance = 52;
3529
+ */
3530
+ networkPerformance: string;
3531
+
3532
+ /**
3533
+ * @generated from field: string normalizationSizeFactor = 53;
3534
+ */
3535
+ normalizationSizeFactor: string;
3536
+
3537
+ /**
3538
+ * @generated from field: double ondemandCost = 54;
3539
+ */
3540
+ ondemandCost: number;
3541
+
3542
+ /**
3543
+ * @generated from field: string ondemandUsageUnit = 55;
3544
+ */
3545
+ ondemandUsageUnit: string;
3546
+
3547
+ /**
3548
+ * @generated from field: string operatingSystem = 56;
3549
+ */
3550
+ operatingSystem: string;
3551
+
3552
+ /**
3553
+ * @generated from field: string operation = 57;
3554
+ */
3555
+ operation: string;
3556
+
3557
+ /**
3558
+ * @generated from field: string physicalProcessor = 58;
3559
+ */
3560
+ physicalProcessor: string;
3561
+
3562
+ /**
3563
+ * @generated from field: string preInstalledSw = 59;
3564
+ */
3565
+ preInstalledSw: string;
3566
+
3567
+ /**
3568
+ * @generated from field: string priceCurrency = 60;
2921
3569
  */
2922
- date: string;
3570
+ priceCurrency: string;
2923
3571
 
2924
3572
  /**
2925
- * @generated from field: string usageAccountId = 2;
3573
+ * @generated from field: string processorArchitecture = 61;
2926
3574
  */
2927
- usageAccountId: string;
3575
+ processorArchitecture: string;
2928
3576
 
2929
3577
  /**
2930
- * @generated from field: string subAccountId = 3;
3578
+ * @generated from field: string processorFeatures = 62;
2931
3579
  */
2932
- subAccountId: string;
3580
+ processorFeatures: string;
2933
3581
 
2934
3582
  /**
2935
- * @generated from field: double usage = 4;
3583
+ * @generated from field: string publicationDate = 63;
2936
3584
  */
2937
- usage: number;
3585
+ publicationDate: string;
2938
3586
 
2939
3587
  /**
2940
- * @generated from field: double reservationUsage = 5;
3588
+ * @generated from field: string region = 64;
2941
3589
  */
2942
- reservationUsage: number;
3590
+ region: string;
2943
3591
 
2944
3592
  /**
2945
- * @generated from field: double freeTierUsage = 6;
3593
+ * @generated from field: string service = 65;
2946
3594
  */
2947
- freeTierUsage: number;
3595
+ service: string;
2948
3596
 
2949
3597
  /**
2950
- * @generated from field: double ondemandCost = 7;
3598
+ * @generated from field: string source = 66;
2951
3599
  */
2952
- ondemandCost: number;
3600
+ source: string;
2953
3601
 
2954
3602
  /**
2955
- * @generated from field: double reservedCost = 8;
3603
+ * @generated from field: string storage = 67;
2956
3604
  */
2957
- reservedCost: number;
3605
+ storage: string;
2958
3606
 
2959
3607
  /**
2960
- * @generated from field: double ifAllOndemandCost = 9;
3608
+ * Tax type (nullable).
3609
+ *
3610
+ * @generated from field: google.protobuf.Value taxType = 68;
2961
3611
  */
2962
- ifAllOndemandCost: number;
3612
+ taxType?: Value;
2963
3613
 
2964
3614
  /**
2965
- * @generated from field: double spotCost = 10;
3615
+ * @generated from field: string tenancy = 69;
2966
3616
  */
2967
- spotCost: number;
3617
+ tenancy: string;
2968
3618
 
2969
3619
  /**
2970
- * @generated from field: double freeTierSavings = 11;
3620
+ * Fraction of time the resource was running during the lookback period.
3621
+ *
3622
+ * @generated from field: double uptime = 70;
2971
3623
  */
2972
- freeTierSavings: number;
3624
+ uptime: number;
2973
3625
 
2974
3626
  /**
2975
- * @generated from field: string usageType = 12;
3627
+ * @generated from field: string usageType = 71;
2976
3628
  */
2977
3629
  usageType: string;
2978
3630
 
2979
3631
  /**
2980
- * @generated from field: string commonUsageType = 13;
3632
+ * @generated from field: string vcpu = 72;
2981
3633
  */
2982
- commonUsageType: string;
3634
+ vcpu: string;
2983
3635
 
2984
3636
  /**
2985
- * @generated from field: double coveredUsage = 14;
3637
+ * @generated from field: string version = 73;
2986
3638
  */
2987
- coveredUsage: number;
3639
+ version: string;
2988
3640
 
2989
3641
  /**
2990
- * @generated from field: double uptime = 15;
3642
+ * @generated from field: bool vpcNetworkingSupport = 74;
2991
3643
  */
2992
- uptime: number;
3644
+ vpcNetworkingSupport: boolean;
3645
+
3646
+ /**
3647
+ * @generated from field: string instanceType = 75;
3648
+ */
3649
+ instanceType: string;
3650
+
3651
+ /**
3652
+ * @generated from field: string instanceTypeFamily = 76;
3653
+ */
3654
+ instanceTypeFamily: string;
3655
+
3656
+ /**
3657
+ * Per-day usage breakdown for the requested date range.
3658
+ *
3659
+ * @generated from field: repeated blueapi.gc.v1.ResourceDailyUsage dailyUsages = 77;
3660
+ */
3661
+ dailyUsages: ResourceDailyUsage[];
2993
3662
  };
2994
3663
 
2995
3664
  /**
2996
- * Describes the message blueapi.gc.v1.ResourceDailyUsage.
2997
- * Use `create(ResourceDailyUsageSchema)` to create a new message.
3665
+ * Describes the message blueapi.gc.v1.ReservableResource.
3666
+ * Use `create(ReservableResourceSchema)` to create a new message.
2998
3667
  */
2999
- export const ResourceDailyUsageSchema: GenMessage<ResourceDailyUsage> = /*@__PURE__*/
3000
- messageDesc(file_gc_v1_gc, 55);
3668
+ export const ReservableResourceSchema: GenMessage<ReservableResource> = /*@__PURE__*/
3669
+ messageDesc(file_gc_v1_gc, 61);
3001
3670
 
3002
3671
  /**
3003
- * @generated from message blueapi.gc.v1.GetResourceDailyUsageResponse
3672
+ * @generated from message blueapi.gc.v1.ListReservableResourcesResponse
3004
3673
  */
3005
- export type GetResourceDailyUsageResponse = Message<"blueapi.gc.v1.GetResourceDailyUsageResponse"> & {
3674
+ export type ListReservableResourcesResponse = Message<"blueapi.gc.v1.ListReservableResourcesResponse"> & {
3006
3675
  /**
3007
- * @generated from field: repeated blueapi.gc.v1.ResourceDailyUsage dailyUsage = 1;
3676
+ * @generated from field: repeated blueapi.gc.v1.ReservableResource resources = 1;
3008
3677
  */
3009
- dailyUsage: ResourceDailyUsage[];
3678
+ resources: ReservableResource[];
3010
3679
  };
3011
3680
 
3012
3681
  /**
3013
- * Describes the message blueapi.gc.v1.GetResourceDailyUsageResponse.
3014
- * Use `create(GetResourceDailyUsageResponseSchema)` to create a new message.
3682
+ * Describes the message blueapi.gc.v1.ListReservableResourcesResponse.
3683
+ * Use `create(ListReservableResourcesResponseSchema)` to create a new message.
3015
3684
  */
3016
- export const GetResourceDailyUsageResponseSchema: GenMessage<GetResourceDailyUsageResponse> = /*@__PURE__*/
3017
- messageDesc(file_gc_v1_gc, 56);
3685
+ export const ListReservableResourcesResponseSchema: GenMessage<ListReservableResourcesResponse> = /*@__PURE__*/
3686
+ messageDesc(file_gc_v1_gc, 62);
3018
3687
 
3019
3688
  /**
3020
3689
  * @generated from message blueapi.gc.v1.Segment
@@ -3051,7 +3720,7 @@ export type Segment = Message<"blueapi.gc.v1.Segment"> & {
3051
3720
  * Use `create(SegmentSchema)` to create a new message.
3052
3721
  */
3053
3722
  export const SegmentSchema: GenMessage<Segment> = /*@__PURE__*/
3054
- messageDesc(file_gc_v1_gc, 57);
3723
+ messageDesc(file_gc_v1_gc, 63);
3055
3724
 
3056
3725
  /**
3057
3726
  * @generated from message blueapi.gc.v1.SegmentCreator
@@ -3078,7 +3747,7 @@ export type SegmentCreator = Message<"blueapi.gc.v1.SegmentCreator"> & {
3078
3747
  * Use `create(SegmentCreatorSchema)` to create a new message.
3079
3748
  */
3080
3749
  export const SegmentCreatorSchema: GenMessage<SegmentCreator> = /*@__PURE__*/
3081
- messageDesc(file_gc_v1_gc, 58);
3750
+ messageDesc(file_gc_v1_gc, 64);
3082
3751
 
3083
3752
  /**
3084
3753
  * @generated from message blueapi.gc.v1.PurchasePlan
@@ -3110,7 +3779,7 @@ export type PurchasePlan = Message<"blueapi.gc.v1.PurchasePlan"> & {
3110
3779
  * Use `create(PurchasePlanSchema)` to create a new message.
3111
3780
  */
3112
3781
  export const PurchasePlanSchema: GenMessage<PurchasePlan> = /*@__PURE__*/
3113
- messageDesc(file_gc_v1_gc, 59);
3782
+ messageDesc(file_gc_v1_gc, 65);
3114
3783
 
3115
3784
  /**
3116
3785
  * @generated from message blueapi.gc.v1.SegmentDetails
@@ -3255,7 +3924,7 @@ export type SegmentDetails = Message<"blueapi.gc.v1.SegmentDetails"> & {
3255
3924
  * Use `create(SegmentDetailsSchema)` to create a new message.
3256
3925
  */
3257
3926
  export const SegmentDetailsSchema: GenMessage<SegmentDetails> = /*@__PURE__*/
3258
- messageDesc(file_gc_v1_gc, 60);
3927
+ messageDesc(file_gc_v1_gc, 66);
3259
3928
 
3260
3929
  /**
3261
3930
  * @generated from message blueapi.gc.v1.ContractSpec
@@ -3287,7 +3956,7 @@ export type ContractSpec = Message<"blueapi.gc.v1.ContractSpec"> & {
3287
3956
  * Use `create(ContractSpecSchema)` to create a new message.
3288
3957
  */
3289
3958
  export const ContractSpecSchema: GenMessage<ContractSpec> = /*@__PURE__*/
3290
- messageDesc(file_gc_v1_gc, 61);
3959
+ messageDesc(file_gc_v1_gc, 67);
3291
3960
 
3292
3961
  /**
3293
3962
  * @generated from message blueapi.gc.v1.PlanSummary
@@ -3374,7 +4043,7 @@ export type PlanSummary = Message<"blueapi.gc.v1.PlanSummary"> & {
3374
4043
  * Use `create(PlanSummarySchema)` to create a new message.
3375
4044
  */
3376
4045
  export const PlanSummarySchema: GenMessage<PlanSummary> = /*@__PURE__*/
3377
- messageDesc(file_gc_v1_gc, 62);
4046
+ messageDesc(file_gc_v1_gc, 68);
3378
4047
 
3379
4048
  /**
3380
4049
  * @generated from message blueapi.gc.v1.ServiceSummary
@@ -3466,7 +4135,7 @@ export type ServiceSummary = Message<"blueapi.gc.v1.ServiceSummary"> & {
3466
4135
  * Use `create(ServiceSummarySchema)` to create a new message.
3467
4136
  */
3468
4137
  export const ServiceSummarySchema: GenMessage<ServiceSummary> = /*@__PURE__*/
3469
- messageDesc(file_gc_v1_gc, 63);
4138
+ messageDesc(file_gc_v1_gc, 69);
3470
4139
 
3471
4140
  /**
3472
4141
  * @generated from message blueapi.gc.v1.AggregateMetrics
@@ -3493,7 +4162,7 @@ export type AggregateMetrics = Message<"blueapi.gc.v1.AggregateMetrics"> & {
3493
4162
  * Use `create(AggregateMetricsSchema)` to create a new message.
3494
4163
  */
3495
4164
  export const AggregateMetricsSchema: GenMessage<AggregateMetrics> = /*@__PURE__*/
3496
- messageDesc(file_gc_v1_gc, 64);
4165
+ messageDesc(file_gc_v1_gc, 70);
3497
4166
 
3498
4167
  /**
3499
4168
  * @generated from message blueapi.gc.v1.DefaultPurchasePlan
@@ -3774,6 +4443,35 @@ export type DefaultPurchasePlan = Message<"blueapi.gc.v1.DefaultPurchasePlan"> &
3774
4443
  * @generated from field: string coverageId = 52;
3775
4444
  */
3776
4445
  coverageId: string;
4446
+
4447
+ /**
4448
+ * Monthly cost breakdowns (returned by CreateCustomCommitmentPlan and related endpoints)
4449
+ *
4450
+ * @generated from field: double monthlyAfterCost = 53;
4451
+ */
4452
+ monthlyAfterCost: number;
4453
+
4454
+ /**
4455
+ * @generated from field: double monthlyAmortizedCost = 54;
4456
+ */
4457
+ monthlyAmortizedCost: number;
4458
+
4459
+ /**
4460
+ * @generated from field: double monthlyBeforeCost = 55;
4461
+ */
4462
+ monthlyBeforeCost: number;
4463
+
4464
+ /**
4465
+ * @generated from field: double monthlyFee = 56;
4466
+ */
4467
+ monthlyFee: number;
4468
+
4469
+ /**
4470
+ * All term keys present across the plan's line items.
4471
+ *
4472
+ * @generated from field: repeated string allTerms = 57;
4473
+ */
4474
+ allTerms: string[];
3777
4475
  };
3778
4476
 
3779
4477
  /**
@@ -3781,7 +4479,7 @@ export type DefaultPurchasePlan = Message<"blueapi.gc.v1.DefaultPurchasePlan"> &
3781
4479
  * Use `create(DefaultPurchasePlanSchema)` to create a new message.
3782
4480
  */
3783
4481
  export const DefaultPurchasePlanSchema: GenMessage<DefaultPurchasePlan> = /*@__PURE__*/
3784
- messageDesc(file_gc_v1_gc, 65);
4482
+ messageDesc(file_gc_v1_gc, 71);
3785
4483
 
3786
4484
  /**
3787
4485
  * @generated from message blueapi.gc.v1.ListPurchasePlansBySegmentResponse
@@ -3798,7 +4496,7 @@ export type ListPurchasePlansBySegmentResponse = Message<"blueapi.gc.v1.ListPurc
3798
4496
  * Use `create(ListPurchasePlansBySegmentResponseSchema)` to create a new message.
3799
4497
  */
3800
4498
  export const ListPurchasePlansBySegmentResponseSchema: GenMessage<ListPurchasePlansBySegmentResponse> = /*@__PURE__*/
3801
- messageDesc(file_gc_v1_gc, 66);
4499
+ messageDesc(file_gc_v1_gc, 72);
3802
4500
 
3803
4501
  /**
3804
4502
  * @generated from message blueapi.gc.v1.GetUpdatedPurchasePlansBySegmentResponse
@@ -3815,7 +4513,7 @@ export type GetUpdatedPurchasePlansBySegmentResponse = Message<"blueapi.gc.v1.Ge
3815
4513
  * Use `create(GetUpdatedPurchasePlansBySegmentResponseSchema)` to create a new message.
3816
4514
  */
3817
4515
  export const GetUpdatedPurchasePlansBySegmentResponseSchema: GenMessage<GetUpdatedPurchasePlansBySegmentResponse> = /*@__PURE__*/
3818
- messageDesc(file_gc_v1_gc, 67);
4516
+ messageDesc(file_gc_v1_gc, 73);
3819
4517
 
3820
4518
  /**
3821
4519
  * @generated from message blueapi.gc.v1.PlanHistoryUser
@@ -3842,7 +4540,7 @@ export type PlanHistoryUser = Message<"blueapi.gc.v1.PlanHistoryUser"> & {
3842
4540
  * Use `create(PlanHistoryUserSchema)` to create a new message.
3843
4541
  */
3844
4542
  export const PlanHistoryUserSchema: GenMessage<PlanHistoryUser> = /*@__PURE__*/
3845
- messageDesc(file_gc_v1_gc, 68);
4543
+ messageDesc(file_gc_v1_gc, 74);
3846
4544
 
3847
4545
  /**
3848
4546
  * @generated from message blueapi.gc.v1.PlanHistoryEntry
@@ -3904,7 +4602,7 @@ export type PlanHistoryEntry = Message<"blueapi.gc.v1.PlanHistoryEntry"> & {
3904
4602
  * Use `create(PlanHistoryEntrySchema)` to create a new message.
3905
4603
  */
3906
4604
  export const PlanHistoryEntrySchema: GenMessage<PlanHistoryEntry> = /*@__PURE__*/
3907
- messageDesc(file_gc_v1_gc, 69);
4605
+ messageDesc(file_gc_v1_gc, 75);
3908
4606
 
3909
4607
  /**
3910
4608
  * @generated from message blueapi.gc.v1.RegisterOrgResponse
@@ -3958,7 +4656,7 @@ export type RegisterOrgResponse = Message<"blueapi.gc.v1.RegisterOrgResponse"> &
3958
4656
  * Use `create(RegisterOrgResponseSchema)` to create a new message.
3959
4657
  */
3960
4658
  export const RegisterOrgResponseSchema: GenMessage<RegisterOrgResponse> = /*@__PURE__*/
3961
- messageDesc(file_gc_v1_gc, 70);
4659
+ messageDesc(file_gc_v1_gc, 76);
3962
4660
 
3963
4661
  /**
3964
4662
  * @generated from message blueapi.gc.v1.StartAwsOnboardingResponse
@@ -3975,7 +4673,7 @@ export type StartAwsOnboardingResponse = Message<"blueapi.gc.v1.StartAwsOnboardi
3975
4673
  * Use `create(StartAwsOnboardingResponseSchema)` to create a new message.
3976
4674
  */
3977
4675
  export const StartAwsOnboardingResponseSchema: GenMessage<StartAwsOnboardingResponse> = /*@__PURE__*/
3978
- messageDesc(file_gc_v1_gc, 71);
4676
+ messageDesc(file_gc_v1_gc, 77);
3979
4677
 
3980
4678
  /**
3981
4679
  * @generated from message blueapi.gc.v1.GetAwsCloudFormationTemplateResponse
@@ -3994,7 +4692,7 @@ export type GetAwsCloudFormationTemplateResponse = Message<"blueapi.gc.v1.GetAws
3994
4692
  * Use `create(GetAwsCloudFormationTemplateResponseSchema)` to create a new message.
3995
4693
  */
3996
4694
  export const GetAwsCloudFormationTemplateResponseSchema: GenMessage<GetAwsCloudFormationTemplateResponse> = /*@__PURE__*/
3997
- messageDesc(file_gc_v1_gc, 72);
4695
+ messageDesc(file_gc_v1_gc, 78);
3998
4696
 
3999
4697
  /**
4000
4698
  * @generated from message blueapi.gc.v1.GetAwsLaunchStackUrlResponse
@@ -4011,7 +4709,7 @@ export type GetAwsLaunchStackUrlResponse = Message<"blueapi.gc.v1.GetAwsLaunchSt
4011
4709
  * Use `create(GetAwsLaunchStackUrlResponseSchema)` to create a new message.
4012
4710
  */
4013
4711
  export const GetAwsLaunchStackUrlResponseSchema: GenMessage<GetAwsLaunchStackUrlResponse> = /*@__PURE__*/
4014
- messageDesc(file_gc_v1_gc, 73);
4712
+ messageDesc(file_gc_v1_gc, 79);
4015
4713
 
4016
4714
  /**
4017
4715
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingResponse
@@ -4028,7 +4726,7 @@ export type VerifyAwsOnboardingResponse = Message<"blueapi.gc.v1.VerifyAwsOnboar
4028
4726
  * Use `create(VerifyAwsOnboardingResponseSchema)` to create a new message.
4029
4727
  */
4030
4728
  export const VerifyAwsOnboardingResponseSchema: GenMessage<VerifyAwsOnboardingResponse> = /*@__PURE__*/
4031
- messageDesc(file_gc_v1_gc, 74);
4729
+ messageDesc(file_gc_v1_gc, 80);
4032
4730
 
4033
4731
  /**
4034
4732
  * @generated from message blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck
@@ -4050,7 +4748,7 @@ export type VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck = Message<"blu
4050
4748
  * Use `create(VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheckSchema)` to create a new message.
4051
4749
  */
4052
4750
  export const VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheckSchema: GenMessage<VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck> = /*@__PURE__*/
4053
- messageDesc(file_gc_v1_gc, 74, 0);
4751
+ messageDesc(file_gc_v1_gc, 80, 0);
4054
4752
 
4055
4753
  /**
4056
4754
  * @generated from enum blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck.AwsOnboardingFeatureStatus
@@ -4086,7 +4784,7 @@ export enum VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingF
4086
4784
  * Describes the enum blueapi.gc.v1.VerifyAwsOnboardingResponse.AwsOnboardingFeatureCheck.AwsOnboardingFeatureStatus.
4087
4785
  */
4088
4786
  export const VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingFeatureStatusSchema: GenEnum<VerifyAwsOnboardingResponse_AwsOnboardingFeatureCheck_AwsOnboardingFeatureStatus> = /*@__PURE__*/
4089
- enumDesc(file_gc_v1_gc, 74, 0, 0);
4787
+ enumDesc(file_gc_v1_gc, 80, 0, 0);
4090
4788
 
4091
4789
  /**
4092
4790
  * @generated from message blueapi.gc.v1.GetOnboardingStatusResponse
@@ -4169,7 +4867,7 @@ export type GetOnboardingStatusResponse = Message<"blueapi.gc.v1.GetOnboardingSt
4169
4867
  * Use `create(GetOnboardingStatusResponseSchema)` to create a new message.
4170
4868
  */
4171
4869
  export const GetOnboardingStatusResponseSchema: GenMessage<GetOnboardingStatusResponse> = /*@__PURE__*/
4172
- messageDesc(file_gc_v1_gc, 75);
4870
+ messageDesc(file_gc_v1_gc, 81);
4173
4871
 
4174
4872
  /**
4175
4873
  * @generated from enum blueapi.gc.v1.GetOnboardingStatusResponse.OnboardingStatus
@@ -4219,7 +4917,7 @@ export enum GetOnboardingStatusResponse_OnboardingStatus {
4219
4917
  * Describes the enum blueapi.gc.v1.GetOnboardingStatusResponse.OnboardingStatus.
4220
4918
  */
4221
4919
  export const GetOnboardingStatusResponse_OnboardingStatusSchema: GenEnum<GetOnboardingStatusResponse_OnboardingStatus> = /*@__PURE__*/
4222
- enumDesc(file_gc_v1_gc, 75, 0);
4920
+ enumDesc(file_gc_v1_gc, 81, 0);
4223
4921
 
4224
4922
  /**
4225
4923
  * @generated from message blueapi.gc.v1.PayerAccountDetails
@@ -4263,7 +4961,7 @@ export type PayerAccountDetails = Message<"blueapi.gc.v1.PayerAccountDetails"> &
4263
4961
  * Use `create(PayerAccountDetailsSchema)` to create a new message.
4264
4962
  */
4265
4963
  export const PayerAccountDetailsSchema: GenMessage<PayerAccountDetails> = /*@__PURE__*/
4266
- messageDesc(file_gc_v1_gc, 76);
4964
+ messageDesc(file_gc_v1_gc, 82);
4267
4965
 
4268
4966
  /**
4269
4967
  * @generated from message blueapi.gc.v1.ListPayerAccountsResponse
@@ -4285,7 +4983,7 @@ export type ListPayerAccountsResponse = Message<"blueapi.gc.v1.ListPayerAccounts
4285
4983
  * Use `create(ListPayerAccountsResponseSchema)` to create a new message.
4286
4984
  */
4287
4985
  export const ListPayerAccountsResponseSchema: GenMessage<ListPayerAccountsResponse> = /*@__PURE__*/
4288
- messageDesc(file_gc_v1_gc, 77);
4986
+ messageDesc(file_gc_v1_gc, 83);
4289
4987
 
4290
4988
  /**
4291
4989
  * @generated from message blueapi.gc.v1.ListPayerAccountsResponse.PayerAccount
@@ -4344,7 +5042,7 @@ export type ListPayerAccountsResponse_PayerAccount = Message<"blueapi.gc.v1.List
4344
5042
  * Use `create(ListPayerAccountsResponse_PayerAccountSchema)` to create a new message.
4345
5043
  */
4346
5044
  export const ListPayerAccountsResponse_PayerAccountSchema: GenMessage<ListPayerAccountsResponse_PayerAccount> = /*@__PURE__*/
4347
- messageDesc(file_gc_v1_gc, 77, 0);
5045
+ messageDesc(file_gc_v1_gc, 83, 0);
4348
5046
 
4349
5047
  /**
4350
5048
  * @generated from enum blueapi.gc.v1.ListPayerAccountsResponse.PayerAccountStatus
@@ -4370,7 +5068,7 @@ export enum ListPayerAccountsResponse_PayerAccountStatus {
4370
5068
  * Describes the enum blueapi.gc.v1.ListPayerAccountsResponse.PayerAccountStatus.
4371
5069
  */
4372
5070
  export const ListPayerAccountsResponse_PayerAccountStatusSchema: GenEnum<ListPayerAccountsResponse_PayerAccountStatus> = /*@__PURE__*/
4373
- enumDesc(file_gc_v1_gc, 77, 0);
5071
+ enumDesc(file_gc_v1_gc, 83, 0);
4374
5072
 
4375
5073
  /**
4376
5074
  * @generated from message blueapi.gc.v1.SetPayerAccountEnabledResponse
@@ -4389,7 +5087,7 @@ export type SetPayerAccountEnabledResponse = Message<"blueapi.gc.v1.SetPayerAcco
4389
5087
  * Use `create(SetPayerAccountEnabledResponseSchema)` to create a new message.
4390
5088
  */
4391
5089
  export const SetPayerAccountEnabledResponseSchema: GenMessage<SetPayerAccountEnabledResponse> = /*@__PURE__*/
4392
- messageDesc(file_gc_v1_gc, 78);
5090
+ messageDesc(file_gc_v1_gc, 84);
4393
5091
 
4394
5092
  /**
4395
5093
  * @generated from message blueapi.gc.v1.GetPayerAccountStatusResponse
@@ -4406,7 +5104,7 @@ export type GetPayerAccountStatusResponse = Message<"blueapi.gc.v1.GetPayerAccou
4406
5104
  * Use `create(GetPayerAccountStatusResponseSchema)` to create a new message.
4407
5105
  */
4408
5106
  export const GetPayerAccountStatusResponseSchema: GenMessage<GetPayerAccountStatusResponse> = /*@__PURE__*/
4409
- messageDesc(file_gc_v1_gc, 79);
5107
+ messageDesc(file_gc_v1_gc, 85);
4410
5108
 
4411
5109
  /**
4412
5110
  * @generated from message blueapi.gc.v1.ListBillingGroupsResponse
@@ -4423,7 +5121,7 @@ export type ListBillingGroupsResponse = Message<"blueapi.gc.v1.ListBillingGroups
4423
5121
  * Use `create(ListBillingGroupsResponseSchema)` to create a new message.
4424
5122
  */
4425
5123
  export const ListBillingGroupsResponseSchema: GenMessage<ListBillingGroupsResponse> = /*@__PURE__*/
4426
- messageDesc(file_gc_v1_gc, 80);
5124
+ messageDesc(file_gc_v1_gc, 86);
4427
5125
 
4428
5126
  /**
4429
5127
  * @generated from message blueapi.gc.v1.ListBillingGroupsResponse.BillingGroup
@@ -4490,7 +5188,7 @@ export type ListBillingGroupsResponse_BillingGroup = Message<"blueapi.gc.v1.List
4490
5188
  * Use `create(ListBillingGroupsResponse_BillingGroupSchema)` to create a new message.
4491
5189
  */
4492
5190
  export const ListBillingGroupsResponse_BillingGroupSchema: GenMessage<ListBillingGroupsResponse_BillingGroup> = /*@__PURE__*/
4493
- messageDesc(file_gc_v1_gc, 80, 0);
5191
+ messageDesc(file_gc_v1_gc, 86, 0);
4494
5192
 
4495
5193
  /**
4496
5194
  * @generated from enum blueapi.gc.v1.ListBillingGroupsResponse.BillingGroupStatus
@@ -4516,7 +5214,7 @@ export enum ListBillingGroupsResponse_BillingGroupStatus {
4516
5214
  * Describes the enum blueapi.gc.v1.ListBillingGroupsResponse.BillingGroupStatus.
4517
5215
  */
4518
5216
  export const ListBillingGroupsResponse_BillingGroupStatusSchema: GenEnum<ListBillingGroupsResponse_BillingGroupStatus> = /*@__PURE__*/
4519
- enumDesc(file_gc_v1_gc, 80, 0);
5217
+ enumDesc(file_gc_v1_gc, 86, 0);
4520
5218
 
4521
5219
  /**
4522
5220
  * @generated from message blueapi.gc.v1.SetBillingGroupStatusResponse
@@ -4533,7 +5231,7 @@ export type SetBillingGroupStatusResponse = Message<"blueapi.gc.v1.SetBillingGro
4533
5231
  * Use `create(SetBillingGroupStatusResponseSchema)` to create a new message.
4534
5232
  */
4535
5233
  export const SetBillingGroupStatusResponseSchema: GenMessage<SetBillingGroupStatusResponse> = /*@__PURE__*/
4536
- messageDesc(file_gc_v1_gc, 81);
5234
+ messageDesc(file_gc_v1_gc, 87);
4537
5235
 
4538
5236
  /**
4539
5237
  * @generated from message blueapi.gc.v1.GetBillingGroupStatusResponse
@@ -4550,7 +5248,7 @@ export type GetBillingGroupStatusResponse = Message<"blueapi.gc.v1.GetBillingGro
4550
5248
  * Use `create(GetBillingGroupStatusResponseSchema)` to create a new message.
4551
5249
  */
4552
5250
  export const GetBillingGroupStatusResponseSchema: GenMessage<GetBillingGroupStatusResponse> = /*@__PURE__*/
4553
- messageDesc(file_gc_v1_gc, 82);
5251
+ messageDesc(file_gc_v1_gc, 88);
4554
5252
 
4555
5253
  /**
4556
5254
  * @generated from message blueapi.gc.v1.ValidateBillingGroupResponse
@@ -4590,7 +5288,70 @@ export type ValidateBillingGroupResponse = Message<"blueapi.gc.v1.ValidateBillin
4590
5288
  * Use `create(ValidateBillingGroupResponseSchema)` to create a new message.
4591
5289
  */
4592
5290
  export const ValidateBillingGroupResponseSchema: GenMessage<ValidateBillingGroupResponse> = /*@__PURE__*/
4593
- messageDesc(file_gc_v1_gc, 83);
5291
+ messageDesc(file_gc_v1_gc, 89);
5292
+
5293
+ /**
5294
+ * @generated from message blueapi.gc.v1.GetAwsPrivateOfferResponse
5295
+ */
5296
+ export type GetAwsPrivateOfferResponse = Message<"blueapi.gc.v1.GetAwsPrivateOfferResponse"> & {
5297
+ /**
5298
+ * @generated from field: string payerAccountId = 1;
5299
+ */
5300
+ payerAccountId: string;
5301
+
5302
+ /**
5303
+ * AWS Marketplace offer identifier, e.g. offer-qb7i32am664jw.
5304
+ *
5305
+ * @generated from field: string offerId = 2;
5306
+ */
5307
+ offerId: string;
5308
+
5309
+ /**
5310
+ * Display name of the offer shown in the UI.
5311
+ *
5312
+ * @generated from field: string offerName = 3;
5313
+ */
5314
+ offerName: string;
5315
+
5316
+ /**
5317
+ * Current offer status, e.g. PENDING / ACCEPTED / EXPIRED / CREATING / FAILED.
5318
+ *
5319
+ * @generated from field: string status = 4;
5320
+ */
5321
+ status: string;
5322
+
5323
+ /**
5324
+ * @generated from field: string offerUrl = 5;
5325
+ */
5326
+ offerUrl: string;
5327
+
5328
+ /**
5329
+ * @generated from field: string productId = 6;
5330
+ */
5331
+ productId: string;
5332
+
5333
+ /**
5334
+ * @generated from field: double pricePerUnit = 7;
5335
+ */
5336
+ pricePerUnit: number;
5337
+
5338
+ /**
5339
+ * @generated from field: string createdAt = 8;
5340
+ */
5341
+ createdAt: string;
5342
+
5343
+ /**
5344
+ * @generated from field: string expirationDate = 9;
5345
+ */
5346
+ expirationDate: string;
5347
+ };
5348
+
5349
+ /**
5350
+ * Describes the message blueapi.gc.v1.GetAwsPrivateOfferResponse.
5351
+ * Use `create(GetAwsPrivateOfferResponseSchema)` to create a new message.
5352
+ */
5353
+ export const GetAwsPrivateOfferResponseSchema: GenMessage<GetAwsPrivateOfferResponse> = /*@__PURE__*/
5354
+ messageDesc(file_gc_v1_gc, 90);
4594
5355
 
4595
5356
  /**
4596
5357
  * @generated from message blueapi.gc.v1.ListDraftPurchasePlansResponse
@@ -4607,7 +5368,7 @@ export type ListDraftPurchasePlansResponse = Message<"blueapi.gc.v1.ListDraftPur
4607
5368
  * Use `create(ListDraftPurchasePlansResponseSchema)` to create a new message.
4608
5369
  */
4609
5370
  export const ListDraftPurchasePlansResponseSchema: GenMessage<ListDraftPurchasePlansResponse> = /*@__PURE__*/
4610
- messageDesc(file_gc_v1_gc, 84);
5371
+ messageDesc(file_gc_v1_gc, 91);
4611
5372
 
4612
5373
  /**
4613
5374
  * @generated from message blueapi.gc.v1.DeleteDraftPurchasePlanResponse
@@ -4633,7 +5394,28 @@ export type DeleteDraftPurchasePlanResponse = Message<"blueapi.gc.v1.DeleteDraft
4633
5394
  * Use `create(DeleteDraftPurchasePlanResponseSchema)` to create a new message.
4634
5395
  */
4635
5396
  export const DeleteDraftPurchasePlanResponseSchema: GenMessage<DeleteDraftPurchasePlanResponse> = /*@__PURE__*/
4636
- messageDesc(file_gc_v1_gc, 85);
5397
+ messageDesc(file_gc_v1_gc, 92);
5398
+
5399
+ /**
5400
+ * @generated from message blueapi.gc.v1.GetAvailableCommitmentTypesResponse
5401
+ */
5402
+ export type GetAvailableCommitmentTypesResponse = Message<"blueapi.gc.v1.GetAvailableCommitmentTypesResponse"> & {
5403
+ /**
5404
+ * List of available commitment type identifiers for the requested provider.
5405
+ * Example values: "aws/AmazonEC2", "aws/AmazonRDS", "aws/AmazonElastiCache",
5406
+ * "aws/savingsplan/Compute", "aws/savingsplan/EC2Instance", "aws/savingsplan/Database".
5407
+ *
5408
+ * @generated from field: repeated string types = 1;
5409
+ */
5410
+ types: string[];
5411
+ };
5412
+
5413
+ /**
5414
+ * Describes the message blueapi.gc.v1.GetAvailableCommitmentTypesResponse.
5415
+ * Use `create(GetAvailableCommitmentTypesResponseSchema)` to create a new message.
5416
+ */
5417
+ export const GetAvailableCommitmentTypesResponseSchema: GenMessage<GetAvailableCommitmentTypesResponse> = /*@__PURE__*/
5418
+ messageDesc(file_gc_v1_gc, 93);
4637
5419
 
4638
5420
  /**
4639
5421
  * @generated from message blueapi.gc.v1.GetGuaranteedCommitmentTemplateUrlResponse
@@ -4694,7 +5476,7 @@ export type GetGuaranteedCommitmentTemplateUrlResponse = Message<"blueapi.gc.v1.
4694
5476
  * Use `create(GetGuaranteedCommitmentTemplateUrlResponseSchema)` to create a new message.
4695
5477
  */
4696
5478
  export const GetGuaranteedCommitmentTemplateUrlResponseSchema: GenMessage<GetGuaranteedCommitmentTemplateUrlResponse> = /*@__PURE__*/
4697
- messageDesc(file_gc_v1_gc, 86);
5479
+ messageDesc(file_gc_v1_gc, 94);
4698
5480
 
4699
5481
  /**
4700
5482
  * @generated from message blueapi.gc.v1.CreateGuaranteedCommitmentAccessResponse
@@ -4783,7 +5565,7 @@ export type CreateGuaranteedCommitmentAccessResponse = Message<"blueapi.gc.v1.Cr
4783
5565
  * Use `create(CreateGuaranteedCommitmentAccessResponseSchema)` to create a new message.
4784
5566
  */
4785
5567
  export const CreateGuaranteedCommitmentAccessResponseSchema: GenMessage<CreateGuaranteedCommitmentAccessResponse> = /*@__PURE__*/
4786
- messageDesc(file_gc_v1_gc, 87);
5568
+ messageDesc(file_gc_v1_gc, 95);
4787
5569
 
4788
5570
  /**
4789
5571
  * @generated from message blueapi.gc.v1.GetPurchasePlansDetailsResponse
@@ -4823,7 +5605,24 @@ export type GetPurchasePlansDetailsResponse = Message<"blueapi.gc.v1.GetPurchase
4823
5605
  * Use `create(GetPurchasePlansDetailsResponseSchema)` to create a new message.
4824
5606
  */
4825
5607
  export const GetPurchasePlansDetailsResponseSchema: GenMessage<GetPurchasePlansDetailsResponse> = /*@__PURE__*/
4826
- messageDesc(file_gc_v1_gc, 88);
5608
+ messageDesc(file_gc_v1_gc, 96);
5609
+
5610
+ /**
5611
+ * @generated from message blueapi.gc.v1.CreateCustomCommitmentPlanResponse
5612
+ */
5613
+ export type CreateCustomCommitmentPlanResponse = Message<"blueapi.gc.v1.CreateCustomCommitmentPlanResponse"> & {
5614
+ /**
5615
+ * @generated from field: repeated blueapi.gc.v1.DefaultPurchasePlan plans = 1;
5616
+ */
5617
+ plans: DefaultPurchasePlan[];
5618
+ };
5619
+
5620
+ /**
5621
+ * Describes the message blueapi.gc.v1.CreateCustomCommitmentPlanResponse.
5622
+ * Use `create(CreateCustomCommitmentPlanResponseSchema)` to create a new message.
5623
+ */
5624
+ export const CreateCustomCommitmentPlanResponseSchema: GenMessage<CreateCustomCommitmentPlanResponse> = /*@__PURE__*/
5625
+ messageDesc(file_gc_v1_gc, 97);
4827
5626
 
4828
5627
  /**
4829
5628
  * AzureArcheraOrgFeatureStatus is a single feature status entry within the Archera org object.
@@ -4857,7 +5656,7 @@ export type AzureArcheraOrgFeatureStatus = Message<"blueapi.gc.v1.AzureArcheraOr
4857
5656
  * Use `create(AzureArcheraOrgFeatureStatusSchema)` to create a new message.
4858
5657
  */
4859
5658
  export const AzureArcheraOrgFeatureStatusSchema: GenMessage<AzureArcheraOrgFeatureStatus> = /*@__PURE__*/
4860
- messageDesc(file_gc_v1_gc, 89);
5659
+ messageDesc(file_gc_v1_gc, 98);
4861
5660
 
4862
5661
  /**
4863
5662
  * AzureArcheraOrgLeaseBudget is the lease budget config within the Archera org object.
@@ -4886,7 +5685,7 @@ export type AzureArcheraOrgLeaseBudget = Message<"blueapi.gc.v1.AzureArcheraOrgL
4886
5685
  * Use `create(AzureArcheraOrgLeaseBudgetSchema)` to create a new message.
4887
5686
  */
4888
5687
  export const AzureArcheraOrgLeaseBudgetSchema: GenMessage<AzureArcheraOrgLeaseBudget> = /*@__PURE__*/
4889
- messageDesc(file_gc_v1_gc, 90);
5688
+ messageDesc(file_gc_v1_gc, 99);
4890
5689
 
4891
5690
  /**
4892
5691
  * AzureArcheraOrg is the full Archera org object.
@@ -5094,7 +5893,7 @@ export type AzureArcheraOrg = Message<"blueapi.gc.v1.AzureArcheraOrg"> & {
5094
5893
  * Use `create(AzureArcheraOrgSchema)` to create a new message.
5095
5894
  */
5096
5895
  export const AzureArcheraOrgSchema: GenMessage<AzureArcheraOrg> = /*@__PURE__*/
5097
- messageDesc(file_gc_v1_gc, 91);
5896
+ messageDesc(file_gc_v1_gc, 100);
5098
5897
 
5099
5898
  /**
5100
5899
  * AzureOnboardingCreatedBy identifies who triggered the onboarding.
@@ -5123,7 +5922,7 @@ export type AzureOnboardingCreatedBy = Message<"blueapi.gc.v1.AzureOnboardingCre
5123
5922
  * Use `create(AzureOnboardingCreatedBySchema)` to create a new message.
5124
5923
  */
5125
5924
  export const AzureOnboardingCreatedBySchema: GenMessage<AzureOnboardingCreatedBy> = /*@__PURE__*/
5126
- messageDesc(file_gc_v1_gc, 92);
5925
+ messageDesc(file_gc_v1_gc, 101);
5127
5926
 
5128
5927
  /**
5129
5928
  * AzureOnboardingState is the full Archera onboarding record state.
@@ -5292,7 +6091,7 @@ export type AzureOnboardingState = Message<"blueapi.gc.v1.AzureOnboardingState">
5292
6091
  * Use `create(AzureOnboardingStateSchema)` to create a new message.
5293
6092
  */
5294
6093
  export const AzureOnboardingStateSchema: GenMessage<AzureOnboardingState> = /*@__PURE__*/
5295
- messageDesc(file_gc_v1_gc, 93);
6094
+ messageDesc(file_gc_v1_gc, 102);
5296
6095
 
5297
6096
  /**
5298
6097
  * StartAzureOnboardingResponse is returned from StartAzureOnboarding.
@@ -5334,7 +6133,7 @@ export type StartAzureOnboardingResponse = Message<"blueapi.gc.v1.StartAzureOnbo
5334
6133
  * Use `create(StartAzureOnboardingResponseSchema)` to create a new message.
5335
6134
  */
5336
6135
  export const StartAzureOnboardingResponseSchema: GenMessage<StartAzureOnboardingResponse> = /*@__PURE__*/
5337
- messageDesc(file_gc_v1_gc, 94);
6136
+ messageDesc(file_gc_v1_gc, 103);
5338
6137
 
5339
6138
  /**
5340
6139
  * GetAzureOnboardingAuthUrlResponse contains the OAuth URL (Step 4).
@@ -5355,7 +6154,7 @@ export type GetAzureOnboardingAuthUrlResponse = Message<"blueapi.gc.v1.GetAzureO
5355
6154
  * Use `create(GetAzureOnboardingAuthUrlResponseSchema)` to create a new message.
5356
6155
  */
5357
6156
  export const GetAzureOnboardingAuthUrlResponseSchema: GenMessage<GetAzureOnboardingAuthUrlResponse> = /*@__PURE__*/
5358
- messageDesc(file_gc_v1_gc, 95);
6157
+ messageDesc(file_gc_v1_gc, 104);
5359
6158
 
5360
6159
  /**
5361
6160
  * AzureAccount is one available subscription or billing account (Step 6).
@@ -5398,7 +6197,7 @@ export type AzureAccount = Message<"blueapi.gc.v1.AzureAccount"> & {
5398
6197
  * Use `create(AzureAccountSchema)` to create a new message.
5399
6198
  */
5400
6199
  export const AzureAccountSchema: GenMessage<AzureAccount> = /*@__PURE__*/
5401
- messageDesc(file_gc_v1_gc, 96);
6200
+ messageDesc(file_gc_v1_gc, 105);
5402
6201
 
5403
6202
  /**
5404
6203
  * ListAzureOnboardingAccountsResponse returns accounts the user can select.
@@ -5417,7 +6216,7 @@ export type ListAzureOnboardingAccountsResponse = Message<"blueapi.gc.v1.ListAzu
5417
6216
  * Use `create(ListAzureOnboardingAccountsResponseSchema)` to create a new message.
5418
6217
  */
5419
6218
  export const ListAzureOnboardingAccountsResponseSchema: GenMessage<ListAzureOnboardingAccountsResponse> = /*@__PURE__*/
5420
- messageDesc(file_gc_v1_gc, 97);
6219
+ messageDesc(file_gc_v1_gc, 106);
5421
6220
 
5422
6221
  /**
5423
6222
  * AzureIntegrationFeatureStatus is a single feature check for an Azure integration (Step 9).
@@ -5450,7 +6249,7 @@ export type AzureIntegrationFeatureStatus = Message<"blueapi.gc.v1.AzureIntegrat
5450
6249
  * Use `create(AzureIntegrationFeatureStatusSchema)` to create a new message.
5451
6250
  */
5452
6251
  export const AzureIntegrationFeatureStatusSchema: GenMessage<AzureIntegrationFeatureStatus> = /*@__PURE__*/
5453
- messageDesc(file_gc_v1_gc, 98);
6252
+ messageDesc(file_gc_v1_gc, 107);
5454
6253
 
5455
6254
  /**
5456
6255
  * AzureIntegrationOnboarding is a summary of the onboarding linked to an integration.
@@ -5499,7 +6298,7 @@ export type AzureIntegrationOnboarding = Message<"blueapi.gc.v1.AzureIntegration
5499
6298
  * Use `create(AzureIntegrationOnboardingSchema)` to create a new message.
5500
6299
  */
5501
6300
  export const AzureIntegrationOnboardingSchema: GenMessage<AzureIntegrationOnboarding> = /*@__PURE__*/
5502
- messageDesc(file_gc_v1_gc, 99);
6301
+ messageDesc(file_gc_v1_gc, 108);
5503
6302
 
5504
6303
  /**
5505
6304
  * AzureIntegration is the full Azure cloud integration record from Archera.
@@ -5644,7 +6443,7 @@ export type AzureIntegration = Message<"blueapi.gc.v1.AzureIntegration"> & {
5644
6443
  * Use `create(AzureIntegrationSchema)` to create a new message.
5645
6444
  */
5646
6445
  export const AzureIntegrationSchema: GenMessage<AzureIntegration> = /*@__PURE__*/
5647
- messageDesc(file_gc_v1_gc, 100);
6446
+ messageDesc(file_gc_v1_gc, 109);
5648
6447
 
5649
6448
  /**
5650
6449
  * CreateAzureIntegrationResponse is returned after creating the Azure integration (Step 8).
@@ -5707,7 +6506,7 @@ export type CreateAzureIntegrationResponse = Message<"blueapi.gc.v1.CreateAzureI
5707
6506
  * Use `create(CreateAzureIntegrationResponseSchema)` to create a new message.
5708
6507
  */
5709
6508
  export const CreateAzureIntegrationResponseSchema: GenMessage<CreateAzureIntegrationResponse> = /*@__PURE__*/
5710
- messageDesc(file_gc_v1_gc, 101);
6509
+ messageDesc(file_gc_v1_gc, 110);
5711
6510
 
5712
6511
  /**
5713
6512
  * ListAzureIntegrationsResponse contains all Azure integrations for the org (Step 9).
@@ -5726,7 +6525,7 @@ export type ListAzureIntegrationsResponse = Message<"blueapi.gc.v1.ListAzureInte
5726
6525
  * Use `create(ListAzureIntegrationsResponseSchema)` to create a new message.
5727
6526
  */
5728
6527
  export const ListAzureIntegrationsResponseSchema: GenMessage<ListAzureIntegrationsResponse> = /*@__PURE__*/
5729
- messageDesc(file_gc_v1_gc, 102);
6528
+ messageDesc(file_gc_v1_gc, 111);
5730
6529
 
5731
6530
  /**
5732
6531
  * @generated from enum blueapi.gc.v1.Provider
@@ -5999,6 +6798,17 @@ export const GuaranteedCommitments: GenService<{
5999
6798
  input: typeof GetResourceDailyUsageRequestSchema;
6000
6799
  output: typeof GetResourceDailyUsageResponseSchema;
6001
6800
  },
6801
+ /**
6802
+ * WORK-IN-PROGRESS: Only works for Alphaus for now. Retrieves a paginated list of reservable infrastructure resources for a segment.
6803
+ * Supports filtering, sorting, and a date range for usage aggregation.
6804
+ *
6805
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.ListReservableResources
6806
+ */
6807
+ listReservableResources: {
6808
+ methodKind: "unary";
6809
+ input: typeof ListReservableResourcesRequestSchema;
6810
+ output: typeof ListReservableResourcesResponseSchema;
6811
+ },
6002
6812
  /**
6003
6813
  * WORK-IN-PROGRESS: Retrieves purchase plan of a company.
6004
6814
  *
@@ -6060,6 +6870,26 @@ export const GuaranteedCommitments: GenService<{
6060
6870
  input: typeof DeleteDraftPurchasePlanRequestSchema;
6061
6871
  output: typeof DeleteDraftPurchasePlanResponseSchema;
6062
6872
  },
6873
+ /**
6874
+ * WORK-IN-PROGRESS: Only works for Alphaus for now. Retrieves the available commitment types for a given provider.
6875
+ *
6876
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.GetAvailableCommitmentTypes
6877
+ */
6878
+ getAvailableCommitmentTypes: {
6879
+ methodKind: "unary";
6880
+ input: typeof GetAvailableCommitmentTypesRequestSchema;
6881
+ output: typeof GetAvailableCommitmentTypesResponseSchema;
6882
+ },
6883
+ /**
6884
+ * WORK-IN-PROGRESS: Only works for Alphaus for now. Creates a custom (top-down) commitment purchase plan.
6885
+ *
6886
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.CreateCustomCommitmentPlan
6887
+ */
6888
+ createCustomCommitmentPlan: {
6889
+ methodKind: "unary";
6890
+ input: typeof CreateCustomCommitmentPlanRequestSchema;
6891
+ output: typeof CreateCustomCommitmentPlanResponseSchema;
6892
+ },
6063
6893
  /**
6064
6894
  * WORK-IN-PROGRESS: Registers a new child organization under the channel partner.
6065
6895
  * Creates the organization, sets up user memberships, and establishes the partnership relationship.
@@ -6188,6 +7018,17 @@ export const GuaranteedCommitments: GenService<{
6188
7018
  input: typeof ValidateBillingGroupRequestSchema;
6189
7019
  output: typeof ValidateBillingGroupResponseSchema;
6190
7020
  },
7021
+ /**
7022
+ * Retrieves the AWS Marketplace private offer details for a payer account.
7023
+ * Used by the onboarding "Accept Private Offer" step.
7024
+ *
7025
+ * @generated from rpc blueapi.gc.v1.GuaranteedCommitments.GetAwsPrivateOffer
7026
+ */
7027
+ getAwsPrivateOffer: {
7028
+ methodKind: "unary";
7029
+ input: typeof GetAwsPrivateOfferRequestSchema;
7030
+ output: typeof GetAwsPrivateOfferResponseSchema;
7031
+ },
6191
7032
  /**
6192
7033
  * GetGuaranteedCommitmentTemplateUrl returns a CloudFormation launch URL for deploying
6193
7034
  * both Alphaus (Ripple) and Archera IAM roles in a single stack.