@alphauspkgs/blue-sdk-ts 1.0.3 → 1.0.4

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.
@@ -28,7 +28,7 @@ import type { Cost as Cost$2 } from "../../api/gcp/cost_pb";
28
28
  import { file_api_gcp_cost } from "../../api/gcp/cost_pb";
29
29
  import type { Cost as Cost$3, CostAttribute as CostAttribute$2 } from "../../api/azure/cost_pb";
30
30
  import { file_api_azure_cost } from "../../api/azure/cost_pb";
31
- import type { PayerSchema } from "../../api/ripple/payer_pb";
31
+ import type { Payer, PayerSchema } from "../../api/ripple/payer_pb";
32
32
  import { file_api_ripple_payer } from "../../api/ripple/payer_pb";
33
33
  import type { BillingGroupSectionSchema, OverViewSectionSchema, TotalSectionSchema } from "../../api/ripple/v1/dashboard_pb";
34
34
  import { file_api_ripple_v1_dashboard } from "../../api/ripple/v1/dashboard_pb";
@@ -49,7 +49,7 @@ import type { Message } from "@bufbuild/protobuf";
49
49
  * Describes the file cost/v1/cost.proto.
50
50
  */
51
51
  export const file_cost_v1_cost: GenFile = /*@__PURE__*/
52
- fileDesc("ChJjb3N0L3YxL2Nvc3QucHJvdG8SD2JsdWVhcGkuY29zdC52MSJaChhMaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIjQKFkdldFBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIlAKI0dldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRINCgVtb250aBgDIAEoCSJVCiRHZXRQYXllckFjY291bnRJbXBvcnRIaXN0b3J5UmVzcG9uc2USCgoCaWQYASABKAkSDQoFbW9udGgYAiABKAkSEgoKdGltZXN0YW1wcxgDIAMoCSI8Ch5HZXRQYXllclByb2Zvcm1hUmVwb3J0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIlQKH0dldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVzcG9uc2USMQoHcmVwb3J0cxgBIAMoCzIgLmJsdWVhcGkuY29zdC52MS5Qcm9mb3JtYVJlcG9ydHMimwEKD1Byb2Zvcm1hUmVwb3J0cxIKCgJpZBgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAMgASgJEhIKCmJ1Y2tldE5hbWUYBCABKAkSDgoGcHJlZml4GAUgASgJEhIKCnJlcG9ydE5hbWUYBiABKAkSDwoHcm9sZUFybhgHIAEoCSKIAQojQ3JlYXRlUGF5ZXJBY2NvdW50UmVxdWVzdEF3c09wdGlvbnMSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgpidWNrZXROYW1lGAMgASgJEg4KBnByZWZpeBgEIAEoCRISCgpyZXBvcnROYW1lGAUgASgJEg8KB3JvbGVBcm4YBiABKAkidQoZQ3JlYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSSAoKYXdzT3B0aW9ucxgCIAEoCzI0LmJsdWVhcGkuY29zdC52MS5DcmVhdGVQYXllckFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucyI3ChlEZWxldGVQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCSJmChNMaXN0QWNjb3VudHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIl8KEUdldEFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIuCgpmaWVsZF9tYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayI9Ch5DcmVhdGVBY2NvdW50UmVxdWVzdEF3c09wdGlvbnMSGwoTbWFuYWdlbWVudEFjY291bnRJZBgBIAEoCSJaCh5DcmVhdGVBY2NvdW50UmVxdWVzdEdjcE9wdGlvbnMSGwoTbWFuYWdlbWVudEFjY291bnRJZBgBIAEoCRIbChNtYW5hZ2VtZW50QmlsbGluZ0lkGAIgASgJItoBChRDcmVhdGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIOCgZwYXJlbnQYBCABKAkSQwoKYXdzT3B0aW9ucxgFIAEoCzIvLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50UmVxdWVzdEF3c09wdGlvbnMSQwoKZ2NwT3B0aW9ucxgGIAEoCzIvLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50UmVxdWVzdEdjcE9wdGlvbnMiQAoUVXBkYXRlQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEgwKBG5hbWUYAyABKAkiMgoURGVsZXRlQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJImIKD0xpc3RUYWdzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRIuCgpmaWVsZF9tYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJFCiRMaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJItIBCiVMaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50c1Jlc3BvbnNlElUKA2F3cxgBIAEoCzJILmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50c1Jlc3BvbnNlLkF3c1J1bm5pbmdBY2NvdW50GlIKEUF3c1J1bm5pbmdBY2NvdW50Eg0KBW1vbnRoGAEgASgJEg8KB2FjY291bnQYAiABKAkSDAoEZGF0ZRgDIAEoCRIPCgdzdGFydGVkGAQgASgJIiwKGkdldENhbGN1bGF0b3JDb25maWdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSJNChtHZXRDYWxjdWxhdG9yQ29uZmlnUmVzcG9uc2USLgoDYXdzGAEgASgLMiEuYmx1ZWFwaS5hcGkuYXdzLkNhbGN1bGF0b3JDb25maWciqQYKIENhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zEhEKCWFjY291bnRJZBgBIAEoCRIPCgdncm91cElkGAIgASgJEg8KB3BheWVySWQYAyABKAkSTwoKcXVhbGlmaWVycxgEIAMoCzI7LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5RdWFsaWZpZXISTAoIbW9kaWZpZXIYBSABKAsyOi5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuTW9kaWZpZXISDQoFYWZ0ZXIYBiABKAkSFAoMY3JlYXRlTmV3Um93GAcgASgIGooBCglRdWFsaWZpZXISUQoDYW5kGAEgAygLMkQuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zLlF1YWxpZmllci5BbmRFbnRyeRoqCghBbmRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGv4CCghNb2RpZmllchIPCgdmb3JtdWxhGAEgASgJEmsKE2Rlc2NyaXB0aW9uTW9kaWZpZXIYAiABKAsyTi5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuTW9kaWZpZXIuRGVzY3JpcHRpb25Nb2RpZmllchrzAQoTRGVzY3JpcHRpb25Nb2RpZmllchIOCgZwcmVmaXgYASABKAkSDgoGc3VmZml4GAIgASgJEg8KB3JlcGxhY2UYAyABKAkSdgoMcmVwbGFjZU1hdGNoGAQgAygLMmAuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zLk1vZGlmaWVyLkRlc2NyaXB0aW9uTW9kaWZpZXIuUmVwbGFjZU1hdGNoRW50cnkaMwoRUmVwbGFjZU1hdGNoRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKfBQoiQ2FsY3VsYXRvckNvc3RNb2RpZmllckF6dXJlT3B0aW9ucxIPCgdncm91cElkGAEgASgJEg8KB3BheWVySWQYAiABKAkSEgoKY3VzdG9tZXJJZBgDIAEoCRIWCg5zdWJzY3JpcHRpb25JZBgEIAEoCRIVCg1lbnRpdGxlbWVudElkGAUgASgJElEKCnF1YWxpZmllcnMYBiADKAsyPS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF6dXJlT3B0aW9ucy5RdWFsaWZpZXISTgoIbW9kaWZpZXIYByABKAsyPC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF6dXJlT3B0aW9ucy5Nb2RpZmllchINCgVhZnRlchgIIAEoCRqMAQoJUXVhbGlmaWVyElMKA2FuZBgBIAMoCzJGLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLlF1YWxpZmllci5BbmRFbnRyeRoqCghBbmRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGtIBCghNb2RpZmllchIPCgdmb3JtdWxhGAEgASgJEm0KE2Rlc2NyaXB0aW9uTW9kaWZpZXIYAiABKAsyUC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF6dXJlT3B0aW9ucy5Nb2RpZmllci5EZXNjcmlwdGlvbk1vZGlmaWVyGkYKE0Rlc2NyaXB0aW9uTW9kaWZpZXISDgoGcHJlZml4GAEgASgJEg4KBnN1ZmZpeBgCIAEoCRIPCgdyZXBsYWNlGAMgASgJIt4BChZDYWxjdWxhdG9yQ29zdE1vZGlmaWVyEgoKAmlkGAEgASgJEhIKCmNyZWF0ZVRpbWUYAiABKAkSEgoKdXBkYXRlVGltZRgDIAEoCRJFCgphd3NPcHRpb25zGAQgASgLMjEuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zEkkKDGF6dXJlT3B0aW9ucxgFIAEoCzIzLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zIjQKIkxpc3RDYWxjdWxhdG9yQ29zdE1vZGlmaWVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIscBCiNDcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSRQoKYXdzT3B0aW9ucxgCIAEoCzIxLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucxJJCgxhenVyZU9wdGlvbnMYAyABKAsyMy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF6dXJlT3B0aW9ucyKUAQokQ3JlYXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllclJlc3BvbnNlEjQKA2F3cxgBIAMoCzInLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyEjYKBWF6dXJlGAIgAygLMicuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXIiQQojRGVsZXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllclJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIjYKFUltcG9ydEN1ckZpbGVzUmVxdWVzdBINCgVtb250aBgBIAEoCRIOCgZmaWx0ZXIYAiABKAkiegoIQ29zdEl0ZW0SIgoDYXdzGAEgASgLMhUuYmx1ZWFwaS5hcGkuYXdzLkNvc3QSIgoDZ2NwGAIgASgLMhUuYmx1ZWFwaS5hcGkuZ2NwLkNvc3QSJgoFYXp1cmUYAyABKAsyFy5ibHVlYXBpLmFwaS5henVyZS5Db3N0IlgKH0NhbGN1bGF0ZUNvc3RzUmVxdWVzdEF3c09wdGlvbnMSDQoFZm9yY2UYASABKAgSFAoMYWNjb3VudHNPbmx5GAIgASgIEhAKCHRhZ3NPbmx5GAMgASgIIo0BChVDYWxjdWxhdGVDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSDQoFbW9udGgYAyABKAkSRAoKYXdzT3B0aW9ucxgEIAEoCzIwLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGVDb3N0c1JlcXVlc3RBd3NPcHRpb25zIlMKHkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDAoEYXNPZhgCIAEoCRITCgtleGNsdWRlRG9uZRgDIAEoCCJLCiJMaXN0Q2FsY3VsYXRpb25zSGlzdG9yeUF3c1Jlc3BvbnNlEiUKCm9wZXJhdGlvbnMYASADKAsyES5wcm90b3MuT3BlcmF0aW9uImMKH0xpc3RDYWxjdWxhdGlvbnNIaXN0b3J5UmVzcG9uc2USQAoDYXdzGAEgASgLMjMuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5QXdzUmVzcG9uc2UivQEKFENhbGN1bGF0aW9uc1NjaGVkdWxlEgoKAmlkGAEgASgJEhAKCHNjaGVkdWxlGAIgASgJEhUKDXNjaGVkdWxlTWFjcm8YCCABKAkSEwoLdGFyZ2V0TW9udGgYCSABKAkSDwoHbmV4dFJ1bhgDIAEoCRIbChNub3RpZmljYXRpb25DaGFubmVsGAQgASgJEg0KBWZvcmNlGAUgASgIEg4KBmRyeVJ1bhgGIAEoCBIOCgZzdGF0dXMYByABKAkiMgogTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIl0KIUxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXNSZXNwb25zZRI4CglzY2hlZHVsZXMYASADKAsyJS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRpb25zU2NoZWR1bGUirQEKIUNyZWF0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEAoIc2NoZWR1bGUYAiABKAkSFQoNc2NoZWR1bGVNYWNybxgGIAEoCRITCgt0YXJnZXRNb250aBgHIAEoCRIbChNub3RpZmljYXRpb25DaGFubmVsGAMgASgJEg0KBWZvcmNlGAQgASgIEg4KBmRyeVJ1bhgFIAEoCCI/CiFEZWxldGVDYWxjdWxhdGlvbnNTY2hlZHVsZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIoIDChlSZWFkQ29zdEF0dHJpYnV0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEhEKCWFjY291bnRJZBgDIAEoCRIRCglzdGFydFRpbWUYBCABKAkSDwoHZW5kVGltZRgFIAEoCRJJCgphd3NPcHRpb25zGAYgASgLMjUuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0QXR0cmlidXRlc1JlcXVlc3QuQXdzT3B0aW9ucxJNCgxhenVyZU9wdGlvbnMYByABKAsyNy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdC5BenVyZU9wdGlvbnMaIAoKQXdzT3B0aW9ucxISCgpkaW1lbnNpb25zGAEgASgJGlEKDEF6dXJlT3B0aW9ucxISCgpjdXN0b21lcklkGAEgASgJEhYKDnN1YnNjcmlwdGlvbklkGAIgASgJEhUKDWVudGl0bGVtZW50SWQYAyABKAkicQoRQ29zdEF0dHJpYnV0ZUl0ZW0SKwoDYXdzGAEgASgLMh4uYmx1ZWFwaS5hcGkuYXdzLkNvc3RBdHRyaWJ1dGUSLwoFYXp1cmUYAiABKAsyIC5ibHVlYXBpLmFwaS5henVyZS5Db3N0QXR0cmlidXRlIm8KGEdldENvc3RBdHRyaWJ1dGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAkSDwoHZ3JvdXBJZBgDIAEoCRIRCglhY2NvdW50SWQYBCABKAkSEAoIY2F0ZWdvcnkYBSABKAkiSgoZR2V0Q29zdEF0dHJpYnV0ZXNSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmJsdWVhcGkuY29zdC52MS5Db3N0QXR0cmlidXRlIj8KDUNvc3RBdHRyaWJ1dGUSDgoGdmVuZG9yGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEgwKBGRhdGEYAyADKAkirgEKIVJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJWCgphbmRGaWx0ZXJzGAEgAygLMkIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEisQQKGlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhQKDGdyb3VwQnlNb250aBgCIAEoCBIVCg1ncm91cEFjY291bnRzGAggASgIEhUKDWdyb3VwQnlUYWdLZXkYDCABKAkSQwoHZmlsdGVycxgDIAMoCzIyLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9uc0ZpbHRlcnMSSgoKdGFnRmlsdGVycxgJIAMoCzI2LmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzEhMKC2luY2x1ZGVUYWdzGAQgASgIEh0KFWluY2x1ZGVDb3N0Q2F0ZWdvcmllcxgFIAEoCBISCgp0b0N1cnJlbmN5GAYgASgJEhMKC2ZvcmNlTGF0ZXN0GAcgASgIEg8KB25vQ2FjaGUYCiABKAgSGgoSaW5jbHVkZUFkanVzdG1lbnRzGAsgASgIGpsBCgpUYWdGaWx0ZXJzEloKCmFuZEZpbHRlcnMYASADKAsyRi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMuVGFnRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEisQIKEFJlYWRDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEj8KCmF3c09wdGlvbnMYBiABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMSPwoKZ2NwT3B0aW9ucxgHIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9ucxJDCgxhenVyZU9wdGlvbnMYCCABKAsyLS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF6dXJlT3B0aW9ucyI2CiBSZWFkQWRqdXN0bWVudHNSZXF1ZXN0QXdzT3B0aW9ucxISCgp0b0N1cnJlbmN5GAEgASgJIrcBChZSZWFkQWRqdXN0bWVudHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEhEKCWFjY291bnRJZBgDIAEoCRIRCglzdGFydFRpbWUYBCABKAkSDwoHZW5kVGltZRgFIAEoCRJFCgphd3NPcHRpb25zGAYgASgLMjEuYmx1ZWFwaS5jb3N0LnYxLlJlYWRBZGp1c3RtZW50c1JlcXVlc3RBd3NPcHRpb25zIo8ECh1SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxINCgV0YWdJZBgBIAEoCRIWCg5ncm91cEJ5Q29sdW1ucxgCIAEoCRIUCgxncm91cEJ5TW9udGgYAyABKAgSQwoHZmlsdGVycxgEIAMoCzIyLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9uc0ZpbHRlcnMSTQoKdGFnRmlsdGVycxgFIAMoCzI5LmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzEhMKC2luY2x1ZGVUYWdzGAYgASgIEh0KFWluY2x1ZGVDb3N0Q2F0ZWdvcmllcxgHIAEoCBISCgp0b0N1cnJlbmN5GAggASgJEhMKC2ZvcmNlTGF0ZXN0GAkgASgIEg8KB25vQ2FjaGUYCiABKAgSDgoGdGFnSWRzGAsgAygJGp4BCgpUYWdGaWx0ZXJzEl0KCmFuZEZpbHRlcnMYASADKAsySS5ibHVlYXBpLmNvc3QudjEuUmVhZFRhZ0Nvc3RzUmVxdWVzdEF3c09wdGlvbnMuVGFnRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEivwEKE1JlYWRUYWdDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCXN0YXJ0VGltZRgDIAEoCRIPCgdlbmRUaW1lGAQgASgJEhUKDWdyb3VwQnlNb250aHMYBSABKAgSQgoKYXdzT3B0aW9ucxgGIAEoCzIuLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucyJ+ChZSZWFkTm9uVGFnQ29zdHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRIRCglzdGFydFRpbWUYAyABKAkSDwoHZW5kVGltZRgEIAEoCRIVCg1ncm91cEJ5TW9udGhzGAUgASgIIoQBChNHZXRGb3JlY2FzdHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRIRCglmcmVxdWVuY3kYAyABKAkSDQoFbGV2ZWwYBCABKAkSEAoIZnJvbURhdGUYBSABKAkSDgoGdG9EYXRlGAYgASgJIkcKFEdldEZvcmVjYXN0c1Jlc3BvbnNlEi8KBGRhdGEYASABKAsyIS5ibHVlYXBpLmFwaS5CaWxsaW5nR3JvdXBGb3JlY2FzdCJsCh1HZXRNb250aGx5Q29zdEZvcmVjYXN0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSEAoIZnJvbURhdGUYBCABKAkSDgoGdG9EYXRlGAUgASgJIm8KHkdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIuCgRkYXRhGAIgAygLMiAuYmx1ZWFwaS5hcGkuTW9udGhseUNvc3RGb3JlY2FzdBIRCgl0aW1lc3RhbXAYAyABKAkiXQoiR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEZGF0ZRgEIAEoCSJ5CiNHZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIzCgRkYXRhGAIgAygLMiUuYmx1ZWFwaS5hcGkuTW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgDIAEoCSJcCiFHZXRNb250aFRvRGF0ZUNvc3RGb3JlY2FzdFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBWxldmVsGAIgASgJEgoKAmlkGAMgASgJEgwKBGRhdGUYBCABKAkihwEKIkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVzcG9uc2USCgoCaWQYASABKAkSDgoGYnVkZ2V0GAIgASgBEjIKBGRhdGEYAyADKAsyJC5ibHVlYXBpLmFwaS5Nb250aFRvRGF0ZUNvc3RGb3JlY2FzdBIRCgl0aW1lc3RhbXAYBCABKAkiUgoXR2V0QWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBWxldmVsGAIgASgJEgoKAmlkGAMgASgJEgwKBHllYXIYBCABKAkiPQoYR2V0QWNjb3VudEJ1ZGdldFJlc3BvbnNlEiEKBGRhdGEYASABKAsyEy5ibHVlYXBpLmFwaS5CdWRnZXQiagoaQ3JlYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBWxldmVsGAIgASgJEgoKAmlkGAMgASgJEiEKBGRhdGEYBCABKAsyEy5ibHVlYXBpLmFwaS5CdWRnZXQiLwobQ3JlYXRlQWNjb3VudEJ1ZGdldFJlc3BvbnNlEhAKCGJ1ZGdldElkGAEgASgJImEKGlVwZGF0ZUFjY291bnRCdWRnZXRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghidWRnZXRJZBgCIAEoCRIhCgRkYXRhGAMgASgLMhMuYmx1ZWFwaS5hcGkuQnVkZ2V0Ij4KGkRlbGV0ZUFjY291bnRCdWRnZXRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghidWRnZXRJZBgCIAEoCSKLAgojR2V0UmVjb21tZW5kYXRpb25zUmVxdWVzdEF3c09wdGlvbnMSGgoScmVjb21tZW5kYXRpb25UeXBlGAEgASgJEgwKBHR5cGUYAiABKAkSEgoKcmlTZXJ2aWNlcxgDIAMoCRISCgpzcFNlcnZpY2VzGAQgAygJEh4KFnB1cmNoYXNlRUMyU2F2aW5nc1BsYW4YBSABKAgSGgoSZWMyU3BQcm9kdWN0RmFtaWx5GAYgASgJEgwKBHRlcm0YByABKAkSFQoNb2ZmZXJpbmdDbGFzcxgIIAEoCRIVCg1wYXltZW50T3B0aW9uGAkgASgJEhoKEmNvdmVyYWdlUGVyY2VudGFnZRgKIAEoASKrAQoZR2V0UmVjb21tZW5kYXRpb25zUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSEAoIYWNjb3VudHMYAyADKAkSEwoLY29zdEdyb3VwSWQYBCABKAkSSAoKYXdzT3B0aW9ucxgFIAEoCzI0LmJsdWVhcGkuY29zdC52MS5HZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0QXdzT3B0aW9ucyJsChpHZXRSZWNvbW1lbmRhdGlvbnNSZXNwb25zZRINCgVvcmdJZBgBIAEoCRI/ChJhd3NSZWNvbW1lbmRhdGlvbnMYAiABKAsyIy5ibHVlYXBpLmFwaS5hd3MuQXdzUmVjb21tZW5kYXRpb25zIoICChdHZXRDb3N0UmVkdWN0aW9uUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSGAoQcmVkdWN0aW9uRGlzcGxheRgDIAEoCRIWCg5pbmNsdWRlRGV0YWlscxgEIAEoCBIQCghmcm9tRGF0ZRgFIAEoCRIOCgZ0b0RhdGUYBiABKAkSDwoHcGF5ZXJJZBgHIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgIIAEoCRIPCgdncm91cElkGAkgASgJEhMKC2Nvc3RHcm91cElkGAogASgJEhAKCGFjY291bnRzGAsgAygJEhAKCHNlcnZpY2VzGAwgAygJImgKGEdldENvc3RSZWR1Y3Rpb25SZXNwb25zZRINCgVvcmdJZBgBIAEoCRI9ChFhd3NDb3N0UmVkdWN0aW9ucxgCIAEoCzIiLmJsdWVhcGkuYXBpLmF3cy5Bd3NDb3N0UmVkdWN0aW9ucyJUChRHZXRFeHBvcnRSSVNQUmVxdWVzdBIMCgR0eXBlGAEgASgJEhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEhYKDmluY2x1ZGVFeHBpcmVkGAMgASgIIi0KFUdldEV4cG9ydFJJU1BSZXNwb25zZRIUCgxkb3dubG9hZExpbmsYASABKAkiuAEKFUdldFV0aWxpemF0aW9uUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSDAoEdHlwZRgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkSDwoHcGF5ZXJJZBgGIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgHIAEoCRIPCgdncm91cElkGAggASgJEhMKC2Nvc3RHcm91cElkGAkgASgJIl4KFkdldFV0aWxpemF0aW9uUmVzcG9uc2USDQoFb3JnSWQYASABKAkSNQoPdXRpbGl6YXRpb25EYXRhGAIgAygLMhwuYmx1ZWFwaS5hcGkuVXRpbGl6YXRpb25EYXRhIvQBChlHZXRDb3ZlcmFnZU9wdGlvbnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZwZXJpb2QYAyABKAkSEAoIZnJvbURhdGUYBCABKAkSDgoGdG9EYXRlGAUgASgJEg8KB3BheWVySWQYBiABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYByABKAkSDwoHZ3JvdXBJZBgIIAEoCRITCgtjb3N0R3JvdXBJZBgJIAEoCRIQCghhY2NvdW50cxgKIAMoCRIQCghzZXJ2aWNlcxgLIAMoCRIQCghjdXJyZW5jeRgMIAEoCSJaChpHZXRDb3ZlcmFnZU9wdGlvbnNSZXNwb25zZRINCgVvcmdJZBgBIAEoCRItCgtvcHRpb25zRGF0YRgCIAMoCzIYLmJsdWVhcGkuYXBpLk9wdGlvbnNEYXRhIuMBChpHZXRDb3ZlcmFnZU9uZGVtYW5kUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSDgoGcGVyaW9kGAMgASgJEhAKCGZyb21EYXRlGAQgASgJEg4KBnRvRGF0ZRgFIAEoCRIPCgdwYXllcklkGAYgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAcgASgJEg8KB2dyb3VwSWQYCCABKAkSEwoLY29zdEdyb3VwSWQYCSABKAkSEAoIYWNjb3VudHMYCiADKAkSEAoIc2VydmljZXMYCyADKAkiXQobR2V0Q292ZXJhZ2VPbmRlbWFuZFJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEi8KDG9uZGVtYW5kRGF0YRgCIAMoCzIZLmJsdWVhcGkuYXBpLk9uZGVtYW5kRGF0YSJUChhHZXRCcmVha2V2ZW5Qb2ludFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEgwKBHR5cGUYAyABKAkSCwoDYXJuGAQgASgJImcKGUdldEJyZWFrZXZlblBvaW50UmVzcG9uc2USDQoFb3JnSWQYASABKAkSOwoQYXdzQ29zdEJyZWFrZXZlbhgCIAEoCzIhLmJsdWVhcGkuYXBpLmF3cy5Bd3NDb3N0QnJlYWtldmVuIigKFkxpc3RDb3N0RmlsdGVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIlAKF0xpc3RDb3N0RmlsdGVyc1Jlc3BvbnNlEjUKC2Nvc3RGaWx0ZXJzGAEgAygLMiAuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDb3N0RmlsdGVycyKsAQoPTGlzdENvc3RGaWx0ZXJzEhAKCGZpbHRlcklkGAEgASgJEhIKCmZpbHRlck5hbWUYAiABKAkSDgoGdmVuZG9yGAMgASgJEg8KB2dyb3VwSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEj8KCmF3c09wdGlvbnMYBiABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMiowEKGENyZWF0ZUNvc3RGaWx0ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEgoKZmlsdGVyTmFtZRgCIAEoCRIPCgdncm91cElkGAMgASgJEhEKCWFjY291bnRJZBgEIAEoCRI/Cgphd3NPcHRpb25zGAUgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zIi0KGUNyZWF0ZUNvc3RGaWx0ZXJzUmVzcG9uc2USEAoIZmlsdGVySWQYASABKAkitQEKGFVwZGF0ZUNvc3RGaWx0ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEAoIZmlsdGVySWQYAiABKAkSEgoKZmlsdGVyTmFtZRgDIAEoCRIPCgdncm91cElkGAQgASgJEhEKCWFjY291bnRJZBgFIAEoCRI/Cgphd3NPcHRpb25zGAYgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zIi0KGVVwZGF0ZUNvc3RGaWx0ZXJzUmVzcG9uc2USEAoIZmlsdGVySWQYASABKAkiPAoYRGVsZXRlQ29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghmaWx0ZXJJZBgCIAEoCSKnAQocRXhwb3J0Q29zdEZpbHRlcnNGaWxlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEAoIZmlsdGVySWQYAiABKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSFAoMZ3JvdXBCeU1vbnRoGAUgASgIEhYKDmdyb3VwQnlDb2x1bW5zGAYgASgJEhMKC2luY2x1ZGVUYWdzGAcgASgIIiwKHUV4cG9ydENvc3RGaWx0ZXJzRmlsZVJlc3BvbnNlEgsKA3VybBgBIAEoCSKSAgoaUmVhZENvc3RzUmVxdWVzdEdjcE9wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEhUKDWdyb3VwQWNjb3VudHMYAyABKAgSQwoHZmlsdGVycxgEIAMoCzIyLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9uc0ZpbHRlcnMSGwoTaW5jbHVkZUludm9pY2VNb250aBgGIAEoCBIWCg5pbmNsdWRlQ3JlZGl0cxgHIAEoCBIQCghyb3VuZGluZxgIIAEoCBIPCgdub0NhY2hlGAUgASgIEhIKCnRvQ3VycmVuY3kYCSABKAkirgEKIVJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zRmlsdGVycxJWCgphbmRGaWx0ZXJzGAEgAygLMkIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwodR2V0QWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJInIKIENyZWF0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIyCgtidWRnZXRBbGVydBgDIAEoCzIdLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQicgogVXBkYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEjIKC2J1ZGdldEFsZXJ0GAMgASgLMh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCI+CiBEZWxldGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkicQocUmVhZENvc3RzUmVxdWVzdEF6dXJlT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIUCgxncm91cEJ5TW9udGgYAiABKAgSDwoHbm9DYWNoZRgDIAEoCBISCgp0b0N1cnJlbmN5GAQgASgJIqgDCgxCdWRnZXRBbGVydHMSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEiYKCGFjY291bnRzGAMgAygLMhQuYmx1ZWFwaS5hcGkuQWNjb3VudBJACgxub3RpZmljYXRpb24YBCABKAsyKi5ibHVlYXBpLmFwaS5CdWRnZXRBbGVydE5vdGlmaWNhdGlvbkRldGFpbBIsCgVkYWlseRgFIAEoCzIdLmJsdWVhcGkuYXBpLkRhaWx5QnVkZ2V0QWxlcnQSPAoJZGFpbHlSYXRlGAcgASgLMikuYmx1ZWFwaS5hcGkuRGFpbHlSYXRlSW5jcmVhc2VCdWRnZXRBbGVydBIwCgdtb250aGx5GAYgASgLMh8uYmx1ZWFwaS5hcGkuTW9udGhseUJ1ZGdldEFsZXJ0EjoKDGN1c3RvbVBlcmlvZBgIIAEoCzIkLmJsdWVhcGkuYXBpLkN1c3RvbVBlcmlvZEJ1ZGdldEFsZXJ0EjgKC2N1c3RvbU1vbnRoGAkgASgLMiMuYmx1ZWFwaS5hcGkuQ3VzdG9tTW9udGhCdWRnZXRBbGVydCJJChdSZWFkQnVkZ2V0QWxlcnRzUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayIkChZHZXRCdWRnZXRBbGVydHNSZXF1ZXN0EgoKAmlkGAEgASgJIo0DChlDcmVhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghhY2NvdW50cxgCIAMoCRI6Cgxub3RpZmljYXRpb24YAyABKAsyJC5ibHVlYXBpLmFwaS5CdWRnZXRBbGVydE5vdGlmaWNhdGlvbhIsCgVkYWlseRgEIAEoCzIdLmJsdWVhcGkuYXBpLkRhaWx5QnVkZ2V0QWxlcnQSPAoJZGFpbHlSYXRlGAYgASgLMikuYmx1ZWFwaS5hcGkuRGFpbHlSYXRlSW5jcmVhc2VCdWRnZXRBbGVydBIwCgdtb250aGx5GAUgASgLMh8uYmx1ZWFwaS5hcGkuTW9udGhseUJ1ZGdldEFsZXJ0EjoKDGN1c3RvbVBlcmlvZBgHIAEoCzIkLmJsdWVhcGkuYXBpLkN1c3RvbVBlcmlvZEJ1ZGdldEFsZXJ0EjgKC2N1c3RvbU1vbnRoGAggASgLMiMuYmx1ZWFwaS5hcGkuQ3VzdG9tTW9udGhCdWRnZXRBbGVydCKZAwoZVXBkYXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIYWNjb3VudHMYAyADKAkSOgoMbm90aWZpY2F0aW9uGAQgASgLMiQuYmx1ZWFwaS5hcGkuQnVkZ2V0QWxlcnROb3RpZmljYXRpb24SLAoFZGFpbHkYBSABKAsyHS5ibHVlYXBpLmFwaS5EYWlseUJ1ZGdldEFsZXJ0EjwKCWRhaWx5UmF0ZRgHIAEoCzIpLmJsdWVhcGkuYXBpLkRhaWx5UmF0ZUluY3JlYXNlQnVkZ2V0QWxlcnQSMAoHbW9udGhseRgGIAEoCzIfLmJsdWVhcGkuYXBpLk1vbnRobHlCdWRnZXRBbGVydBI6CgxjdXN0b21QZXJpb2QYCCABKAsyJC5ibHVlYXBpLmFwaS5DdXN0b21QZXJpb2RCdWRnZXRBbGVydBI4CgtjdXN0b21Nb250aBgJIAEoCzIjLmJsdWVhcGkuYXBpLkN1c3RvbU1vbnRoQnVkZ2V0QWxlcnQiJwoZRGVsZXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBIKCgJpZBgBIAEoCSI6ChRDaGVja0FjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEgoKYWNjb3VudElkcxgCIAMoCSKKAQoVQ2hlY2tBY2NvdW50c1Jlc3BvbnNlEkIKBmV4aXN0cxgBIAMoCzIyLmJsdWVhcGkuY29zdC52MS5DaGVja0FjY291bnRzUmVzcG9uc2UuRXhpc3RzRW50cnkaLQoLRXhpc3RzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASI2ChVSZWFkSW52b2ljZUlkc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJIiQKFlJlYWRJbnZvaWNlSWRzUmVzcG9uc2USCgoCaWQYASABKAkisAEKC1BlcmlvZFJhbmdlEi8KBHVuaXQYASABKA4yIS5ibHVlYXBpLmNvc3QudjEuUGVyaW9kUmFuZ2UuVW5pdBIMCgR5ZWFyGAIgASgNEhAKCHN0YXJ0aW5nGAMgASgNEhAKCGR1cmF0aW9uGAQgASgNIj4KBFVuaXQSFAoQVU5JVF9VTlNQRUNJRklFRBAAEgkKBU1PTlRIEAESCwoHUVVBUlRFUhACEggKBFlFQVIQAyKgAQobUmVhZEludm9pY2VPdmVydmlld3NSZXF1ZXN0EhEKCXN0YXJ0VGltZRgBIAEoCRIPCgdlbmRUaW1lGAIgASgJEhYKDnVzZVBlcmlvZFJhbmdlGAQgASgIEjEKC3BlcmlvZFJhbmdlGAUgASgLMhwuYmx1ZWFwaS5jb3N0LnYxLlBlcmlvZFJhbmdlEhIKCnRvQ3VycmVuY3kYAyABKAkiUQoXUmVhZEludm9pY2VDb3N0c1JlcXVlc3QSEQoJc3RhcnRUaW1lGAEgASgJEg8KB2VuZFRpbWUYAiABKAkSEgoKdG9DdXJyZW5jeRgDIAEoCSJlChxSZWFkSW52b2ljZUdyb3VwQ29zdHNSZXF1ZXN0EhEKCXN0YXJ0VGltZRgBIAEoCRIPCgdlbmRUaW1lGAIgASgJEhIKCnRvQ3VycmVuY3kYAyABKAkSDQoFbGltaXQYBCABKAUiNQojUmVhZEFjY291bnRPcmlnaW5hbFJlc291cmNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJInMKG1JlZ2lzdGVyUGF5ZXJBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIPCgdjdXJUeXBlGAQgASgJEhkKEWNhbGN1bGF0ZVRVUHJvZml0GAUgASgIInEKGVVwZGF0ZVBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHY3VyVHlwZRgEIAEoCRIZChFjYWxjdWxhdGVUVVByb2ZpdBgFIAEoCCJECiNMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAkilQEKF0NhbGN1bGF0aW9uUHJlcmVxdWlzaXRlEhIKCmludm9pY2VfaWQYASABKAkSEAoIcGF5ZXJfaWQYAiABKAkSFQoNZXhjaGFuZ2VfcmF0ZRgDIAEoARIdChV1bmJsZW5kZWRfY29zdF9pbl9jdXIYBCABKAESDAoEbmFtZRgFIAEoCRIQCghjdXJfdHlwZRgGIAEoCSJnCiRMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzUmVzcG9uc2USPwoNcHJlcmVxdWlzaXRlcxgBIAMoCzIoLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvblByZXJlcXVpc2l0ZTL/TQoEQ29zdBJzChFMaXN0UGF5ZXJBY2NvdW50cxIpLmJsdWVhcGkuY29zdC52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IhuC0+STAhUSEy92MS97dmVuZG9yfS9wYXllcnMwARJ3Cg9HZXRQYXllckFjY291bnQSJy5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50UmVxdWVzdBoZLmJsdWVhcGkuYXBpLnJpcHBsZS5QYXllciIggtPkkwIaEhgvdjEve3ZlbmRvcn0vcGF5ZXJzL3tpZH0SvQEKHEdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnkSNC5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlcXVlc3QaNS5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlc3BvbnNlIi6C0+STAigSJi92MS97dmVuZG9yfS9wYXllcnMve2lkfS9pbXBvcnRoaXN0b3J5MAESpwEKF0dldFBheWVyUHJvZm9ybWFSZXBvcnRzEi8uYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVxdWVzdBowLmJsdWVhcGkuY29zdC52MS5HZXRQYXllclByb2Zvcm1hUmVwb3J0c1Jlc3BvbnNlIimC0+STAiMSIS92MS97dmVuZG9yfS9wYXllcnMve2lkfS9wcm9mb3JtYRJ2ChJDcmVhdGVQYXllckFjY291bnQSKi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiHoLT5JMCGDoBKiITL3YxL3t2ZW5kb3J9L3BheWVycxKJAQoUUmVnaXN0ZXJQYXllckFjY291bnQSLC5ibHVlYXBpLmNvc3QudjEuUmVnaXN0ZXJQYXllckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiU6ASoiIC92MS97dmVuZG9yfS9wYXllcnMvYmFzaWNkZXRhaWxzEooBChJVcGRhdGVQYXllckFjY291bnQSKi5ibHVlYXBpLmNvc3QudjEuVXBkYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEve3ZlbmRvcn0vcGF5ZXJzL2Jhc2ljZGV0YWlscy97aWR9EnoKEkRlbGV0ZVBheWVyQWNjb3VudBIqLmJsdWVhcGkuY29zdC52MS5EZWxldGVQYXllckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAhoqGC92MS97dmVuZG9yfS9wYXllcnMve2lkfRKVAQoMTGlzdEFjY291bnRzEiQuYmx1ZWFwaS5jb3N0LnYxLkxpc3RBY2NvdW50c1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IkeC0+STAkFaKBImL3YxL3t2ZW5kb3J9L2FjY291bnRzL2dyb3Vwcy97Z3JvdXBJZH0SFS92MS97dmVuZG9yfS9hY2NvdW50czABEmoKCkdldEFjY291bnQSIi5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IiKC0+STAhwSGi92MS97dmVuZG9yfS9hY2NvdW50cy97aWR9Em4KDUNyZWF0ZUFjY291bnQSJS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IiCC0+STAho6ASoiFS92MS97dmVuZG9yfS9hY2NvdW50cxJzCg1VcGRhdGVBY2NvdW50EiUuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUFjY291bnRSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCIlgtPkkwIfOgEqGhovdjEve3ZlbmRvcn0vYWNjb3VudHMve2lkfRJyCg1EZWxldGVBY2NvdW50EiUuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiKC0+STAhwqGi92MS97dmVuZG9yfS9hY2NvdW50cy97aWR9Ep8BChxSZWFkQWNjb3VudE9yaWdpbmFsUmVzb3VyY2VzEjQuYmx1ZWFwaS5jb3N0LnYxLlJlYWRBY2NvdW50T3JpZ2luYWxSZXNvdXJjZXNSZXF1ZXN0GiQuYmx1ZWFwaS5hcGkuQWNjb3VudE9yaWdpbmFsUmVzb3VyY2UiIYLT5JMCGzoBKiIWL3YxL3t2ZW5kb3J9L2FvcnM6cmVhZDABEoUBCghMaXN0VGFncxIgLmJsdWVhcGkuY29zdC52MS5MaXN0VGFnc1JlcXVlc3QaFC5ibHVlYXBpLmFwaS5Db3N0VGFnIj+C0+STAjlaJBIiL3YxL3t2ZW5kb3J9L3RhZ3MvZ3JvdXBzL3tncm91cElkfRIRL3YxL3t2ZW5kb3J9L3RhZ3MwARLBAQodTGlzdENhbGN1bGF0b3JSdW5uaW5nQWNjb3VudHMSNS5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0b3JSdW5uaW5nQWNjb3VudHNSZXF1ZXN0GjYuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvcnVubmluZzpyZWFkMAESmAEKE0dldENhbGN1bGF0b3JDb25maWcSKy5ibHVlYXBpLmNvc3QudjEuR2V0Q2FsY3VsYXRvckNvbmZpZ1JlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuR2V0Q2FsY3VsYXRvckNvbmZpZ1Jlc3BvbnNlIiaC0+STAiASHi92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZxKuAQobTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzEjMuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yQ29zdE1vZGlmaWVyc1JlcXVlc3QaJy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllciIvgtPkkwIpEicvdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9jb25maWcvY29zdG1vZHMwARK/AQocQ3JlYXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllchI0LmJsdWVhcGkuY29zdC52MS5DcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBo1LmJsdWVhcGkuY29zdC52MS5DcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVzcG9uc2UiMoLT5JMCLDoBKiInL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvY29uZmlnL2Nvc3Rtb2RzEqIBChxEZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyEjQuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjSC0+STAi4qLC92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZy9jb3N0bW9kcy97aWR9EmoKDkltcG9ydEN1ckZpbGVzEiYuYmx1ZWFwaS5jb3N0LnYxLkltcG9ydEN1ckZpbGVzUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iHYLT5JMCFzoBKiISL3YxL2F3cy9jdXI6aW1wb3J0EnQKDkNhbGN1bGF0ZUNvc3RzEiYuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0ZUNvc3RzUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iJ4LT5JMCIToBKiIcL3YxL3t2ZW5kb3J9L2Nvc3RzOmNhbGN1bGF0ZRKnAQoXTGlzdENhbGN1bGF0aW9uc0hpc3RvcnkSLy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXF1ZXN0GjAuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5UmVzcG9uc2UiKYLT5JMCIxIhL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9oaXN0b3J5Eq8BChlMaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzEjEuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXNSZXF1ZXN0GjIuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXNSZXNwb25zZSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vY2FsY3VsYXRpb25zL3NjaGVkdWxlcxKnAQoaQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGUSMi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0aW9uc1NjaGVkdWxlIi6C0+STAig6ASoiIy92MS97dmVuZG9yfS9jYWxjdWxhdGlvbnMvc2NoZWR1bGVzEpoBChpEZWxldGVDYWxjdWxhdGlvbnNTY2hlZHVsZRIyLmJsdWVhcGkuY29zdC52MS5EZWxldGVDYWxjdWxhdGlvbnNTY2hlZHVsZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKiooL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9zY2hlZHVsZXMve2lkfRKGAQoPTGlzdENvc3RGaWx0ZXJzEicuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDb3N0RmlsdGVyc1JlcXVlc3QaKC5ibHVlYXBpLmNvc3QudjEuTGlzdENvc3RGaWx0ZXJzUmVzcG9uc2UiIILT5JMCGhIYL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzEo8BChFDcmVhdGVDb3N0RmlsdGVycxIpLmJsdWVhcGkuY29zdC52MS5DcmVhdGVDb3N0RmlsdGVyc1JlcXVlc3QaKi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQ29zdEZpbHRlcnNSZXNwb25zZSIjgtPkkwIdOgEqIhgvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMSmgEKEVVwZGF0ZUNvc3RGaWx0ZXJzEikuYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUNvc3RGaWx0ZXJzUmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5VcGRhdGVDb3N0RmlsdGVyc1Jlc3BvbnNlIi6C0+STAig6ASoaIy92MS97dmVuZG9yfS9jb3N0ZmlsdGVycy97ZmlsdGVySWR9EoMBChFEZWxldGVDb3N0RmlsdGVycxIpLmJsdWVhcGkuY29zdC52MS5EZWxldGVDb3N0RmlsdGVyc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiK4LT5JMCJSojL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzL3tmaWx0ZXJJZH0SrQEKFUV4cG9ydENvc3RGaWx0ZXJzRmlsZRItLmJsdWVhcGkuY29zdC52MS5FeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXF1ZXN0Gi4uYmx1ZWFwaS5jb3N0LnYxLkV4cG9ydENvc3RGaWx0ZXJzRmlsZVJlc3BvbnNlIjWC0+STAi86ASoiKi92MS97dmVuZG9yfS9jb3N0ZmlsdGVycy97ZmlsdGVySWR9OmV4cG9ydBKOAQoSUmVhZENvc3RBdHRyaWJ1dGVzEiouYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0QXR0cmlidXRlc1JlcXVlc3QaIi5ibHVlYXBpLmNvc3QudjEuQ29zdEF0dHJpYnV0ZUl0ZW0iJoLT5JMCIDoBKiIbL3YxL3t2ZW5kb3J9L2Nvc3RhdHRyczpyZWFkMAESigEKEUdldENvc3RBdHRyaWJ1dGVzEikuYmx1ZWFwaS5jb3N0LnYxLkdldENvc3RBdHRyaWJ1dGVzUmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0QXR0cmlidXRlc1Jlc3BvbnNlIh6C0+STAhgSFi92MS97dmVuZG9yfS9jb3N0YXR0cnMSbwoJUmVhZENvc3RzEiEuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3QaGS5ibHVlYXBpLmNvc3QudjEuQ29zdEl0ZW0iIoLT5JMCHDoBKiIXL3YxL3t2ZW5kb3J9L2Nvc3RzOnJlYWQwARKBAQoPUmVhZEFkanVzdG1lbnRzEicuYmx1ZWFwaS5jb3N0LnYxLlJlYWRBZGp1c3RtZW50c1JlcXVlc3QaGS5ibHVlYXBpLmNvc3QudjEuQ29zdEl0ZW0iKILT5JMCIjoBKiIdL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRzOnJlYWQwARJ4CgxSZWFkVGFnQ29zdHMSJC5ibHVlYXBpLmNvc3QudjEuUmVhZFRhZ0Nvc3RzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIlgtPkkwIfOgEqIhovdjEve3ZlbmRvcn0vdGFnY29zdHM6cmVhZDABEoEBCg9SZWFkTm9uVGFnQ29zdHMSJy5ibHVlYXBpLmNvc3QudjEuUmVhZE5vblRhZ0Nvc3RzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIogtPkkwIiOgEqIh0vdjEve3ZlbmRvcn0vbm9udGFnY29zdHM6cmVhZDABEnsKDEdldEZvcmVjYXN0cxIkLmJsdWVhcGkuY29zdC52MS5HZXRGb3JlY2FzdHNSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLkdldEZvcmVjYXN0c1Jlc3BvbnNlIh6C0+STAhgSFi92MS97dmVuZG9yfS9mb3JlY2FzdHMSrgEKFkdldE1vbnRobHlDb3N0Rm9yZWNhc3QSLi5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhseUNvc3RGb3JlY2FzdFJlcXVlc3QaLy5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhseUNvc3RGb3JlY2FzdFJlc3BvbnNlIjOC0+STAi0SKy92MS97dmVuZG9yfS9mb3JlY2FzdHMvbW9udGhseS97bGV2ZWx9L3tpZH0SxAEKG0dldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdBIzLmJsdWVhcGkuY29zdC52MS5HZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXF1ZXN0GjQuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlc3BvbnNlIjqC0+STAjQSMi92MS97dmVuZG9yfS9mb3JlY2FzdHMvbW9udGgtb24tbW9udGgve2xldmVsfS97aWR9EsABChpHZXRNb250aFRvRGF0ZUNvc3RGb3JlY2FzdBIyLmJsdWVhcGkuY29zdC52MS5HZXRNb250aFRvRGF0ZUNvc3RGb3JlY2FzdFJlcXVlc3QaMy5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZSI5gtPkkwIzEjEvdjEve3ZlbmRvcn0vZm9yZWNhc3RzL21vbnRoLXRvLWRhdGUve2xldmVsfS97aWR9EpEBChBHZXRBY2NvdW50QnVkZ2V0EiguYmx1ZWFwaS5jb3N0LnYxLkdldEFjY291bnRCdWRnZXRSZXF1ZXN0GikuYmx1ZWFwaS5jb3N0LnYxLkdldEFjY291bnRCdWRnZXRSZXNwb25zZSIogtPkkwIiEiAvdjEve3ZlbmRvcn0vYnVkZ2V0L3tsZXZlbH0ve2lkfRKdAQoTQ3JlYXRlQWNjb3VudEJ1ZGdldBIrLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBosLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50QnVkZ2V0UmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL3t2ZW5kb3J9L2J1ZGdldC97bGV2ZWx9L3tpZH0ShQEKE1VwZGF0ZUFjY291bnRCdWRnZXQSKy5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKYLT5JMCIzoBKhoeL3YxL3t2ZW5kb3J9L2J1ZGdldC97YnVkZ2V0SWR9EoIBChNEZWxldGVBY2NvdW50QnVkZ2V0EisuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUFjY291bnRCdWRnZXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiaC0+STAiAqHi92MS97dmVuZG9yfS9idWRnZXQve2J1ZGdldElkfRKJAQoWR2V0QWNjb3VudEJ1ZGdldEFsZXJ0cxIuLmJsdWVhcGkuY29zdC52MS5HZXRBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQiIILT5JMCGhIYL3YxL3t2ZW5kb3J9L2FsZXJ0cy97aWR9EpIBChlDcmVhdGVBY2NvdW50QnVkZ2V0QWxlcnRzEjEuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCIjgtPkkwIdOgEqIhgvdjEve3ZlbmRvcn0vYWxlcnRzL3tpZH0SkgEKGVVwZGF0ZUFjY291bnRCdWRnZXRBbGVydHMSMS5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0IiOC0+STAh06ASoaGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRKIAQoZRGVsZXRlQWNjb3VudEJ1ZGdldEFsZXJ0cxIxLmJsdWVhcGkuY29zdC52MS5EZWxldGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIggtPkkwIaKhgvdjEve3ZlbmRvcn0vYWxlcnRzL3tpZH0SeQoQUmVhZEJ1ZGdldEFsZXJ0cxIoLmJsdWVhcGkuY29zdC52MS5SZWFkQnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuY29zdC52MS5CdWRnZXRBbGVydHMiGoLT5JMCFDoBKiIPL3YxL2FsZXJ0czpyZWFkMAEScgoPR2V0QnVkZ2V0QWxlcnRzEicuYmx1ZWFwaS5jb3N0LnYxLkdldEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmNvc3QudjEuQnVkZ2V0QWxlcnRzIheC0+STAhESDy92MS9hbGVydHMve2lkfRJ2ChJDcmVhdGVCdWRnZXRBbGVydHMSKi5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuY29zdC52MS5CdWRnZXRBbGVydHMiFYLT5JMCDzoBKiIKL3YxL2FsZXJ0cxJ7ChJVcGRhdGVCdWRnZXRBbGVydHMSKi5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuY29zdC52MS5CdWRnZXRBbGVydHMiGoLT5JMCFDoBKhoPL3YxL2FsZXJ0cy97aWR9EnEKEkRlbGV0ZUJ1ZGdldEFsZXJ0cxIqLmJsdWVhcGkuY29zdC52MS5EZWxldGVCdWRnZXRBbGVydHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IheC0+STAhEqDy92MS9hbGVydHMve2lkfRKjAQoSR2V0UmVjb21tZW5kYXRpb25zEiouYmx1ZWFwaS5jb3N0LnYxLkdldFJlY29tbWVuZGF0aW9uc1JlcXVlc3QaKy5ibHVlYXBpLmNvc3QudjEuR2V0UmVjb21tZW5kYXRpb25zUmVzcG9uc2UiNILT5JMCLjoBKiIpL3YxL3t2ZW5kb3J9L3JlY29tbWVuZGF0aW9ucy97b3JnSWR9OnJlYWQSlwEKEEdldENvc3RSZWR1Y3Rpb24SKC5ibHVlYXBpLmNvc3QudjEuR2V0Q29zdFJlZHVjdGlvblJlcXVlc3QaKS5ibHVlYXBpLmNvc3QudjEuR2V0Q29zdFJlZHVjdGlvblJlc3BvbnNlIi6C0+STAig6ASoiIy92MS97dmVuZG9yfS9yZWR1Y3Rpb24ve29yZ0lkfTpyZWFkEoYBCg1HZXRFeHBvcnRSSVNQEiUuYmx1ZWFwaS5jb3N0LnYxLkdldEV4cG9ydFJJU1BSZXF1ZXN0GiYuYmx1ZWFwaS5jb3N0LnYxLkdldEV4cG9ydFJJU1BSZXNwb25zZSImgtPkkwIgOgEqIhsvdjEvZXhwb3J0Y3N2L3BheWVyczpleHBvcnQSiwEKDkdldFV0aWxpemF0aW9uEiYuYmx1ZWFwaS5jb3N0LnYxLkdldFV0aWxpemF0aW9uUmVxdWVzdBonLmJsdWVhcGkuY29zdC52MS5HZXRVdGlsaXphdGlvblJlc3BvbnNlIiiC0+STAiISIC92MS97dmVuZG9yfS91dGlsaXphdGlvbi97b3JnSWR9EqQBChJHZXRDb3ZlcmFnZU9wdGlvbnMSKi5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPcHRpb25zUmVxdWVzdBorLmJsdWVhcGkuY29zdC52MS5HZXRDb3ZlcmFnZU9wdGlvbnNSZXNwb25zZSI1gtPkkwIvOgEqIiovdjEve3ZlbmRvcn0vY292ZXJhZ2Uvb3B0aW9ucy97b3JnSWR9OnJlYWQSqAEKE0dldENvdmVyYWdlT25kZW1hbmQSKy5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPbmRlbWFuZFJlcXVlc3QaLC5ibHVlYXBpLmNvc3QudjEuR2V0Q292ZXJhZ2VPbmRlbWFuZFJlc3BvbnNlIjaC0+STAjA6ASoiKy92MS97dmVuZG9yfS9jb3ZlcmFnZS9vbmRlbWFuZC97b3JnSWR9OnJlYWQSjAEKEUdldEJyZWFrZXZlblBvaW50EikuYmx1ZWFwaS5jb3N0LnYxLkdldEJyZWFrZXZlblBvaW50UmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5HZXRCcmVha2V2ZW5Qb2ludFJlc3BvbnNlIiCC0+STAhoSGC92MS97dmVuZG9yfS9iZXAve29yZ0lkfRKkAQoYQ2hlY2tBY2NvdW50c0JlbG9uZ1RvTXNwEiUuYmx1ZWFwaS5jb3N0LnYxLkNoZWNrQWNjb3VudHNSZXF1ZXN0GiYuYmx1ZWFwaS5jb3N0LnYxLkNoZWNrQWNjb3VudHNSZXNwb25zZSI5gtPkkwIzOgEqIi4vdjEve3ZlbmRvcn0vYWNjb3VudHMvY3VzdG9tZXJzL2FjY291bnRzOmNoZWNrEowBCg5SZWFkSW52b2ljZUlkcxImLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZUlkc1JlcXVlc3QaJy5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VJZHNSZXNwb25zZSIngtPkkwIhOgEqIhwvdjEve3ZlbmRvcn0vaW52b2ljZWlkczpyZWFkMAESlAEKFFJlYWRJbnZvaWNlT3ZlclZpZXdzEiwuYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlT3ZlcnZpZXdzUmVxdWVzdBomLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5PdmVyVmlld1NlY3Rpb24iJILT5JMCHjoBKiIZL3YxL2ludm9pY2VvdmVydmlld3M6cmVhZDABEoUBChBSZWFkSW52b2ljZUNvc3RzEiguYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlQ29zdHNSZXF1ZXN0GiMuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLlRvdGFsU2VjdGlvbiIggtPkkwIaOgEqIhUvdjEvaW52b2ljZWNvc3RzOnJlYWQwARKbAQoVUmVhZEludm9pY2VHcm91cENvc3RzEi0uYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlR3JvdXBDb3N0c1JlcXVlc3QaKi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwU2VjdGlvbiIlgtPkkwIfOgEqIhovdjEvaW52b2ljZWdyb3VwY29zdHM6cmVhZDABEsMBChxMaXN0Q2FsY3VsYXRpb25QcmVyZXF1aXNpdGVzEjQuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXF1ZXN0GjUuYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXNwb25zZSI2gtPkkwIwEi4vdjEve3ZlbmRvcn0vY2FsY3VsYXRpb24vcHJlcmVxdWlzaXRlcy97bW9udGh9Go0BkkGJARI5Q29zdCBBUEkuIEJhc2UgVVJMOiBodHRwczovL2FwaS5hbHBoYXVzLmNsb3VkL20vYmx1ZS9jb3N0GkwKElNlcnZpY2UgZGVmaW5pdGlvbhI2aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2Nvc3QvQvwCChZjbG91ZC5hbHBoYXVzLmFwaS5jb3N0QglDb3N0UHJvdG9aI2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9jb3N0kkGwAhLOAQoaQWxwaGF1cyBCbHVlOiBDb3N0IFNlcnZpY2UiUgoaQWxwaGF1cyBCbHVlOiBDb3N0IFNlcnZpY2USNGh0dHBzOi8vYWxwaGF1c2xhYnMuZ2l0aHViLmlvL2JsdWVhcGkvYXBpcy9jb3N0Lmh0bWwqVwobTGljZW5zZTogQXBhY2hlIExpY2Vuc2UgMi4wEjhodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9ibG9iL21haW4vTElDRU5TRTIDMS4wcl0KJU1vcmUgYWJvdXQgQWxwaGF1cyBCbHVlOiBDb3N0IFNlcnZpY2USNGh0dHBzOi8vYWxwaGF1c2xhYnMuZ2l0aHViLmlvL2JsdWVhcGkvYXBpcy9jb3N0Lmh0bWxiBnByb3RvMw", [file_api_account, file_api_coverage, file_api_budget, file_api_forecast, file_api_utilization, file_api_aws_breakeven, file_api_aws_cost, file_api_aws_calculator, file_api_aws_recommendation, file_api_aws_reduction, file_api_gcp_cost, file_api_azure_cost, file_api_ripple_payer, file_api_ripple_v1_dashboard, file_api_wave_budget, file_api_costtag, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
52
+ fileDesc("ChJjb3N0L3YxL2Nvc3QucHJvdG8SD2JsdWVhcGkuY29zdC52MSJaChhMaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIjQKFkdldFBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJIsACChRQYXllckFjY291bnRFeHRlbmRlZBIoCgVwYXllchgBIAEoCzIZLmJsdWVhcGkuYXBpLnJpcHBsZS5QYXllchIOCgZ0YXJnZXQYAiABKAkSDwoHcm9sZUFybhgDIAEoCRISCgpleHRlcm5hbElkGAQgASgJEg8KB3N0YWNrSWQYBSABKAkSEwoLc3RhY2tSZWdpb24YBiABKAkSEwoLdGVtcGxhdGVVcmwYByABKAkSDgoGc3RhdHVzGAggASgJEhMKC2xhc3RVcGRhdGVkGAkgASgJEhIKCmJ1Y2tldE5hbWUYCiABKAkSDgoGcHJlZml4GAsgASgJEhIKCnJlcG9ydE5hbWUYDCABKAkSIAoYZGVmYXVsdENvc3RBY2Nlc3NSb2xlQXJuGA0gASgJEg8KB2N1clR5cGUYDiABKAkiUAojR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEg0KBW1vbnRoGAMgASgJIlUKJEdldFBheWVyQWNjb3VudEltcG9ydEhpc3RvcnlSZXNwb25zZRIKCgJpZBgBIAEoCRINCgVtb250aBgCIAEoCRISCgp0aW1lc3RhbXBzGAMgAygJIjwKHkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiVAofR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHNSZXNwb25zZRIxCgdyZXBvcnRzGAEgAygLMiAuYmx1ZWFwaS5jb3N0LnYxLlByb2Zvcm1hUmVwb3J0cyKbAQoPUHJvZm9ybWFSZXBvcnRzEgoKAmlkGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEgoKYnVja2V0TmFtZRgEIAEoCRIOCgZwcmVmaXgYBSABKAkSEgoKcmVwb3J0TmFtZRgGIAEoCRIPCgdyb2xlQXJuGAcgASgJIogBCiNDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhIKCmJ1Y2tldE5hbWUYAyABKAkSDgoGcHJlZml4GAQgASgJEhIKCnJlcG9ydE5hbWUYBSABKAkSDwoHcm9sZUFybhgGIAEoCSJ1ChlDcmVhdGVQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJICgphd3NPcHRpb25zGAIgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZVBheWVyQWNjb3VudFJlcXVlc3RBd3NPcHRpb25zIjcKGURlbGV0ZVBheWVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJImYKE0xpc3RBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSLgoKZmllbGRfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siXwoRR2V0QWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIj0KHkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJIloKHkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucxIbChNtYW5hZ2VtZW50QWNjb3VudElkGAEgASgJEhsKE21hbmFnZW1lbnRCaWxsaW5nSWQYAiABKAki2gEKFENyZWF0ZUFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg4KBnBhcmVudBgEIAEoCRJDCgphd3NPcHRpb25zGAUgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0QXdzT3B0aW9ucxJDCgpnY3BPcHRpb25zGAYgASgLMi8uYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0R2NwT3B0aW9ucyJAChRVcGRhdGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCSIyChREZWxldGVBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiYgoPTGlzdFRhZ3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEi4KCmZpZWxkX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIkUKJExpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAki0gEKJUxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2USVQoDYXdzGAEgASgLMkguYmx1ZWFwaS5jb3N0LnYxLkxpc3RDYWxjdWxhdG9yUnVubmluZ0FjY291bnRzUmVzcG9uc2UuQXdzUnVubmluZ0FjY291bnQaUgoRQXdzUnVubmluZ0FjY291bnQSDQoFbW9udGgYASABKAkSDwoHYWNjb3VudBgCIAEoCRIMCgRkYXRlGAMgASgJEg8KB3N0YXJ0ZWQYBCABKAkiLAoaR2V0Q2FsY3VsYXRvckNvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIk0KG0dldENhbGN1bGF0b3JDb25maWdSZXNwb25zZRIuCgNhd3MYASABKAsyIS5ibHVlYXBpLmFwaS5hd3MuQ2FsY3VsYXRvckNvbmZpZyKpBgogQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSEQoJYWNjb3VudElkGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSDwoHcGF5ZXJJZBgDIAEoCRJPCgpxdWFsaWZpZXJzGAQgAygLMjsuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zLlF1YWxpZmllchJMCghtb2RpZmllchgFIAEoCzI6LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllchINCgVhZnRlchgGIAEoCRIUCgxjcmVhdGVOZXdSb3cYByABKAgaigEKCVF1YWxpZmllchJRCgNhbmQYASADKAsyRC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa/gIKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSawoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJOLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXdzT3B0aW9ucy5Nb2RpZmllci5EZXNjcmlwdGlvbk1vZGlmaWVyGvMBChNEZXNjcmlwdGlvbk1vZGlmaWVyEg4KBnByZWZpeBgBIAEoCRIOCgZzdWZmaXgYAiABKAkSDwoHcmVwbGFjZRgDIAEoCRJ2CgxyZXBsYWNlTWF0Y2gYBCADKAsyYC5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMuTW9kaWZpZXIuRGVzY3JpcHRpb25Nb2RpZmllci5SZXBsYWNlTWF0Y2hFbnRyeRozChFSZXBsYWNlTWF0Y2hFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIp8FCiJDYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zEg8KB2dyb3VwSWQYASABKAkSDwoHcGF5ZXJJZBgCIAEoCRISCgpjdXN0b21lcklkGAMgASgJEhYKDnN1YnNjcmlwdGlvbklkGAQgASgJEhUKDWVudGl0bGVtZW50SWQYBSABKAkSUQoKcXVhbGlmaWVycxgGIAMoCzI9LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLlF1YWxpZmllchJOCghtb2RpZmllchgHIAEoCzI8LmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyEg0KBWFmdGVyGAggASgJGowBCglRdWFsaWZpZXISUwoDYW5kGAEgAygLMkYuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMuUXVhbGlmaWVyLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEa0gEKCE1vZGlmaWVyEg8KB2Zvcm11bGEYASABKAkSbQoTZGVzY3JpcHRpb25Nb2RpZmllchgCIAEoCzJQLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zLk1vZGlmaWVyLkRlc2NyaXB0aW9uTW9kaWZpZXIaRgoTRGVzY3JpcHRpb25Nb2RpZmllchIOCgZwcmVmaXgYASABKAkSDgoGc3VmZml4GAIgASgJEg8KB3JlcGxhY2UYAyABKAki3gEKFkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISCgoCaWQYASABKAkSEgoKY3JlYXRlVGltZRgCIAEoCRISCgp1cGRhdGVUaW1lGAMgASgJEkUKCmF3c09wdGlvbnMYBCABKAsyMS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllckF3c09wdGlvbnMSSQoMYXp1cmVPcHRpb25zGAUgASgLMjMuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBenVyZU9wdGlvbnMiNAoiTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkixwEKI0NyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRJFCgphd3NPcHRpb25zGAIgASgLMjEuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXJBd3NPcHRpb25zEkkKDGF6dXJlT3B0aW9ucxgDIAEoCzIzLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyQXp1cmVPcHRpb25zIpQBCiRDcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVzcG9uc2USNAoDYXdzGAEgAygLMicuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0b3JDb3N0TW9kaWZpZXISNgoFYXp1cmUYAiADKAsyJy5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRvckNvc3RNb2RpZmllciJBCiNEZWxldGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiNgoVSW1wb3J0Q3VyRmlsZXNSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg4KBmZpbHRlchgCIAEoCSJ6CghDb3N0SXRlbRIiCgNhd3MYASABKAsyFS5ibHVlYXBpLmFwaS5hd3MuQ29zdBIiCgNnY3AYAiABKAsyFS5ibHVlYXBpLmFwaS5nY3AuQ29zdBImCgVhenVyZRgDIAEoCzIXLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3QiWAofQ2FsY3VsYXRlQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIUCgxhY2NvdW50c09ubHkYAiABKAgSEAoIdGFnc09ubHkYAyABKAgijQEKFUNhbGN1bGF0ZUNvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRINCgVtb250aBgDIAEoCRJECgphd3NPcHRpb25zGAQgASgLMjAuYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0ZUNvc3RzUmVxdWVzdEF3c09wdGlvbnMiUwoeTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIMCgRhc09mGAIgASgJEhMKC2V4Y2x1ZGVEb25lGAMgASgIIksKIkxpc3RDYWxjdWxhdGlvbnNIaXN0b3J5QXdzUmVzcG9uc2USJQoKb3BlcmF0aW9ucxgBIAMoCzIRLnByb3Rvcy5PcGVyYXRpb24iYwofTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXNwb25zZRJACgNhd3MYASABKAsyMy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlBd3NSZXNwb25zZSK9AQoUQ2FsY3VsYXRpb25zU2NoZWR1bGUSCgoCaWQYASABKAkSEAoIc2NoZWR1bGUYAiABKAkSFQoNc2NoZWR1bGVNYWNybxgIIAEoCRITCgt0YXJnZXRNb250aBgJIAEoCRIPCgduZXh0UnVuGAMgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYBCABKAkSDQoFZm9yY2UYBSABKAgSDgoGZHJ5UnVuGAYgASgIEg4KBnN0YXR1cxgHIAEoCSIyCiBMaXN0Q2FsY3VsYXRpb25zU2NoZWR1bGVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiXQohTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1Jlc3BvbnNlEjgKCXNjaGVkdWxlcxgBIAMoCzIlLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdGlvbnNTY2hlZHVsZSKtAQohQ3JlYXRlQ2FsY3VsYXRpb25zU2NoZWR1bGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghzY2hlZHVsZRgCIAEoCRIVCg1zY2hlZHVsZU1hY3JvGAYgASgJEhMKC3RhcmdldE1vbnRoGAcgASgJEhsKE25vdGlmaWNhdGlvbkNoYW5uZWwYAyABKAkSDQoFZm9yY2UYBCABKAgSDgoGZHJ5UnVuGAUgASgIIj8KIURlbGV0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkiggMKGVJlYWRDb3N0QXR0cmlidXRlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkkKCmF3c09wdGlvbnMYBiABKAsyNS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdC5Bd3NPcHRpb25zEk0KDGF6dXJlT3B0aW9ucxgHIAEoCzI3LmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdEF0dHJpYnV0ZXNSZXF1ZXN0LkF6dXJlT3B0aW9ucxogCgpBd3NPcHRpb25zEhIKCmRpbWVuc2lvbnMYASABKAkaUQoMQXp1cmVPcHRpb25zEhIKCmN1c3RvbWVySWQYASABKAkSFgoOc3Vic2NyaXB0aW9uSWQYAiABKAkSFQoNZW50aXRsZW1lbnRJZBgDIAEoCSJxChFDb3N0QXR0cmlidXRlSXRlbRIrCgNhd3MYASABKAsyHi5ibHVlYXBpLmFwaS5hd3MuQ29zdEF0dHJpYnV0ZRIvCgVhenVyZRgCIAEoCzIgLmJsdWVhcGkuYXBpLmF6dXJlLkNvc3RBdHRyaWJ1dGUibwoYR2V0Q29zdEF0dHJpYnV0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIPCgdncm91cElkGAMgASgJEhEKCWFjY291bnRJZBgEIAEoCRIQCghjYXRlZ29yeRgFIAEoCSJKChlHZXRDb3N0QXR0cmlidXRlc1Jlc3BvbnNlEi0KBWl0ZW1zGAEgAygLMh4uYmx1ZWFwaS5jb3N0LnYxLkNvc3RBdHRyaWJ1dGUiPwoNQ29zdEF0dHJpYnV0ZRIOCgZ2ZW5kb3IYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSDAoEZGF0YRgDIAMoCSKuAQohUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzElYKCmFuZEZpbHRlcnMYASADKAsyQi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxBAoaUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFAoMZ3JvdXBCeU1vbnRoGAIgASgIEhUKDWdyb3VwQWNjb3VudHMYCCABKAgSFQoNZ3JvdXBCeVRhZ0tleRgMIAEoCRJDCgdmaWx0ZXJzGAMgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJKCgp0YWdGaWx0ZXJzGAkgAygLMjYuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBCABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAUgASgIEhIKCnRvQ3VycmVuY3kYBiABKAkSEwoLZm9yY2VMYXRlc3QYByABKAgSDwoHbm9DYWNoZRgKIAEoCBIaChJpbmNsdWRlQWRqdXN0bWVudHMYCyABKAgamwEKClRhZ0ZpbHRlcnMSWgoKYW5kRmlsdGVycxgBIAMoCzJGLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKxAgoQUmVhZENvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCRIRCglhY2NvdW50SWQYAyABKAkSEQoJc3RhcnRUaW1lGAQgASgJEg8KB2VuZFRpbWUYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucxI/CgpnY3BPcHRpb25zGAcgASgLMisuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zEkMKDGF6dXJlT3B0aW9ucxgIIAEoCzItLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXp1cmVPcHRpb25zIjYKIFJlYWRBZGp1c3RtZW50c1JlcXVlc3RBd3NPcHRpb25zEhIKCnRvQ3VycmVuY3kYASABKAkitwEKFlJlYWRBZGp1c3RtZW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJEkUKCmF3c09wdGlvbnMYBiABKAsyMS5ibHVlYXBpLmNvc3QudjEuUmVhZEFkanVzdG1lbnRzUmVxdWVzdEF3c09wdGlvbnMijwQKHVJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zEg0KBXRhZ0lkGAEgASgJEhYKDmdyb3VwQnlDb2x1bW5zGAIgASgJEhQKDGdyb3VwQnlNb250aBgDIAEoCBJDCgdmaWx0ZXJzGAQgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RBd3NPcHRpb25zRmlsdGVycxJNCgp0YWdGaWx0ZXJzGAUgAygLMjkuYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zLlRhZ0ZpbHRlcnMSEwoLaW5jbHVkZVRhZ3MYBiABKAgSHQoVaW5jbHVkZUNvc3RDYXRlZ29yaWVzGAcgASgIEhIKCnRvQ3VycmVuY3kYCCABKAkSEwoLZm9yY2VMYXRlc3QYCSABKAgSDwoHbm9DYWNoZRgKIAEoCBIOCgZ0YWdJZHMYCyADKAkangEKClRhZ0ZpbHRlcnMSXQoKYW5kRmlsdGVycxgBIAMoCzJJLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucy5UYWdGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK/AQoTUmVhZFRhZ0Nvc3RzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYAiABKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSFQoNZ3JvdXBCeU1vbnRocxgFIAEoCBJCCgphd3NPcHRpb25zGAYgASgLMi4uYmx1ZWFwaS5jb3N0LnYxLlJlYWRUYWdDb3N0c1JlcXVlc3RBd3NPcHRpb25zIn4KFlJlYWROb25UYWdDb3N0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCXN0YXJ0VGltZRgDIAEoCRIPCgdlbmRUaW1lGAQgASgJEhUKDWdyb3VwQnlNb250aHMYBSABKAgihAEKE0dldEZvcmVjYXN0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEhEKCWZyZXF1ZW5jeRgDIAEoCRINCgVsZXZlbBgEIAEoCRIQCghmcm9tRGF0ZRgFIAEoCRIOCgZ0b0RhdGUYBiABKAkiRwoUR2V0Rm9yZWNhc3RzUmVzcG9uc2USLwoEZGF0YRgBIAEoCzIhLmJsdWVhcGkuYXBpLkJpbGxpbmdHcm91cEZvcmVjYXN0ImwKHUdldE1vbnRobHlDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkibwoeR2V0TW9udGhseUNvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEi4KBGRhdGEYAiADKAsyIC5ibHVlYXBpLmFwaS5Nb250aGx5Q29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgDIAEoCSJdCiJHZXRNb250aE9uTW9udGhDb3N0Rm9yZWNhc3RSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVsZXZlbBgCIAEoCRIKCgJpZBgDIAEoCRIMCgRkYXRlGAQgASgJInkKI0dldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEjMKBGRhdGEYAiADKAsyJS5ibHVlYXBpLmFwaS5Nb250aE9uTW9udGhDb3N0Rm9yZWNhc3QSEQoJdGltZXN0YW1wGAMgASgJIlwKIUdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEZGF0ZRgEIAEoCSKHAQoiR2V0TW9udGhUb0RhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIOCgZidWRnZXQYAiABKAESMgoEZGF0YRgDIAMoCzIkLmJsdWVhcGkuYXBpLk1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0EhEKCXRpbWVzdGFtcBgEIAEoCSJSChdHZXRBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSDAoEeWVhchgEIAEoCSI9ChhHZXRBY2NvdW50QnVkZ2V0UmVzcG9uc2USIQoEZGF0YRgBIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCJqChpDcmVhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbGV2ZWwYAiABKAkSCgoCaWQYAyABKAkSIQoEZGF0YRgEIAEoCzITLmJsdWVhcGkuYXBpLkJ1ZGdldCIvChtDcmVhdGVBY2NvdW50QnVkZ2V0UmVzcG9uc2USEAoIYnVkZ2V0SWQYASABKAkiYQoaVXBkYXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJEiEKBGRhdGEYAyABKAsyEy5ibHVlYXBpLmFwaS5CdWRnZXQiPgoaRGVsZXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGJ1ZGdldElkGAIgASgJIosCCiNHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0QXdzT3B0aW9ucxIaChJyZWNvbW1lbmRhdGlvblR5cGUYASABKAkSDAoEdHlwZRgCIAEoCRISCgpyaVNlcnZpY2VzGAMgAygJEhIKCnNwU2VydmljZXMYBCADKAkSHgoWcHVyY2hhc2VFQzJTYXZpbmdzUGxhbhgFIAEoCBIaChJlYzJTcFByb2R1Y3RGYW1pbHkYBiABKAkSDAoEdGVybRgHIAEoCRIVCg1vZmZlcmluZ0NsYXNzGAggASgJEhUKDXBheW1lbnRPcHRpb24YCSABKAkSGgoSY292ZXJhZ2VQZXJjZW50YWdlGAogASgBIqsBChlHZXRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIQCghhY2NvdW50cxgDIAMoCRITCgtjb3N0R3JvdXBJZBgEIAEoCRJICgphd3NPcHRpb25zGAUgASgLMjQuYmx1ZWFwaS5jb3N0LnYxLkdldFJlY29tbWVuZGF0aW9uc1JlcXVlc3RBd3NPcHRpb25zImwKGkdldFJlY29tbWVuZGF0aW9uc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj8KEmF3c1JlY29tbWVuZGF0aW9ucxgCIAEoCzIjLmJsdWVhcGkuYXBpLmF3cy5Bd3NSZWNvbW1lbmRhdGlvbnMiggIKF0dldENvc3RSZWR1Y3Rpb25SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIYChByZWR1Y3Rpb25EaXNwbGF5GAMgASgJEhYKDmluY2x1ZGVEZXRhaWxzGAQgASgIEhAKCGZyb21EYXRlGAUgASgJEg4KBnRvRGF0ZRgGIAEoCRIPCgdwYXllcklkGAcgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAggASgJEg8KB2dyb3VwSWQYCSABKAkSEwoLY29zdEdyb3VwSWQYCiABKAkSEAoIYWNjb3VudHMYCyADKAkSEAoIc2VydmljZXMYDCADKAkiaAoYR2V0Q29zdFJlZHVjdGlvblJlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj0KEWF3c0Nvc3RSZWR1Y3Rpb25zGAIgASgLMiIuYmx1ZWFwaS5hcGkuYXdzLkF3c0Nvc3RSZWR1Y3Rpb25zIlQKFEdldEV4cG9ydFJJU1BSZXF1ZXN0EgwKBHR5cGUYASABKAkSFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESFgoOaW5jbHVkZUV4cGlyZWQYAyABKAgiLQoVR2V0RXhwb3J0UklTUFJlc3BvbnNlEhQKDGRvd25sb2FkTGluaxgBIAEoCSK4AQoVR2V0VXRpbGl6YXRpb25SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIMCgR0eXBlGAMgASgJEhAKCGZyb21EYXRlGAQgASgJEg4KBnRvRGF0ZRgFIAEoCRIPCgdwYXllcklkGAYgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAcgASgJEg8KB2dyb3VwSWQYCCABKAkSEwoLY29zdEdyb3VwSWQYCSABKAkiXgoWR2V0VXRpbGl6YXRpb25SZXNwb25zZRINCgVvcmdJZBgBIAEoCRI1Cg91dGlsaXphdGlvbkRhdGEYAiADKAsyHC5ibHVlYXBpLmFwaS5VdGlsaXphdGlvbkRhdGEi9AEKGUdldENvdmVyYWdlT3B0aW9uc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEg4KBnBlcmlvZBgDIAEoCRIQCghmcm9tRGF0ZRgEIAEoCRIOCgZ0b0RhdGUYBSABKAkSDwoHcGF5ZXJJZBgGIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgHIAEoCRIPCgdncm91cElkGAggASgJEhMKC2Nvc3RHcm91cElkGAkgASgJEhAKCGFjY291bnRzGAogAygJEhAKCHNlcnZpY2VzGAsgAygJEhAKCGN1cnJlbmN5GAwgASgJIloKGkdldENvdmVyYWdlT3B0aW9uc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEi0KC29wdGlvbnNEYXRhGAIgAygLMhguYmx1ZWFwaS5hcGkuT3B0aW9uc0RhdGEi4wEKGkdldENvdmVyYWdlT25kZW1hbmRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZwZXJpb2QYAyABKAkSEAoIZnJvbURhdGUYBCABKAkSDgoGdG9EYXRlGAUgASgJEg8KB3BheWVySWQYBiABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYByABKAkSDwoHZ3JvdXBJZBgIIAEoCRITCgtjb3N0R3JvdXBJZBgJIAEoCRIQCghhY2NvdW50cxgKIAMoCRIQCghzZXJ2aWNlcxgLIAMoCSJdChtHZXRDb3ZlcmFnZU9uZGVtYW5kUmVzcG9uc2USDQoFb3JnSWQYASABKAkSLwoMb25kZW1hbmREYXRhGAIgAygLMhkuYmx1ZWFwaS5hcGkuT25kZW1hbmREYXRhIlQKGEdldEJyZWFrZXZlblBvaW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFb3JnSWQYAiABKAkSDAoEdHlwZRgDIAEoCRILCgNhcm4YBCABKAkiZwoZR2V0QnJlYWtldmVuUG9pbnRSZXNwb25zZRINCgVvcmdJZBgBIAEoCRI7ChBhd3NDb3N0QnJlYWtldmVuGAIgASgLMiEuYmx1ZWFwaS5hcGkuYXdzLkF3c0Nvc3RCcmVha2V2ZW4iKAoWTGlzdENvc3RGaWx0ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiUAoXTGlzdENvc3RGaWx0ZXJzUmVzcG9uc2USNQoLY29zdEZpbHRlcnMYASADKAsyIC5ibHVlYXBpLmNvc3QudjEuTGlzdENvc3RGaWx0ZXJzIqwBCg9MaXN0Q29zdEZpbHRlcnMSEAoIZmlsdGVySWQYASABKAkSEgoKZmlsdGVyTmFtZRgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHZ3JvdXBJZBgEIAEoCRIRCglhY2NvdW50SWQYBSABKAkSPwoKYXdzT3B0aW9ucxgGIAEoCzIrLmJsdWVhcGkuY29zdC52MS5SZWFkQ29zdHNSZXF1ZXN0QXdzT3B0aW9ucyKjAQoYQ3JlYXRlQ29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRISCgpmaWx0ZXJOYW1lGAIgASgJEg8KB2dyb3VwSWQYAyABKAkSEQoJYWNjb3VudElkGAQgASgJEj8KCmF3c09wdGlvbnMYBSABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMiLQoZQ3JlYXRlQ29zdEZpbHRlcnNSZXNwb25zZRIQCghmaWx0ZXJJZBgBIAEoCSK1AQoYVXBkYXRlQ29zdEZpbHRlcnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghmaWx0ZXJJZBgCIAEoCRISCgpmaWx0ZXJOYW1lGAMgASgJEg8KB2dyb3VwSWQYBCABKAkSEQoJYWNjb3VudElkGAUgASgJEj8KCmF3c09wdGlvbnMYBiABKAsyKy5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEF3c09wdGlvbnMiLQoZVXBkYXRlQ29zdEZpbHRlcnNSZXNwb25zZRIQCghmaWx0ZXJJZBgBIAEoCSI8ChhEZWxldGVDb3N0RmlsdGVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGZpbHRlcklkGAIgASgJIqcBChxFeHBvcnRDb3N0RmlsdGVyc0ZpbGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIQCghmaWx0ZXJJZBgCIAEoCRIRCglzdGFydFRpbWUYAyABKAkSDwoHZW5kVGltZRgEIAEoCRIUCgxncm91cEJ5TW9udGgYBSABKAgSFgoOZ3JvdXBCeUNvbHVtbnMYBiABKAkSEwoLaW5jbHVkZVRhZ3MYByABKAgiLAodRXhwb3J0Q29zdEZpbHRlcnNGaWxlUmVzcG9uc2USCwoDdXJsGAEgASgJIpICChpSZWFkQ29zdHNSZXF1ZXN0R2NwT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIUCgxncm91cEJ5TW9udGgYAiABKAgSFQoNZ3JvdXBBY2NvdW50cxgDIAEoCBJDCgdmaWx0ZXJzGAQgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLlJlYWRDb3N0c1JlcXVlc3RHY3BPcHRpb25zRmlsdGVycxIbChNpbmNsdWRlSW52b2ljZU1vbnRoGAYgASgIEhYKDmluY2x1ZGVDcmVkaXRzGAcgASgIEhAKCHJvdW5kaW5nGAggASgIEg8KB25vQ2FjaGUYBSABKAgSEgoKdG9DdXJyZW5jeRgJIAEoCSKuAQohUmVhZENvc3RzUmVxdWVzdEdjcE9wdGlvbnNGaWx0ZXJzElYKCmFuZEZpbHRlcnMYASADKAsyQi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdEdjcE9wdGlvbnNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI7Ch1HZXRBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkicgogQ3JlYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgoKAmlkGAIgASgJEjIKC2J1ZGdldEFsZXJ0GAMgASgLMh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCJyCiBVcGRhdGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSMgoLYnVkZ2V0QWxlcnQYAyABKAsyHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0Ij4KIERlbGV0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCSJxChxSZWFkQ29zdHNSZXF1ZXN0QXp1cmVPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhQKDGdyb3VwQnlNb250aBgCIAEoCBIPCgdub0NhY2hlGAMgASgIEhIKCnRvQ3VycmVuY3kYBCABKAkiqAMKDEJ1ZGdldEFsZXJ0cxIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSJgoIYWNjb3VudHMYAyADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50EkAKDG5vdGlmaWNhdGlvbhgEIAEoCzIqLmJsdWVhcGkuYXBpLkJ1ZGdldEFsZXJ0Tm90aWZpY2F0aW9uRGV0YWlsEiwKBWRhaWx5GAUgASgLMh0uYmx1ZWFwaS5hcGkuRGFpbHlCdWRnZXRBbGVydBI8CglkYWlseVJhdGUYByABKAsyKS5ibHVlYXBpLmFwaS5EYWlseVJhdGVJbmNyZWFzZUJ1ZGdldEFsZXJ0EjAKB21vbnRobHkYBiABKAsyHy5ibHVlYXBpLmFwaS5Nb250aGx5QnVkZ2V0QWxlcnQSOgoMY3VzdG9tUGVyaW9kGAggASgLMiQuYmx1ZWFwaS5hcGkuQ3VzdG9tUGVyaW9kQnVkZ2V0QWxlcnQSOAoLY3VzdG9tTW9udGgYCSABKAsyIy5ibHVlYXBpLmFwaS5DdXN0b21Nb250aEJ1ZGdldEFsZXJ0IkkKF1JlYWRCdWRnZXRBbGVydHNSZXF1ZXN0Ei4KCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIiQKFkdldEJ1ZGdldEFsZXJ0c1JlcXVlc3QSCgoCaWQYASABKAkijQMKGUNyZWF0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhAKCGFjY291bnRzGAIgAygJEjoKDG5vdGlmaWNhdGlvbhgDIAEoCzIkLmJsdWVhcGkuYXBpLkJ1ZGdldEFsZXJ0Tm90aWZpY2F0aW9uEiwKBWRhaWx5GAQgASgLMh0uYmx1ZWFwaS5hcGkuRGFpbHlCdWRnZXRBbGVydBI8CglkYWlseVJhdGUYBiABKAsyKS5ibHVlYXBpLmFwaS5EYWlseVJhdGVJbmNyZWFzZUJ1ZGdldEFsZXJ0EjAKB21vbnRobHkYBSABKAsyHy5ibHVlYXBpLmFwaS5Nb250aGx5QnVkZ2V0QWxlcnQSOgoMY3VzdG9tUGVyaW9kGAcgASgLMiQuYmx1ZWFwaS5hcGkuQ3VzdG9tUGVyaW9kQnVkZ2V0QWxlcnQSOAoLY3VzdG9tTW9udGgYCCABKAsyIy5ibHVlYXBpLmFwaS5DdXN0b21Nb250aEJ1ZGdldEFsZXJ0IpkDChlVcGRhdGVCdWRnZXRBbGVydHNSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghhY2NvdW50cxgDIAMoCRI6Cgxub3RpZmljYXRpb24YBCABKAsyJC5ibHVlYXBpLmFwaS5CdWRnZXRBbGVydE5vdGlmaWNhdGlvbhIsCgVkYWlseRgFIAEoCzIdLmJsdWVhcGkuYXBpLkRhaWx5QnVkZ2V0QWxlcnQSPAoJZGFpbHlSYXRlGAcgASgLMikuYmx1ZWFwaS5hcGkuRGFpbHlSYXRlSW5jcmVhc2VCdWRnZXRBbGVydBIwCgdtb250aGx5GAYgASgLMh8uYmx1ZWFwaS5hcGkuTW9udGhseUJ1ZGdldEFsZXJ0EjoKDGN1c3RvbVBlcmlvZBgIIAEoCzIkLmJsdWVhcGkuYXBpLkN1c3RvbVBlcmlvZEJ1ZGdldEFsZXJ0EjgKC2N1c3RvbU1vbnRoGAkgASgLMiMuYmx1ZWFwaS5hcGkuQ3VzdG9tTW9udGhCdWRnZXRBbGVydCInChlEZWxldGVCdWRnZXRBbGVydHNSZXF1ZXN0EgoKAmlkGAEgASgJIjoKFENoZWNrQWNjb3VudHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRISCgphY2NvdW50SWRzGAIgAygJIooBChVDaGVja0FjY291bnRzUmVzcG9uc2USQgoGZXhpc3RzGAEgAygLMjIuYmx1ZWFwaS5jb3N0LnYxLkNoZWNrQWNjb3VudHNSZXNwb25zZS5FeGlzdHNFbnRyeRotCgtFeGlzdHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIjYKFVJlYWRJbnZvaWNlSWRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAkiJAoWUmVhZEludm9pY2VJZHNSZXNwb25zZRIKCgJpZBgBIAEoCSKwAQoLUGVyaW9kUmFuZ2USLwoEdW5pdBgBIAEoDjIhLmJsdWVhcGkuY29zdC52MS5QZXJpb2RSYW5nZS5Vbml0EgwKBHllYXIYAiABKA0SEAoIc3RhcnRpbmcYAyABKA0SEAoIZHVyYXRpb24YBCABKA0iPgoEVW5pdBIUChBVTklUX1VOU1BFQ0lGSUVEEAASCQoFTU9OVEgQARILCgdRVUFSVEVSEAISCAoEWUVBUhADIqABChtSZWFkSW52b2ljZU92ZXJ2aWV3c1JlcXVlc3QSEQoJc3RhcnRUaW1lGAEgASgJEg8KB2VuZFRpbWUYAiABKAkSFgoOdXNlUGVyaW9kUmFuZ2UYBCABKAgSMQoLcGVyaW9kUmFuZ2UYBSABKAsyHC5ibHVlYXBpLmNvc3QudjEuUGVyaW9kUmFuZ2USEgoKdG9DdXJyZW5jeRgDIAEoCSJRChdSZWFkSW52b2ljZUNvc3RzUmVxdWVzdBIRCglzdGFydFRpbWUYASABKAkSDwoHZW5kVGltZRgCIAEoCRISCgp0b0N1cnJlbmN5GAMgASgJImUKHFJlYWRJbnZvaWNlR3JvdXBDb3N0c1JlcXVlc3QSEQoJc3RhcnRUaW1lGAEgASgJEg8KB2VuZFRpbWUYAiABKAkSEgoKdG9DdXJyZW5jeRgDIAEoCRINCgVsaW1pdBgEIAEoBSI1CiNSZWFkQWNjb3VudE9yaWdpbmFsUmVzb3VyY2VzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkicwobUmVnaXN0ZXJQYXllckFjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2N1clR5cGUYBCABKAkSGQoRY2FsY3VsYXRlVFVQcm9maXQYBSABKAgicQoZVXBkYXRlUGF5ZXJBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIPCgdjdXJUeXBlGAQgASgJEhkKEWNhbGN1bGF0ZVRVUHJvZml0GAUgASgIIkQKI0xpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSKVAQoXQ2FsY3VsYXRpb25QcmVyZXF1aXNpdGUSEgoKaW52b2ljZV9pZBgBIAEoCRIQCghwYXllcl9pZBgCIAEoCRIVCg1leGNoYW5nZV9yYXRlGAMgASgBEh0KFXVuYmxlbmRlZF9jb3N0X2luX2N1chgEIAEoARIMCgRuYW1lGAUgASgJEhAKCGN1cl90eXBlGAYgASgJImcKJExpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXNSZXNwb25zZRI/Cg1wcmVyZXF1aXNpdGVzGAEgAygLMiguYmx1ZWFwaS5jb3N0LnYxLkNhbGN1bGF0aW9uUHJlcmVxdWlzaXRlMq5QCgRDb3N0EnMKEUxpc3RQYXllckFjY291bnRzEikuYmx1ZWFwaS5jb3N0LnYxLkxpc3RQYXllckFjY291bnRzUmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiG4LT5JMCFRITL3YxL3t2ZW5kb3J9L3BheWVyczABEncKD0dldFBheWVyQWNjb3VudBInLmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRSZXF1ZXN0GhkuYmx1ZWFwaS5hcGkucmlwcGxlLlBheWVyIiCC0+STAhoSGC92MS97dmVuZG9yfS9wYXllcnMve2lkfRKVAQoZTGlzdFBheWVyQWNjb3VudHNFeHRlbmRlZBIpLmJsdWVhcGkuY29zdC52MS5MaXN0UGF5ZXJBY2NvdW50c1JlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuUGF5ZXJBY2NvdW50RXh0ZW5kZWQiJILT5JMCHhIcL3YxL3t2ZW5kb3J9L3BheWVycy9leHRlbmRlZDABEpQBChdHZXRQYXllckFjY291bnRFeHRlbmRlZBInLmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRSZXF1ZXN0GiUuYmx1ZWFwaS5jb3N0LnYxLlBheWVyQWNjb3VudEV4dGVuZGVkIimC0+STAiMSIS92MS97dmVuZG9yfS9wYXllcnMve2lkfS9leHRlbmRlZBK9AQocR2V0UGF5ZXJBY2NvdW50SW1wb3J0SGlzdG9yeRI0LmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRJbXBvcnRIaXN0b3J5UmVxdWVzdBo1LmJsdWVhcGkuY29zdC52MS5HZXRQYXllckFjY291bnRJbXBvcnRIaXN0b3J5UmVzcG9uc2UiLoLT5JMCKBImL3YxL3t2ZW5kb3J9L3BheWVycy97aWR9L2ltcG9ydGhpc3RvcnkwARKnAQoXR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHMSLy5ibHVlYXBpLmNvc3QudjEuR2V0UGF5ZXJQcm9mb3JtYVJlcG9ydHNSZXF1ZXN0GjAuYmx1ZWFwaS5jb3N0LnYxLkdldFBheWVyUHJvZm9ybWFSZXBvcnRzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL3t2ZW5kb3J9L3BheWVycy97aWR9L3Byb2Zvcm1hEnYKEkNyZWF0ZVBheWVyQWNjb3VudBIqLmJsdWVhcGkuY29zdC52MS5DcmVhdGVQYXllckFjY291bnRSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuQWNjb3VudCIegtPkkwIYOgEqIhMvdjEve3ZlbmRvcn0vcGF5ZXJzEokBChRSZWdpc3RlclBheWVyQWNjb3VudBIsLmJsdWVhcGkuY29zdC52MS5SZWdpc3RlclBheWVyQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiK4LT5JMCJToBKiIgL3YxL3t2ZW5kb3J9L3BheWVycy9iYXNpY2RldGFpbHMSigEKElVwZGF0ZVBheWVyQWNjb3VudBIqLmJsdWVhcGkuY29zdC52MS5VcGRhdGVQYXllckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAio6ASoaJS92MS97dmVuZG9yfS9wYXllcnMvYmFzaWNkZXRhaWxzL3tpZH0SegoSRGVsZXRlUGF5ZXJBY2NvdW50EiouYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZVBheWVyQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGioYL3YxL3t2ZW5kb3J9L3BheWVycy97aWR9EpUBCgxMaXN0QWNjb3VudHMSJC5ibHVlYXBpLmNvc3QudjEuTGlzdEFjY291bnRzUmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiR4LT5JMCQVooEiYvdjEve3ZlbmRvcn0vYWNjb3VudHMvZ3JvdXBzL3tncm91cElkfRIVL3YxL3t2ZW5kb3J9L2FjY291bnRzMAESagoKR2V0QWNjb3VudBIiLmJsdWVhcGkuY29zdC52MS5HZXRBY2NvdW50UmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiIoLT5JMCHBIaL3YxL3t2ZW5kb3J9L2FjY291bnRzL3tpZH0SbgoNQ3JlYXRlQWNjb3VudBIlLmJsdWVhcGkuY29zdC52MS5DcmVhdGVBY2NvdW50UmVxdWVzdBoULmJsdWVhcGkuYXBpLkFjY291bnQiIILT5JMCGjoBKiIVL3YxL3t2ZW5kb3J9L2FjY291bnRzEnMKDVVwZGF0ZUFjY291bnQSJS5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQWNjb3VudFJlcXVlc3QaFC5ibHVlYXBpLmFwaS5BY2NvdW50IiWC0+STAh86ASoaGi92MS97dmVuZG9yfS9hY2NvdW50cy97aWR9EnIKDURlbGV0ZUFjY291bnQSJS5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIoLT5JMCHCoaL3YxL3t2ZW5kb3J9L2FjY291bnRzL3tpZH0SnwEKHFJlYWRBY2NvdW50T3JpZ2luYWxSZXNvdXJjZXMSNC5ibHVlYXBpLmNvc3QudjEuUmVhZEFjY291bnRPcmlnaW5hbFJlc291cmNlc1JlcXVlc3QaJC5ibHVlYXBpLmFwaS5BY2NvdW50T3JpZ2luYWxSZXNvdXJjZSIhgtPkkwIbOgEqIhYvdjEve3ZlbmRvcn0vYW9yczpyZWFkMAEShQEKCExpc3RUYWdzEiAuYmx1ZWFwaS5jb3N0LnYxLkxpc3RUYWdzUmVxdWVzdBoULmJsdWVhcGkuYXBpLkNvc3RUYWciP4LT5JMCOVokEiIvdjEve3ZlbmRvcn0vdGFncy9ncm91cHMve2dyb3VwSWR9EhEvdjEve3ZlbmRvcn0vdGFnczABEsEBCh1MaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50cxI1LmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRvclJ1bm5pbmdBY2NvdW50c1JlcXVlc3QaNi5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0b3JSdW5uaW5nQWNjb3VudHNSZXNwb25zZSIvgtPkkwIpOgEqIiQvdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9ydW5uaW5nOnJlYWQwARKYAQoTR2V0Q2FsY3VsYXRvckNvbmZpZxIrLmJsdWVhcGkuY29zdC52MS5HZXRDYWxjdWxhdG9yQ29uZmlnUmVxdWVzdBosLmJsdWVhcGkuY29zdC52MS5HZXRDYWxjdWxhdG9yQ29uZmlnUmVzcG9uc2UiJoLT5JMCIBIeL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvY29uZmlnEq4BChtMaXN0Q2FsY3VsYXRvckNvc3RNb2RpZmllcnMSMy5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0b3JDb3N0TW9kaWZpZXJzUmVxdWVzdBonLmJsdWVhcGkuY29zdC52MS5DYWxjdWxhdG9yQ29zdE1vZGlmaWVyIi+C0+STAikSJy92MS97dmVuZG9yfS9jYWxjdWxhdG9yL2NvbmZpZy9jb3N0bW9kczABEr8BChxDcmVhdGVDYWxjdWxhdG9yQ29zdE1vZGlmaWVyEjQuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXF1ZXN0GjUuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXJSZXNwb25zZSIygtPkkwIsOgEqIicvdjEve3ZlbmRvcn0vY2FsY3VsYXRvci9jb25maWcvY29zdG1vZHMSogEKHERlbGV0ZUNhbGN1bGF0b3JDb3N0TW9kaWZpZXISNC5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQ2FsY3VsYXRvckNvc3RNb2RpZmllclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiNILT5JMCLiosL3YxL3t2ZW5kb3J9L2NhbGN1bGF0b3IvY29uZmlnL2Nvc3Rtb2RzL3tpZH0SagoOSW1wb3J0Q3VyRmlsZXMSJi5ibHVlYXBpLmNvc3QudjEuSW1wb3J0Q3VyRmlsZXNSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIdgtPkkwIXOgEqIhIvdjEvYXdzL2N1cjppbXBvcnQSdAoOQ2FsY3VsYXRlQ29zdHMSJi5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRlQ29zdHNSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIngtPkkwIhOgEqIhwvdjEve3ZlbmRvcn0vY29zdHM6Y2FsY3VsYXRlEqcBChdMaXN0Q2FsY3VsYXRpb25zSGlzdG9yeRIvLmJsdWVhcGkuY29zdC52MS5MaXN0Q2FsY3VsYXRpb25zSGlzdG9yeVJlcXVlc3QaMC5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc0hpc3RvcnlSZXNwb25zZSIpgtPkkwIjEiEvdjEve3ZlbmRvcn0vY2FsY3VsYXRpb25zL2hpc3RvcnkSrwEKGUxpc3RDYWxjdWxhdGlvbnNTY2hlZHVsZXMSMS5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1JlcXVlc3QaMi5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uc1NjaGVkdWxlc1Jlc3BvbnNlIiuC0+STAiUSIy92MS97dmVuZG9yfS9jYWxjdWxhdGlvbnMvc2NoZWR1bGVzEqcBChpDcmVhdGVDYWxjdWxhdGlvbnNTY2hlZHVsZRIyLmJsdWVhcGkuY29zdC52MS5DcmVhdGVDYWxjdWxhdGlvbnNTY2hlZHVsZVJlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuQ2FsY3VsYXRpb25zU2NoZWR1bGUiLoLT5JMCKDoBKiIjL3YxL3t2ZW5kb3J9L2NhbGN1bGF0aW9ucy9zY2hlZHVsZXMSmgEKGkRlbGV0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlEjIuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUNhbGN1bGF0aW9uc1NjaGVkdWxlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqKigvdjEve3ZlbmRvcn0vY2FsY3VsYXRpb25zL3NjaGVkdWxlcy97aWR9EoYBCg9MaXN0Q29zdEZpbHRlcnMSJy5ibHVlYXBpLmNvc3QudjEuTGlzdENvc3RGaWx0ZXJzUmVxdWVzdBooLmJsdWVhcGkuY29zdC52MS5MaXN0Q29zdEZpbHRlcnNSZXNwb25zZSIggtPkkwIaEhgvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMSjwEKEUNyZWF0ZUNvc3RGaWx0ZXJzEikuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUNvc3RGaWx0ZXJzUmVxdWVzdBoqLmJsdWVhcGkuY29zdC52MS5DcmVhdGVDb3N0RmlsdGVyc1Jlc3BvbnNlIiOC0+STAh06ASoiGC92MS97dmVuZG9yfS9jb3N0ZmlsdGVycxKaAQoRVXBkYXRlQ29zdEZpbHRlcnMSKS5ibHVlYXBpLmNvc3QudjEuVXBkYXRlQ29zdEZpbHRlcnNSZXF1ZXN0GiouYmx1ZWFwaS5jb3N0LnYxLlVwZGF0ZUNvc3RGaWx0ZXJzUmVzcG9uc2UiLoLT5JMCKDoBKhojL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzL3tmaWx0ZXJJZH0SgwEKEURlbGV0ZUNvc3RGaWx0ZXJzEikuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUNvc3RGaWx0ZXJzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIrgtPkkwIlKiMvdjEve3ZlbmRvcn0vY29zdGZpbHRlcnMve2ZpbHRlcklkfRKtAQoVRXhwb3J0Q29zdEZpbHRlcnNGaWxlEi0uYmx1ZWFwaS5jb3N0LnYxLkV4cG9ydENvc3RGaWx0ZXJzRmlsZVJlcXVlc3QaLi5ibHVlYXBpLmNvc3QudjEuRXhwb3J0Q29zdEZpbHRlcnNGaWxlUmVzcG9uc2UiNYLT5JMCLzoBKiIqL3YxL3t2ZW5kb3J9L2Nvc3RmaWx0ZXJzL3tmaWx0ZXJJZH06ZXhwb3J0Eo4BChJSZWFkQ29zdEF0dHJpYnV0ZXMSKi5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RBdHRyaWJ1dGVzUmVxdWVzdBoiLmJsdWVhcGkuY29zdC52MS5Db3N0QXR0cmlidXRlSXRlbSImgtPkkwIgOgEqIhsvdjEve3ZlbmRvcn0vY29zdGF0dHJzOnJlYWQwARKKAQoRR2V0Q29zdEF0dHJpYnV0ZXMSKS5ibHVlYXBpLmNvc3QudjEuR2V0Q29zdEF0dHJpYnV0ZXNSZXF1ZXN0GiouYmx1ZWFwaS5jb3N0LnYxLkdldENvc3RBdHRyaWJ1dGVzUmVzcG9uc2UiHoLT5JMCGBIWL3YxL3t2ZW5kb3J9L2Nvc3RhdHRycxJvCglSZWFkQ29zdHMSIS5ibHVlYXBpLmNvc3QudjEuUmVhZENvc3RzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIigtPkkwIcOgEqIhcvdjEve3ZlbmRvcn0vY29zdHM6cmVhZDABEoEBCg9SZWFkQWRqdXN0bWVudHMSJy5ibHVlYXBpLmNvc3QudjEuUmVhZEFkanVzdG1lbnRzUmVxdWVzdBoZLmJsdWVhcGkuY29zdC52MS5Db3N0SXRlbSIogtPkkwIiOgEqIh0vdjEve3ZlbmRvcn0vYWRqdXN0bWVudHM6cmVhZDABEngKDFJlYWRUYWdDb3N0cxIkLmJsdWVhcGkuY29zdC52MS5SZWFkVGFnQ29zdHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiWC0+STAh86ASoiGi92MS97dmVuZG9yfS90YWdjb3N0czpyZWFkMAESgQEKD1JlYWROb25UYWdDb3N0cxInLmJsdWVhcGkuY29zdC52MS5SZWFkTm9uVGFnQ29zdHNSZXF1ZXN0GhkuYmx1ZWFwaS5jb3N0LnYxLkNvc3RJdGVtIiiC0+STAiI6ASoiHS92MS97dmVuZG9yfS9ub250YWdjb3N0czpyZWFkMAESewoMR2V0Rm9yZWNhc3RzEiQuYmx1ZWFwaS5jb3N0LnYxLkdldEZvcmVjYXN0c1JlcXVlc3QaJS5ibHVlYXBpLmNvc3QudjEuR2V0Rm9yZWNhc3RzUmVzcG9uc2UiHoLT5JMCGBIWL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cxKuAQoWR2V0TW9udGhseUNvc3RGb3JlY2FzdBIuLmJsdWVhcGkuY29zdC52MS5HZXRNb250aGx5Q29zdEZvcmVjYXN0UmVxdWVzdBovLmJsdWVhcGkuY29zdC52MS5HZXRNb250aGx5Q29zdEZvcmVjYXN0UmVzcG9uc2UiM4LT5JMCLRIrL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cy9tb250aGx5L3tsZXZlbH0ve2lkfRLEAQobR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0EjMuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoT25Nb250aENvc3RGb3JlY2FzdFJlcXVlc3QaNC5ibHVlYXBpLmNvc3QudjEuR2V0TW9udGhPbk1vbnRoQ29zdEZvcmVjYXN0UmVzcG9uc2UiOoLT5JMCNBIyL3YxL3t2ZW5kb3J9L2ZvcmVjYXN0cy9tb250aC1vbi1tb250aC97bGV2ZWx9L3tpZH0SwAEKGkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0EjIuYmx1ZWFwaS5jb3N0LnYxLkdldE1vbnRoVG9EYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBozLmJsdWVhcGkuY29zdC52MS5HZXRNb250aFRvRGF0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlIjmC0+STAjMSMS92MS97dmVuZG9yfS9mb3JlY2FzdHMvbW9udGgtdG8tZGF0ZS97bGV2ZWx9L3tpZH0SkQEKEEdldEFjY291bnRCdWRnZXQSKC5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudEJ1ZGdldFJlcXVlc3QaKS5ibHVlYXBpLmNvc3QudjEuR2V0QWNjb3VudEJ1ZGdldFJlc3BvbnNlIiiC0+STAiISIC92MS97dmVuZG9yfS9idWRnZXQve2xldmVsfS97aWR9Ep0BChNDcmVhdGVBY2NvdW50QnVkZ2V0EisuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRCdWRnZXRSZXF1ZXN0GiwuYmx1ZWFwaS5jb3N0LnYxLkNyZWF0ZUFjY291bnRCdWRnZXRSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEve3ZlbmRvcn0vYnVkZ2V0L3tsZXZlbH0ve2lkfRKFAQoTVXBkYXRlQWNjb3VudEJ1ZGdldBIrLmJsdWVhcGkuY29zdC52MS5VcGRhdGVBY2NvdW50QnVkZ2V0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIpgtPkkwIjOgEqGh4vdjEve3ZlbmRvcn0vYnVkZ2V0L3tidWRnZXRJZH0SggEKE0RlbGV0ZUFjY291bnRCdWRnZXQSKy5ibHVlYXBpLmNvc3QudjEuRGVsZXRlQWNjb3VudEJ1ZGdldFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJoLT5JMCICoeL3YxL3t2ZW5kb3J9L2J1ZGdldC97YnVkZ2V0SWR9EokBChZHZXRBY2NvdW50QnVkZ2V0QWxlcnRzEi4uYmx1ZWFwaS5jb3N0LnYxLkdldEFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkud2F2ZS5CdWRnZXRBbGVydCIggtPkkwIaEhgvdjEve3ZlbmRvcn0vYWxlcnRzL3tpZH0SkgEKGUNyZWF0ZUFjY291bnRCdWRnZXRBbGVydHMSMS5ibHVlYXBpLmNvc3QudjEuQ3JlYXRlQWNjb3VudEJ1ZGdldEFsZXJ0c1JlcXVlc3QaHS5ibHVlYXBpLmFwaS53YXZlLkJ1ZGdldEFsZXJ0IiOC0+STAh06ASoiGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRKSAQoZVXBkYXRlQWNjb3VudEJ1ZGdldEFsZXJ0cxIxLmJsdWVhcGkuY29zdC52MS5VcGRhdGVBY2NvdW50QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuYXBpLndhdmUuQnVkZ2V0QWxlcnQiI4LT5JMCHToBKhoYL3YxL3t2ZW5kb3J9L2FsZXJ0cy97aWR9EogBChlEZWxldGVBY2NvdW50QnVkZ2V0QWxlcnRzEjEuYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUFjY291bnRCdWRnZXRBbGVydHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAhoqGC92MS97dmVuZG9yfS9hbGVydHMve2lkfRJ5ChBSZWFkQnVkZ2V0QWxlcnRzEiguYmx1ZWFwaS5jb3N0LnYxLlJlYWRCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIagtPkkwIUOgEqIg8vdjEvYWxlcnRzOnJlYWQwARJyCg9HZXRCdWRnZXRBbGVydHMSJy5ibHVlYXBpLmNvc3QudjEuR2V0QnVkZ2V0QWxlcnRzUmVxdWVzdBodLmJsdWVhcGkuY29zdC52MS5CdWRnZXRBbGVydHMiF4LT5JMCERIPL3YxL2FsZXJ0cy97aWR9EnYKEkNyZWF0ZUJ1ZGdldEFsZXJ0cxIqLmJsdWVhcGkuY29zdC52MS5DcmVhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIVgtPkkwIPOgEqIgovdjEvYWxlcnRzEnsKElVwZGF0ZUJ1ZGdldEFsZXJ0cxIqLmJsdWVhcGkuY29zdC52MS5VcGRhdGVCdWRnZXRBbGVydHNSZXF1ZXN0Gh0uYmx1ZWFwaS5jb3N0LnYxLkJ1ZGdldEFsZXJ0cyIagtPkkwIUOgEqGg8vdjEvYWxlcnRzL3tpZH0ScQoSRGVsZXRlQnVkZ2V0QWxlcnRzEiouYmx1ZWFwaS5jb3N0LnYxLkRlbGV0ZUJ1ZGdldEFsZXJ0c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiF4LT5JMCESoPL3YxL2FsZXJ0cy97aWR9EqMBChJHZXRSZWNvbW1lbmRhdGlvbnMSKi5ibHVlYXBpLmNvc3QudjEuR2V0UmVjb21tZW5kYXRpb25zUmVxdWVzdBorLmJsdWVhcGkuY29zdC52MS5HZXRSZWNvbW1lbmRhdGlvbnNSZXNwb25zZSI0gtPkkwIuOgEqIikvdjEve3ZlbmRvcn0vcmVjb21tZW5kYXRpb25zL3tvcmdJZH06cmVhZBKXAQoQR2V0Q29zdFJlZHVjdGlvbhIoLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0UmVkdWN0aW9uUmVxdWVzdBopLmJsdWVhcGkuY29zdC52MS5HZXRDb3N0UmVkdWN0aW9uUmVzcG9uc2UiLoLT5JMCKDoBKiIjL3YxL3t2ZW5kb3J9L3JlZHVjdGlvbi97b3JnSWR9OnJlYWQShgEKDUdldEV4cG9ydFJJU1ASJS5ibHVlYXBpLmNvc3QudjEuR2V0RXhwb3J0UklTUFJlcXVlc3QaJi5ibHVlYXBpLmNvc3QudjEuR2V0RXhwb3J0UklTUFJlc3BvbnNlIiaC0+STAiA6ASoiGy92MS9leHBvcnRjc3YvcGF5ZXJzOmV4cG9ydBKLAQoOR2V0VXRpbGl6YXRpb24SJi5ibHVlYXBpLmNvc3QudjEuR2V0VXRpbGl6YXRpb25SZXF1ZXN0GicuYmx1ZWFwaS5jb3N0LnYxLkdldFV0aWxpemF0aW9uUmVzcG9uc2UiKILT5JMCIhIgL3YxL3t2ZW5kb3J9L3V0aWxpemF0aW9uL3tvcmdJZH0SpAEKEkdldENvdmVyYWdlT3B0aW9ucxIqLmJsdWVhcGkuY29zdC52MS5HZXRDb3ZlcmFnZU9wdGlvbnNSZXF1ZXN0GisuYmx1ZWFwaS5jb3N0LnYxLkdldENvdmVyYWdlT3B0aW9uc1Jlc3BvbnNlIjWC0+STAi86ASoiKi92MS97dmVuZG9yfS9jb3ZlcmFnZS9vcHRpb25zL3tvcmdJZH06cmVhZBKoAQoTR2V0Q292ZXJhZ2VPbmRlbWFuZBIrLmJsdWVhcGkuY29zdC52MS5HZXRDb3ZlcmFnZU9uZGVtYW5kUmVxdWVzdBosLmJsdWVhcGkuY29zdC52MS5HZXRDb3ZlcmFnZU9uZGVtYW5kUmVzcG9uc2UiNoLT5JMCMDoBKiIrL3YxL3t2ZW5kb3J9L2NvdmVyYWdlL29uZGVtYW5kL3tvcmdJZH06cmVhZBKMAQoRR2V0QnJlYWtldmVuUG9pbnQSKS5ibHVlYXBpLmNvc3QudjEuR2V0QnJlYWtldmVuUG9pbnRSZXF1ZXN0GiouYmx1ZWFwaS5jb3N0LnYxLkdldEJyZWFrZXZlblBvaW50UmVzcG9uc2UiIILT5JMCGhIYL3YxL3t2ZW5kb3J9L2JlcC97b3JnSWR9EqQBChhDaGVja0FjY291bnRzQmVsb25nVG9Nc3ASJS5ibHVlYXBpLmNvc3QudjEuQ2hlY2tBY2NvdW50c1JlcXVlc3QaJi5ibHVlYXBpLmNvc3QudjEuQ2hlY2tBY2NvdW50c1Jlc3BvbnNlIjmC0+STAjM6ASoiLi92MS97dmVuZG9yfS9hY2NvdW50cy9jdXN0b21lcnMvYWNjb3VudHM6Y2hlY2sSjAEKDlJlYWRJbnZvaWNlSWRzEiYuYmx1ZWFwaS5jb3N0LnYxLlJlYWRJbnZvaWNlSWRzUmVxdWVzdBonLmJsdWVhcGkuY29zdC52MS5SZWFkSW52b2ljZUlkc1Jlc3BvbnNlIieC0+STAiE6ASoiHC92MS97dmVuZG9yfS9pbnZvaWNlaWRzOnJlYWQwARKUAQoUUmVhZEludm9pY2VPdmVyVmlld3MSLC5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VPdmVydmlld3NSZXF1ZXN0GiYuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLk92ZXJWaWV3U2VjdGlvbiIkgtPkkwIeOgEqIhkvdjEvaW52b2ljZW92ZXJ2aWV3czpyZWFkMAEShQEKEFJlYWRJbnZvaWNlQ29zdHMSKC5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VDb3N0c1JlcXVlc3QaIy5ibHVlYXBpLmFwaS5yaXBwbGUudjEuVG90YWxTZWN0aW9uIiCC0+STAho6ASoiFS92MS9pbnZvaWNlY29zdHM6cmVhZDABEpsBChVSZWFkSW52b2ljZUdyb3VwQ29zdHMSLS5ibHVlYXBpLmNvc3QudjEuUmVhZEludm9pY2VHcm91cENvc3RzUmVxdWVzdBoqLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5CaWxsaW5nR3JvdXBTZWN0aW9uIiWC0+STAh86ASoiGi92MS9pbnZvaWNlZ3JvdXBjb3N0czpyZWFkMAESwwEKHExpc3RDYWxjdWxhdGlvblByZXJlcXVpc2l0ZXMSNC5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uUHJlcmVxdWlzaXRlc1JlcXVlc3QaNS5ibHVlYXBpLmNvc3QudjEuTGlzdENhbGN1bGF0aW9uUHJlcmVxdWlzaXRlc1Jlc3BvbnNlIjaC0+STAjASLi92MS97dmVuZG9yfS9jYWxjdWxhdGlvbi9wcmVyZXF1aXNpdGVzL3ttb250aH0ajQGSQYkBEjlDb3N0IEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2Nvc3QaTAoSU2VydmljZSBkZWZpbml0aW9uEjZodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS90cmVlL21haW4vY29zdC9C/AIKFmNsb3VkLmFscGhhdXMuYXBpLmNvc3RCCUNvc3RQcm90b1ojZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2Nvc3SSQbACEs4BChpBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZSJSChpBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZRI0aHR0cHM6Ly9hbHBoYXVzbGFicy5naXRodWIuaW8vYmx1ZWFwaS9hcGlzL2Nvc3QuaHRtbCpXChtMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSAyLjASOGh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2Jsb2IvbWFpbi9MSUNFTlNFMgMxLjByXQolTW9yZSBhYm91dCBBbHBoYXVzIEJsdWU6IENvc3QgU2VydmljZRI0aHR0cHM6Ly9hbHBoYXVzbGFicy5naXRodWIuaW8vYmx1ZWFwaS9hcGlzL2Nvc3QuaHRtbGIGcHJvdG8z", [file_api_account, file_api_coverage, file_api_budget, file_api_forecast, file_api_utilization, file_api_aws_breakeven, file_api_aws_cost, file_api_aws_calculator, file_api_aws_recommendation, file_api_aws_reduction, file_api_gcp_cost, file_api_azure_cost, file_api_ripple_payer, file_api_ripple_v1_dashboard, file_api_wave_budget, file_api_costtag, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
53
53
 
54
54
  /**
55
55
  * Request message for the Cost.ListPayerAccounts rpc.
@@ -109,6 +109,118 @@ export type GetPayerAccountRequest = Message<"blueapi.cost.v1.GetPayerAccountReq
109
109
  export const GetPayerAccountRequestSchema: GenMessage<GetPayerAccountRequest> = /*@__PURE__*/
110
110
  messageDesc(file_cost_v1_cost, 1);
111
111
 
112
+ /**
113
+ * Extended payer account information with additional metadata.
114
+ *
115
+ * @generated from message blueapi.cost.v1.PayerAccountExtended
116
+ */
117
+ export type PayerAccountExtended = Message<"blueapi.cost.v1.PayerAccountExtended"> & {
118
+ /**
119
+ * Standard payer account information includes: vendor, id, name, orgId, billingInternalId, and metadata array
120
+ *
121
+ * @generated from field: blueapi.api.ripple.Payer payer = 1;
122
+ */
123
+ payer?: Payer;
124
+
125
+ /**
126
+ * The target payer account ID (from extended response).
127
+ *
128
+ * @generated from field: string target = 2;
129
+ */
130
+ target: string;
131
+
132
+ /**
133
+ * The IAM role ARN for cost access (from payer.metadata or extended response).
134
+ *
135
+ * @generated from field: string roleArn = 3;
136
+ */
137
+ roleArn: string;
138
+
139
+ /**
140
+ * The external ID used for assuming the role (if applicable).
141
+ *
142
+ * @generated from field: string externalId = 4;
143
+ */
144
+ externalId: string;
145
+
146
+ /**
147
+ * The CloudFormation stack ID (if using stack-based deployment).
148
+ *
149
+ * @generated from field: string stackId = 5;
150
+ */
151
+ stackId: string;
152
+
153
+ /**
154
+ * The AWS region where the CloudFormation stack is deployed.
155
+ *
156
+ * @generated from field: string stackRegion = 6;
157
+ */
158
+ stackRegion: string;
159
+
160
+ /**
161
+ * The CloudFormation template URL used for deployment.
162
+ *
163
+ * @generated from field: string templateUrl = 7;
164
+ */
165
+ templateUrl: string;
166
+
167
+ /**
168
+ * The current status of the payer setup. Comma-separated values such as 'curOnly,manualExport', etc.
169
+ *
170
+ * @generated from field: string status = 8;
171
+ */
172
+ status: string;
173
+
174
+ /**
175
+ * The timestamp when the payer configuration was last updated in RFC3339 format.
176
+ *
177
+ * @generated from field: string lastUpdated = 9;
178
+ */
179
+ lastUpdated: string;
180
+
181
+ /**
182
+ * S3 bucket name (from payer.metadata).
183
+ *
184
+ * @generated from field: string bucketName = 10;
185
+ */
186
+ bucketName: string;
187
+
188
+ /**
189
+ * S3 prefix (from payer.metadata).
190
+ *
191
+ * @generated from field: string prefix = 11;
192
+ */
193
+ prefix: string;
194
+
195
+ /**
196
+ * CUR report name (from payer.metadata).
197
+ *
198
+ * @generated from field: string reportName = 12;
199
+ */
200
+ reportName: string;
201
+
202
+ /**
203
+ * Default cost access role ARN (from payer.metadata).
204
+ *
205
+ * @generated from field: string defaultCostAccessRoleArn = 13;
206
+ */
207
+ defaultCostAccessRoleArn: string;
208
+
209
+ /**
210
+ * The CUR type for AWS payers. Valid values are `legacy` and `2.0` (from payer.metadata).
211
+ *
212
+ * @generated from field: string curType = 14;
213
+ */
214
+ curType: string;
215
+ };
216
+
217
+ /**
218
+ * Describes the message blueapi.cost.v1.PayerAccountExtended.
219
+ * Use `create(PayerAccountExtendedSchema)` to create a new message.
220
+ */
221
+ export const PayerAccountExtendedSchema: GenMessage<PayerAccountExtended> = /*@__PURE__*/
222
+ messageDesc(file_cost_v1_cost, 2);
223
+
112
224
  /**
113
225
  * Request message for the Cost.GetPayerAccountImportHistory rpc.
114
226
  *
@@ -142,7 +254,7 @@ export type GetPayerAccountImportHistoryRequest = Message<"blueapi.cost.v1.GetPa
142
254
  * Use `create(GetPayerAccountImportHistoryRequestSchema)` to create a new message.
143
255
  */
144
256
  export const GetPayerAccountImportHistoryRequestSchema: GenMessage<GetPayerAccountImportHistoryRequest> = /*@__PURE__*/
145
- messageDesc(file_cost_v1_cost, 2);
257
+ messageDesc(file_cost_v1_cost, 3);
146
258
 
147
259
  /**
148
260
  * Response message for the Cost.GetPayerAccountImportHistory rpc.
@@ -177,7 +289,7 @@ export type GetPayerAccountImportHistoryResponse = Message<"blueapi.cost.v1.GetP
177
289
  * Use `create(GetPayerAccountImportHistoryResponseSchema)` to create a new message.
178
290
  */
179
291
  export const GetPayerAccountImportHistoryResponseSchema: GenMessage<GetPayerAccountImportHistoryResponse> = /*@__PURE__*/
180
- messageDesc(file_cost_v1_cost, 3);
292
+ messageDesc(file_cost_v1_cost, 4);
181
293
 
182
294
  /**
183
295
  * Request message for Cost.GetPayerProformaReports rpc.
@@ -205,7 +317,7 @@ export type GetPayerProformaReportsRequest = Message<"blueapi.cost.v1.GetPayerPr
205
317
  * Use `create(GetPayerProformaReportsRequestSchema)` to create a new message.
206
318
  */
207
319
  export const GetPayerProformaReportsRequestSchema: GenMessage<GetPayerProformaReportsRequest> = /*@__PURE__*/
208
- messageDesc(file_cost_v1_cost, 4);
320
+ messageDesc(file_cost_v1_cost, 5);
209
321
 
210
322
  /**
211
323
  * Response message for Cost.GetPayerProformaReports rpc.
@@ -224,7 +336,7 @@ export type GetPayerProformaReportsResponse = Message<"blueapi.cost.v1.GetPayerP
224
336
  * Use `create(GetPayerProformaReportsResponseSchema)` to create a new message.
225
337
  */
226
338
  export const GetPayerProformaReportsResponseSchema: GenMessage<GetPayerProformaReportsResponse> = /*@__PURE__*/
227
- messageDesc(file_cost_v1_cost, 5);
339
+ messageDesc(file_cost_v1_cost, 6);
228
340
 
229
341
  /**
230
342
  * @generated from message blueapi.cost.v1.ProformaReports
@@ -285,7 +397,7 @@ export type ProformaReports = Message<"blueapi.cost.v1.ProformaReports"> & {
285
397
  * Use `create(ProformaReportsSchema)` to create a new message.
286
398
  */
287
399
  export const ProformaReportsSchema: GenMessage<ProformaReports> = /*@__PURE__*/
288
- messageDesc(file_cost_v1_cost, 6);
400
+ messageDesc(file_cost_v1_cost, 7);
289
401
 
290
402
  /**
291
403
  * See [https://help.alphaus.cloud/en/articles/3612555-ripple-aws-things-you-need-to-prepare-before-starting] for more information.
@@ -343,7 +455,7 @@ export type CreatePayerAccountRequestAwsOptions = Message<"blueapi.cost.v1.Creat
343
455
  * Use `create(CreatePayerAccountRequestAwsOptionsSchema)` to create a new message.
344
456
  */
345
457
  export const CreatePayerAccountRequestAwsOptionsSchema: GenMessage<CreatePayerAccountRequestAwsOptions> = /*@__PURE__*/
346
- messageDesc(file_cost_v1_cost, 7);
458
+ messageDesc(file_cost_v1_cost, 8);
347
459
 
348
460
  /**
349
461
  * Request message for the Cost.CreatePayerAccount rpc.
@@ -371,7 +483,7 @@ export type CreatePayerAccountRequest = Message<"blueapi.cost.v1.CreatePayerAcco
371
483
  * Use `create(CreatePayerAccountRequestSchema)` to create a new message.
372
484
  */
373
485
  export const CreatePayerAccountRequestSchema: GenMessage<CreatePayerAccountRequest> = /*@__PURE__*/
374
- messageDesc(file_cost_v1_cost, 8);
486
+ messageDesc(file_cost_v1_cost, 9);
375
487
 
376
488
  /**
377
489
  * Request message for the Cost.DeletePayerAccount rpc.
@@ -399,7 +511,7 @@ export type DeletePayerAccountRequest = Message<"blueapi.cost.v1.DeletePayerAcco
399
511
  * Use `create(DeletePayerAccountRequestSchema)` to create a new message.
400
512
  */
401
513
  export const DeletePayerAccountRequestSchema: GenMessage<DeletePayerAccountRequest> = /*@__PURE__*/
402
- messageDesc(file_cost_v1_cost, 9);
514
+ messageDesc(file_cost_v1_cost, 10);
403
515
 
404
516
  /**
405
517
  * Request message for the Cost.ListAccounts rpc.
@@ -434,7 +546,7 @@ export type ListAccountsRequest = Message<"blueapi.cost.v1.ListAccountsRequest">
434
546
  * Use `create(ListAccountsRequestSchema)` to create a new message.
435
547
  */
436
548
  export const ListAccountsRequestSchema: GenMessage<ListAccountsRequest> = /*@__PURE__*/
437
- messageDesc(file_cost_v1_cost, 10);
549
+ messageDesc(file_cost_v1_cost, 11);
438
550
 
439
551
  /**
440
552
  * Request message for the Cost.GetAccount rpc.
@@ -469,7 +581,7 @@ export type GetAccountRequest = Message<"blueapi.cost.v1.GetAccountRequest"> & {
469
581
  * Use `create(GetAccountRequestSchema)` to create a new message.
470
582
  */
471
583
  export const GetAccountRequestSchema: GenMessage<GetAccountRequest> = /*@__PURE__*/
472
- messageDesc(file_cost_v1_cost, 11);
584
+ messageDesc(file_cost_v1_cost, 12);
473
585
 
474
586
  /**
475
587
  * AWS-specific options for registering an account.
@@ -490,7 +602,7 @@ export type CreateAccountRequestAwsOptions = Message<"blueapi.cost.v1.CreateAcco
490
602
  * Use `create(CreateAccountRequestAwsOptionsSchema)` to create a new message.
491
603
  */
492
604
  export const CreateAccountRequestAwsOptionsSchema: GenMessage<CreateAccountRequestAwsOptions> = /*@__PURE__*/
493
- messageDesc(file_cost_v1_cost, 12);
605
+ messageDesc(file_cost_v1_cost, 13);
494
606
 
495
607
  /**
496
608
  * GCP-specific options for registering an account.
@@ -518,7 +630,7 @@ export type CreateAccountRequestGcpOptions = Message<"blueapi.cost.v1.CreateAcco
518
630
  * Use `create(CreateAccountRequestGcpOptionsSchema)` to create a new message.
519
631
  */
520
632
  export const CreateAccountRequestGcpOptionsSchema: GenMessage<CreateAccountRequestGcpOptions> = /*@__PURE__*/
521
- messageDesc(file_cost_v1_cost, 13);
633
+ messageDesc(file_cost_v1_cost, 14);
522
634
 
523
635
  /**
524
636
  * Request message for the Cost.CreateAccount rpc.
@@ -574,7 +686,7 @@ export type CreateAccountRequest = Message<"blueapi.cost.v1.CreateAccountRequest
574
686
  * Use `create(CreateAccountRequestSchema)` to create a new message.
575
687
  */
576
688
  export const CreateAccountRequestSchema: GenMessage<CreateAccountRequest> = /*@__PURE__*/
577
- messageDesc(file_cost_v1_cost, 14);
689
+ messageDesc(file_cost_v1_cost, 15);
578
690
 
579
691
  /**
580
692
  * Request message for the Cost.UpdateAccount rpc.
@@ -609,7 +721,7 @@ export type UpdateAccountRequest = Message<"blueapi.cost.v1.UpdateAccountRequest
609
721
  * Use `create(UpdateAccountRequestSchema)` to create a new message.
610
722
  */
611
723
  export const UpdateAccountRequestSchema: GenMessage<UpdateAccountRequest> = /*@__PURE__*/
612
- messageDesc(file_cost_v1_cost, 15);
724
+ messageDesc(file_cost_v1_cost, 16);
613
725
 
614
726
  /**
615
727
  * Request message for the Cost.DeleteAccount rpc.
@@ -637,7 +749,7 @@ export type DeleteAccountRequest = Message<"blueapi.cost.v1.DeleteAccountRequest
637
749
  * Use `create(DeleteAccountRequestSchema)` to create a new message.
638
750
  */
639
751
  export const DeleteAccountRequestSchema: GenMessage<DeleteAccountRequest> = /*@__PURE__*/
640
- messageDesc(file_cost_v1_cost, 16);
752
+ messageDesc(file_cost_v1_cost, 17);
641
753
 
642
754
  /**
643
755
  * Request message for the Cost.ListTags rpc.
@@ -672,7 +784,7 @@ export type ListTagsRequest = Message<"blueapi.cost.v1.ListTagsRequest"> & {
672
784
  * Use `create(ListTagsRequestSchema)` to create a new message.
673
785
  */
674
786
  export const ListTagsRequestSchema: GenMessage<ListTagsRequest> = /*@__PURE__*/
675
- messageDesc(file_cost_v1_cost, 17);
787
+ messageDesc(file_cost_v1_cost, 18);
676
788
 
677
789
  /**
678
790
  * Request message for the Cost.ListCalculatorRunningAccounts rpc.
@@ -700,7 +812,7 @@ export type ListCalculatorRunningAccountsRequest = Message<"blueapi.cost.v1.List
700
812
  * Use `create(ListCalculatorRunningAccountsRequestSchema)` to create a new message.
701
813
  */
702
814
  export const ListCalculatorRunningAccountsRequestSchema: GenMessage<ListCalculatorRunningAccountsRequest> = /*@__PURE__*/
703
- messageDesc(file_cost_v1_cost, 18);
815
+ messageDesc(file_cost_v1_cost, 19);
704
816
 
705
817
  /**
706
818
  * Response message for the Cost.ListCalculatorRunningAccounts rpc.
@@ -721,7 +833,7 @@ export type ListCalculatorRunningAccountsResponse = Message<"blueapi.cost.v1.Lis
721
833
  * Use `create(ListCalculatorRunningAccountsResponseSchema)` to create a new message.
722
834
  */
723
835
  export const ListCalculatorRunningAccountsResponseSchema: GenMessage<ListCalculatorRunningAccountsResponse> = /*@__PURE__*/
724
- messageDesc(file_cost_v1_cost, 19);
836
+ messageDesc(file_cost_v1_cost, 20);
725
837
 
726
838
  /**
727
839
  * @generated from message blueapi.cost.v1.ListCalculatorRunningAccountsResponse.AwsRunningAccount
@@ -761,7 +873,7 @@ export type ListCalculatorRunningAccountsResponse_AwsRunningAccount = Message<"b
761
873
  * Use `create(ListCalculatorRunningAccountsResponse_AwsRunningAccountSchema)` to create a new message.
762
874
  */
763
875
  export const ListCalculatorRunningAccountsResponse_AwsRunningAccountSchema: GenMessage<ListCalculatorRunningAccountsResponse_AwsRunningAccount> = /*@__PURE__*/
764
- messageDesc(file_cost_v1_cost, 19, 0);
876
+ messageDesc(file_cost_v1_cost, 20, 0);
765
877
 
766
878
  /**
767
879
  * Request message for the Cost.GetCalculatorConfig rpc.
@@ -782,7 +894,7 @@ export type GetCalculatorConfigRequest = Message<"blueapi.cost.v1.GetCalculatorC
782
894
  * Use `create(GetCalculatorConfigRequestSchema)` to create a new message.
783
895
  */
784
896
  export const GetCalculatorConfigRequestSchema: GenMessage<GetCalculatorConfigRequest> = /*@__PURE__*/
785
- messageDesc(file_cost_v1_cost, 20);
897
+ messageDesc(file_cost_v1_cost, 21);
786
898
 
787
899
  /**
788
900
  * Response message for the Cost.GetCalculatorConfig rpc.
@@ -801,7 +913,7 @@ export type GetCalculatorConfigResponse = Message<"blueapi.cost.v1.GetCalculator
801
913
  * Use `create(GetCalculatorConfigResponseSchema)` to create a new message.
802
914
  */
803
915
  export const GetCalculatorConfigResponseSchema: GenMessage<GetCalculatorConfigResponse> = /*@__PURE__*/
804
- messageDesc(file_cost_v1_cost, 21);
916
+ messageDesc(file_cost_v1_cost, 22);
805
917
 
806
918
  /**
807
919
  * AWS-specific options definition.
@@ -862,7 +974,7 @@ export type CalculatorCostModifierAwsOptions = Message<"blueapi.cost.v1.Calculat
862
974
  * Use `create(CalculatorCostModifierAwsOptionsSchema)` to create a new message.
863
975
  */
864
976
  export const CalculatorCostModifierAwsOptionsSchema: GenMessage<CalculatorCostModifierAwsOptions> = /*@__PURE__*/
865
- messageDesc(file_cost_v1_cost, 22);
977
+ messageDesc(file_cost_v1_cost, 23);
866
978
 
867
979
  /**
868
980
  * A map of "key:value" attribute filters. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -883,7 +995,7 @@ export type CalculatorCostModifierAwsOptions_Qualifier = Message<"blueapi.cost.v
883
995
  * Use `create(CalculatorCostModifierAwsOptions_QualifierSchema)` to create a new message.
884
996
  */
885
997
  export const CalculatorCostModifierAwsOptions_QualifierSchema: GenMessage<CalculatorCostModifierAwsOptions_Qualifier> = /*@__PURE__*/
886
- messageDesc(file_cost_v1_cost, 22, 0);
998
+ messageDesc(file_cost_v1_cost, 23, 0);
887
999
 
888
1000
  /**
889
1001
  * @generated from message blueapi.cost.v1.CalculatorCostModifierAwsOptions.Modifier
@@ -927,7 +1039,7 @@ export type CalculatorCostModifierAwsOptions_Modifier = Message<"blueapi.cost.v1
927
1039
  * Use `create(CalculatorCostModifierAwsOptions_ModifierSchema)` to create a new message.
928
1040
  */
929
1041
  export const CalculatorCostModifierAwsOptions_ModifierSchema: GenMessage<CalculatorCostModifierAwsOptions_Modifier> = /*@__PURE__*/
930
- messageDesc(file_cost_v1_cost, 22, 1);
1042
+ messageDesc(file_cost_v1_cost, 23, 1);
931
1043
 
932
1044
  /**
933
1045
  * @generated from message blueapi.cost.v1.CalculatorCostModifierAwsOptions.Modifier.DescriptionModifier
@@ -969,7 +1081,7 @@ export type CalculatorCostModifierAwsOptions_Modifier_DescriptionModifier = Mess
969
1081
  * Use `create(CalculatorCostModifierAwsOptions_Modifier_DescriptionModifierSchema)` to create a new message.
970
1082
  */
971
1083
  export const CalculatorCostModifierAwsOptions_Modifier_DescriptionModifierSchema: GenMessage<CalculatorCostModifierAwsOptions_Modifier_DescriptionModifier> = /*@__PURE__*/
972
- messageDesc(file_cost_v1_cost, 22, 1, 0);
1084
+ messageDesc(file_cost_v1_cost, 23, 1, 0);
973
1085
 
974
1086
  /**
975
1087
  * Azure-specific options definition.
@@ -1037,7 +1149,7 @@ export type CalculatorCostModifierAzureOptions = Message<"blueapi.cost.v1.Calcul
1037
1149
  * Use `create(CalculatorCostModifierAzureOptionsSchema)` to create a new message.
1038
1150
  */
1039
1151
  export const CalculatorCostModifierAzureOptionsSchema: GenMessage<CalculatorCostModifierAzureOptions> = /*@__PURE__*/
1040
- messageDesc(file_cost_v1_cost, 23);
1152
+ messageDesc(file_cost_v1_cost, 24);
1041
1153
 
1042
1154
  /**
1043
1155
  * A map of "key:value" attribute filters. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -1058,7 +1170,7 @@ export type CalculatorCostModifierAzureOptions_Qualifier = Message<"blueapi.cost
1058
1170
  * Use `create(CalculatorCostModifierAzureOptions_QualifierSchema)` to create a new message.
1059
1171
  */
1060
1172
  export const CalculatorCostModifierAzureOptions_QualifierSchema: GenMessage<CalculatorCostModifierAzureOptions_Qualifier> = /*@__PURE__*/
1061
- messageDesc(file_cost_v1_cost, 23, 0);
1173
+ messageDesc(file_cost_v1_cost, 24, 0);
1062
1174
 
1063
1175
  /**
1064
1176
  * @generated from message blueapi.cost.v1.CalculatorCostModifierAzureOptions.Modifier
@@ -1100,7 +1212,7 @@ export type CalculatorCostModifierAzureOptions_Modifier = Message<"blueapi.cost.
1100
1212
  * Use `create(CalculatorCostModifierAzureOptions_ModifierSchema)` to create a new message.
1101
1213
  */
1102
1214
  export const CalculatorCostModifierAzureOptions_ModifierSchema: GenMessage<CalculatorCostModifierAzureOptions_Modifier> = /*@__PURE__*/
1103
- messageDesc(file_cost_v1_cost, 23, 1);
1215
+ messageDesc(file_cost_v1_cost, 24, 1);
1104
1216
 
1105
1217
  /**
1106
1218
  * @generated from message blueapi.cost.v1.CalculatorCostModifierAzureOptions.Modifier.DescriptionModifier
@@ -1133,7 +1245,7 @@ export type CalculatorCostModifierAzureOptions_Modifier_DescriptionModifier = Me
1133
1245
  * Use `create(CalculatorCostModifierAzureOptions_Modifier_DescriptionModifierSchema)` to create a new message.
1134
1246
  */
1135
1247
  export const CalculatorCostModifierAzureOptions_Modifier_DescriptionModifierSchema: GenMessage<CalculatorCostModifierAzureOptions_Modifier_DescriptionModifier> = /*@__PURE__*/
1136
- messageDesc(file_cost_v1_cost, 23, 1, 0);
1248
+ messageDesc(file_cost_v1_cost, 24, 1, 0);
1137
1249
 
1138
1250
  /**
1139
1251
  * @generated from message blueapi.cost.v1.CalculatorCostModifier
@@ -1170,7 +1282,7 @@ export type CalculatorCostModifier = Message<"blueapi.cost.v1.CalculatorCostModi
1170
1282
  * Use `create(CalculatorCostModifierSchema)` to create a new message.
1171
1283
  */
1172
1284
  export const CalculatorCostModifierSchema: GenMessage<CalculatorCostModifier> = /*@__PURE__*/
1173
- messageDesc(file_cost_v1_cost, 24);
1285
+ messageDesc(file_cost_v1_cost, 25);
1174
1286
 
1175
1287
  /**
1176
1288
  * Request message for the Cost.ListCalculatorCostModifiers rpc.
@@ -1191,7 +1303,7 @@ export type ListCalculatorCostModifiersRequest = Message<"blueapi.cost.v1.ListCa
1191
1303
  * Use `create(ListCalculatorCostModifiersRequestSchema)` to create a new message.
1192
1304
  */
1193
1305
  export const ListCalculatorCostModifiersRequestSchema: GenMessage<ListCalculatorCostModifiersRequest> = /*@__PURE__*/
1194
- messageDesc(file_cost_v1_cost, 25);
1306
+ messageDesc(file_cost_v1_cost, 26);
1195
1307
 
1196
1308
  /**
1197
1309
  * Request message for the Cost.CreateCalculatorCostModifier rpc.
@@ -1226,7 +1338,7 @@ export type CreateCalculatorCostModifierRequest = Message<"blueapi.cost.v1.Creat
1226
1338
  * Use `create(CreateCalculatorCostModifierRequestSchema)` to create a new message.
1227
1339
  */
1228
1340
  export const CreateCalculatorCostModifierRequestSchema: GenMessage<CreateCalculatorCostModifierRequest> = /*@__PURE__*/
1229
- messageDesc(file_cost_v1_cost, 26);
1341
+ messageDesc(file_cost_v1_cost, 27);
1230
1342
 
1231
1343
  /**
1232
1344
  * Response message for the Cost.CreateCalculatorCostModifier rpc.
@@ -1250,7 +1362,7 @@ export type CreateCalculatorCostModifierResponse = Message<"blueapi.cost.v1.Crea
1250
1362
  * Use `create(CreateCalculatorCostModifierResponseSchema)` to create a new message.
1251
1363
  */
1252
1364
  export const CreateCalculatorCostModifierResponseSchema: GenMessage<CreateCalculatorCostModifierResponse> = /*@__PURE__*/
1253
- messageDesc(file_cost_v1_cost, 27);
1365
+ messageDesc(file_cost_v1_cost, 28);
1254
1366
 
1255
1367
  /**
1256
1368
  * Request message for the Cost.DeleteCalculatorCostModifier rpc.
@@ -1278,7 +1390,7 @@ export type DeleteCalculatorCostModifierRequest = Message<"blueapi.cost.v1.Delet
1278
1390
  * Use `create(DeleteCalculatorCostModifierRequestSchema)` to create a new message.
1279
1391
  */
1280
1392
  export const DeleteCalculatorCostModifierRequestSchema: GenMessage<DeleteCalculatorCostModifierRequest> = /*@__PURE__*/
1281
- messageDesc(file_cost_v1_cost, 28);
1393
+ messageDesc(file_cost_v1_cost, 29);
1282
1394
 
1283
1395
  /**
1284
1396
  * Request message for the Cost.ImportCurFiles rpc.
@@ -1306,7 +1418,7 @@ export type ImportCurFilesRequest = Message<"blueapi.cost.v1.ImportCurFilesReque
1306
1418
  * Use `create(ImportCurFilesRequestSchema)` to create a new message.
1307
1419
  */
1308
1420
  export const ImportCurFilesRequestSchema: GenMessage<ImportCurFilesRequest> = /*@__PURE__*/
1309
- messageDesc(file_cost_v1_cost, 29);
1421
+ messageDesc(file_cost_v1_cost, 30);
1310
1422
 
1311
1423
  /**
1312
1424
  * Response message wrapper for cloud costs.
@@ -1335,7 +1447,7 @@ export type CostItem = Message<"blueapi.cost.v1.CostItem"> & {
1335
1447
  * Use `create(CostItemSchema)` to create a new message.
1336
1448
  */
1337
1449
  export const CostItemSchema: GenMessage<CostItem> = /*@__PURE__*/
1338
- messageDesc(file_cost_v1_cost, 30);
1450
+ messageDesc(file_cost_v1_cost, 31);
1339
1451
 
1340
1452
  /**
1341
1453
  * @generated from message blueapi.cost.v1.CalculateCostsRequestAwsOptions
@@ -1368,7 +1480,7 @@ export type CalculateCostsRequestAwsOptions = Message<"blueapi.cost.v1.Calculate
1368
1480
  * Use `create(CalculateCostsRequestAwsOptionsSchema)` to create a new message.
1369
1481
  */
1370
1482
  export const CalculateCostsRequestAwsOptionsSchema: GenMessage<CalculateCostsRequestAwsOptions> = /*@__PURE__*/
1371
- messageDesc(file_cost_v1_cost, 31);
1483
+ messageDesc(file_cost_v1_cost, 32);
1372
1484
 
1373
1485
  /**
1374
1486
  * Request message for the Cost.CalculateCosts rpc.
@@ -1412,7 +1524,7 @@ export type CalculateCostsRequest = Message<"blueapi.cost.v1.CalculateCostsReque
1412
1524
  * Use `create(CalculateCostsRequestSchema)` to create a new message.
1413
1525
  */
1414
1526
  export const CalculateCostsRequestSchema: GenMessage<CalculateCostsRequest> = /*@__PURE__*/
1415
- messageDesc(file_cost_v1_cost, 32);
1527
+ messageDesc(file_cost_v1_cost, 33);
1416
1528
 
1417
1529
  /**
1418
1530
  * Request message for the Cost.ListCalculationsHistory rpc.
@@ -1447,7 +1559,7 @@ export type ListCalculationsHistoryRequest = Message<"blueapi.cost.v1.ListCalcul
1447
1559
  * Use `create(ListCalculationsHistoryRequestSchema)` to create a new message.
1448
1560
  */
1449
1561
  export const ListCalculationsHistoryRequestSchema: GenMessage<ListCalculationsHistoryRequest> = /*@__PURE__*/
1450
- messageDesc(file_cost_v1_cost, 33);
1562
+ messageDesc(file_cost_v1_cost, 34);
1451
1563
 
1452
1564
  /**
1453
1565
  * AWS-specific response message for the Cost.ListCalculationsHistory rpc. Should be compatible with the Operations API.
@@ -1466,7 +1578,7 @@ export type ListCalculationsHistoryAwsResponse = Message<"blueapi.cost.v1.ListCa
1466
1578
  * Use `create(ListCalculationsHistoryAwsResponseSchema)` to create a new message.
1467
1579
  */
1468
1580
  export const ListCalculationsHistoryAwsResponseSchema: GenMessage<ListCalculationsHistoryAwsResponse> = /*@__PURE__*/
1469
- messageDesc(file_cost_v1_cost, 34);
1581
+ messageDesc(file_cost_v1_cost, 35);
1470
1582
 
1471
1583
  /**
1472
1584
  * Response message for the Cost.ListCalculationsHistory rpc.
@@ -1485,7 +1597,7 @@ export type ListCalculationsHistoryResponse = Message<"blueapi.cost.v1.ListCalcu
1485
1597
  * Use `create(ListCalculationsHistoryResponseSchema)` to create a new message.
1486
1598
  */
1487
1599
  export const ListCalculationsHistoryResponseSchema: GenMessage<ListCalculationsHistoryResponse> = /*@__PURE__*/
1488
- messageDesc(file_cost_v1_cost, 35);
1600
+ messageDesc(file_cost_v1_cost, 36);
1489
1601
 
1490
1602
  /**
1491
1603
  * @generated from message blueapi.cost.v1.CalculationsSchedule
@@ -1560,7 +1672,7 @@ export type CalculationsSchedule = Message<"blueapi.cost.v1.CalculationsSchedule
1560
1672
  * Use `create(CalculationsScheduleSchema)` to create a new message.
1561
1673
  */
1562
1674
  export const CalculationsScheduleSchema: GenMessage<CalculationsSchedule> = /*@__PURE__*/
1563
- messageDesc(file_cost_v1_cost, 36);
1675
+ messageDesc(file_cost_v1_cost, 37);
1564
1676
 
1565
1677
  /**
1566
1678
  * Request message for the Cost.ListCalculationsSchedules rpc.
@@ -1581,7 +1693,7 @@ export type ListCalculationsSchedulesRequest = Message<"blueapi.cost.v1.ListCalc
1581
1693
  * Use `create(ListCalculationsSchedulesRequestSchema)` to create a new message.
1582
1694
  */
1583
1695
  export const ListCalculationsSchedulesRequestSchema: GenMessage<ListCalculationsSchedulesRequest> = /*@__PURE__*/
1584
- messageDesc(file_cost_v1_cost, 37);
1696
+ messageDesc(file_cost_v1_cost, 38);
1585
1697
 
1586
1698
  /**
1587
1699
  * Response message for the Cost.ListCalculationsSchedules rpc.
@@ -1600,7 +1712,7 @@ export type ListCalculationsSchedulesResponse = Message<"blueapi.cost.v1.ListCal
1600
1712
  * Use `create(ListCalculationsSchedulesResponseSchema)` to create a new message.
1601
1713
  */
1602
1714
  export const ListCalculationsSchedulesResponseSchema: GenMessage<ListCalculationsSchedulesResponse> = /*@__PURE__*/
1603
- messageDesc(file_cost_v1_cost, 38);
1715
+ messageDesc(file_cost_v1_cost, 39);
1604
1716
 
1605
1717
  /**
1606
1718
  * Request message for the Cost.CreateCalculationsSchedule rpc.
@@ -1679,7 +1791,7 @@ export type CreateCalculationsScheduleRequest = Message<"blueapi.cost.v1.CreateC
1679
1791
  * Use `create(CreateCalculationsScheduleRequestSchema)` to create a new message.
1680
1792
  */
1681
1793
  export const CreateCalculationsScheduleRequestSchema: GenMessage<CreateCalculationsScheduleRequest> = /*@__PURE__*/
1682
- messageDesc(file_cost_v1_cost, 39);
1794
+ messageDesc(file_cost_v1_cost, 40);
1683
1795
 
1684
1796
  /**
1685
1797
  * Request message for the Cost.DeleteCalculationsSchedule rpc.
@@ -1707,7 +1819,7 @@ export type DeleteCalculationsScheduleRequest = Message<"blueapi.cost.v1.DeleteC
1707
1819
  * Use `create(DeleteCalculationsScheduleRequestSchema)` to create a new message.
1708
1820
  */
1709
1821
  export const DeleteCalculationsScheduleRequestSchema: GenMessage<DeleteCalculationsScheduleRequest> = /*@__PURE__*/
1710
- messageDesc(file_cost_v1_cost, 40);
1822
+ messageDesc(file_cost_v1_cost, 41);
1711
1823
 
1712
1824
  /**
1713
1825
  * Request message for the Cost.ReadCostAttributes rpc.
@@ -1772,7 +1884,7 @@ export type ReadCostAttributesRequest = Message<"blueapi.cost.v1.ReadCostAttribu
1772
1884
  * Use `create(ReadCostAttributesRequestSchema)` to create a new message.
1773
1885
  */
1774
1886
  export const ReadCostAttributesRequestSchema: GenMessage<ReadCostAttributesRequest> = /*@__PURE__*/
1775
- messageDesc(file_cost_v1_cost, 41);
1887
+ messageDesc(file_cost_v1_cost, 42);
1776
1888
 
1777
1889
  /**
1778
1890
  * @generated from message blueapi.cost.v1.ReadCostAttributesRequest.AwsOptions
@@ -1791,7 +1903,7 @@ export type ReadCostAttributesRequest_AwsOptions = Message<"blueapi.cost.v1.Read
1791
1903
  * Use `create(ReadCostAttributesRequest_AwsOptionsSchema)` to create a new message.
1792
1904
  */
1793
1905
  export const ReadCostAttributesRequest_AwsOptionsSchema: GenMessage<ReadCostAttributesRequest_AwsOptions> = /*@__PURE__*/
1794
- messageDesc(file_cost_v1_cost, 41, 0);
1906
+ messageDesc(file_cost_v1_cost, 42, 0);
1795
1907
 
1796
1908
  /**
1797
1909
  * @generated from message blueapi.cost.v1.ReadCostAttributesRequest.AzureOptions
@@ -1824,7 +1936,7 @@ export type ReadCostAttributesRequest_AzureOptions = Message<"blueapi.cost.v1.Re
1824
1936
  * Use `create(ReadCostAttributesRequest_AzureOptionsSchema)` to create a new message.
1825
1937
  */
1826
1938
  export const ReadCostAttributesRequest_AzureOptionsSchema: GenMessage<ReadCostAttributesRequest_AzureOptions> = /*@__PURE__*/
1827
- messageDesc(file_cost_v1_cost, 41, 1);
1939
+ messageDesc(file_cost_v1_cost, 42, 1);
1828
1940
 
1829
1941
  /**
1830
1942
  * Response message for the Cost.ReadCostAttributes rpc.
@@ -1848,7 +1960,7 @@ export type CostAttributeItem = Message<"blueapi.cost.v1.CostAttributeItem"> & {
1848
1960
  * Use `create(CostAttributeItemSchema)` to create a new message.
1849
1961
  */
1850
1962
  export const CostAttributeItemSchema: GenMessage<CostAttributeItem> = /*@__PURE__*/
1851
- messageDesc(file_cost_v1_cost, 42);
1963
+ messageDesc(file_cost_v1_cost, 43);
1852
1964
 
1853
1965
  /**
1854
1966
  * Request message for the Cost.GetCostAttributes rpc.
@@ -1897,7 +2009,7 @@ export type GetCostAttributesRequest = Message<"blueapi.cost.v1.GetCostAttribute
1897
2009
  * Use `create(GetCostAttributesRequestSchema)` to create a new message.
1898
2010
  */
1899
2011
  export const GetCostAttributesRequestSchema: GenMessage<GetCostAttributesRequest> = /*@__PURE__*/
1900
- messageDesc(file_cost_v1_cost, 43);
2012
+ messageDesc(file_cost_v1_cost, 44);
1901
2013
 
1902
2014
  /**
1903
2015
  * Response message for the Cost.GetCostAttributes rpc.
@@ -1918,7 +2030,7 @@ export type GetCostAttributesResponse = Message<"blueapi.cost.v1.GetCostAttribut
1918
2030
  * Use `create(GetCostAttributesResponseSchema)` to create a new message.
1919
2031
  */
1920
2032
  export const GetCostAttributesResponseSchema: GenMessage<GetCostAttributesResponse> = /*@__PURE__*/
1921
- messageDesc(file_cost_v1_cost, 44);
2033
+ messageDesc(file_cost_v1_cost, 45);
1922
2034
 
1923
2035
  /**
1924
2036
  * @generated from message blueapi.cost.v1.CostAttribute
@@ -1945,7 +2057,7 @@ export type CostAttribute = Message<"blueapi.cost.v1.CostAttribute"> & {
1945
2057
  * Use `create(CostAttributeSchema)` to create a new message.
1946
2058
  */
1947
2059
  export const CostAttributeSchema: GenMessage<CostAttribute> = /*@__PURE__*/
1948
- messageDesc(file_cost_v1_cost, 45);
2060
+ messageDesc(file_cost_v1_cost, 46);
1949
2061
 
1950
2062
  /**
1951
2063
  * A map of "key:value" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -1966,7 +2078,7 @@ export type ReadCostsRequestAwsOptionsFilters = Message<"blueapi.cost.v1.ReadCos
1966
2078
  * Use `create(ReadCostsRequestAwsOptionsFiltersSchema)` to create a new message.
1967
2079
  */
1968
2080
  export const ReadCostsRequestAwsOptionsFiltersSchema: GenMessage<ReadCostsRequestAwsOptionsFilters> = /*@__PURE__*/
1969
- messageDesc(file_cost_v1_cost, 46);
2081
+ messageDesc(file_cost_v1_cost, 47);
1970
2082
 
1971
2083
  /**
1972
2084
  * AWS-specific options for ReadCostsRequest.
@@ -2068,7 +2180,7 @@ export type ReadCostsRequestAwsOptions = Message<"blueapi.cost.v1.ReadCostsReque
2068
2180
  * Use `create(ReadCostsRequestAwsOptionsSchema)` to create a new message.
2069
2181
  */
2070
2182
  export const ReadCostsRequestAwsOptionsSchema: GenMessage<ReadCostsRequestAwsOptions> = /*@__PURE__*/
2071
- messageDesc(file_cost_v1_cost, 47);
2183
+ messageDesc(file_cost_v1_cost, 48);
2072
2184
 
2073
2185
  /**
2074
2186
  * A map of "key:value" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -2089,7 +2201,7 @@ export type ReadCostsRequestAwsOptions_TagFilters = Message<"blueapi.cost.v1.Rea
2089
2201
  * Use `create(ReadCostsRequestAwsOptions_TagFiltersSchema)` to create a new message.
2090
2202
  */
2091
2203
  export const ReadCostsRequestAwsOptions_TagFiltersSchema: GenMessage<ReadCostsRequestAwsOptions_TagFilters> = /*@__PURE__*/
2092
- messageDesc(file_cost_v1_cost, 47, 0);
2204
+ messageDesc(file_cost_v1_cost, 48, 0);
2093
2205
 
2094
2206
  /**
2095
2207
  * Request message for the Cost.ReadCosts rpc.
@@ -2163,7 +2275,7 @@ export type ReadCostsRequest = Message<"blueapi.cost.v1.ReadCostsRequest"> & {
2163
2275
  * Use `create(ReadCostsRequestSchema)` to create a new message.
2164
2276
  */
2165
2277
  export const ReadCostsRequestSchema: GenMessage<ReadCostsRequest> = /*@__PURE__*/
2166
- messageDesc(file_cost_v1_cost, 48);
2278
+ messageDesc(file_cost_v1_cost, 49);
2167
2279
 
2168
2280
  /**
2169
2281
  * @generated from message blueapi.cost.v1.ReadAdjustmentsRequestAwsOptions
@@ -2182,7 +2294,7 @@ export type ReadAdjustmentsRequestAwsOptions = Message<"blueapi.cost.v1.ReadAdju
2182
2294
  * Use `create(ReadAdjustmentsRequestAwsOptionsSchema)` to create a new message.
2183
2295
  */
2184
2296
  export const ReadAdjustmentsRequestAwsOptionsSchema: GenMessage<ReadAdjustmentsRequestAwsOptions> = /*@__PURE__*/
2185
- messageDesc(file_cost_v1_cost, 49);
2297
+ messageDesc(file_cost_v1_cost, 50);
2186
2298
 
2187
2299
  /**
2188
2300
  * Request message for the Cost.ReadAdjustments rpc.
@@ -2238,7 +2350,7 @@ export type ReadAdjustmentsRequest = Message<"blueapi.cost.v1.ReadAdjustmentsReq
2238
2350
  * Use `create(ReadAdjustmentsRequestSchema)` to create a new message.
2239
2351
  */
2240
2352
  export const ReadAdjustmentsRequestSchema: GenMessage<ReadAdjustmentsRequest> = /*@__PURE__*/
2241
- messageDesc(file_cost_v1_cost, 50);
2353
+ messageDesc(file_cost_v1_cost, 51);
2242
2354
 
2243
2355
  /**
2244
2356
  * @generated from message blueapi.cost.v1.ReadTagCostsRequestAwsOptions
@@ -2331,7 +2443,7 @@ export type ReadTagCostsRequestAwsOptions = Message<"blueapi.cost.v1.ReadTagCost
2331
2443
  * Use `create(ReadTagCostsRequestAwsOptionsSchema)` to create a new message.
2332
2444
  */
2333
2445
  export const ReadTagCostsRequestAwsOptionsSchema: GenMessage<ReadTagCostsRequestAwsOptions> = /*@__PURE__*/
2334
- messageDesc(file_cost_v1_cost, 51);
2446
+ messageDesc(file_cost_v1_cost, 52);
2335
2447
 
2336
2448
  /**
2337
2449
  * A map of "key:value" tag filters. The key indicates the tag key while the value is the filter tag value which can be prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -2352,7 +2464,7 @@ export type ReadTagCostsRequestAwsOptions_TagFilters = Message<"blueapi.cost.v1.
2352
2464
  * Use `create(ReadTagCostsRequestAwsOptions_TagFiltersSchema)` to create a new message.
2353
2465
  */
2354
2466
  export const ReadTagCostsRequestAwsOptions_TagFiltersSchema: GenMessage<ReadTagCostsRequestAwsOptions_TagFilters> = /*@__PURE__*/
2355
- messageDesc(file_cost_v1_cost, 51, 0);
2467
+ messageDesc(file_cost_v1_cost, 52, 0);
2356
2468
 
2357
2469
  /**
2358
2470
  * Request message for the Cost.ReadTagCosts rpc.
@@ -2408,7 +2520,7 @@ export type ReadTagCostsRequest = Message<"blueapi.cost.v1.ReadTagCostsRequest">
2408
2520
  * Use `create(ReadTagCostsRequestSchema)` to create a new message.
2409
2521
  */
2410
2522
  export const ReadTagCostsRequestSchema: GenMessage<ReadTagCostsRequest> = /*@__PURE__*/
2411
- messageDesc(file_cost_v1_cost, 52);
2523
+ messageDesc(file_cost_v1_cost, 53);
2412
2524
 
2413
2525
  /**
2414
2526
  * Request message for the Cost.ReadNonTagCosts rpc.
@@ -2457,7 +2569,7 @@ export type ReadNonTagCostsRequest = Message<"blueapi.cost.v1.ReadNonTagCostsReq
2457
2569
  * Use `create(ReadNonTagCostsRequestSchema)` to create a new message.
2458
2570
  */
2459
2571
  export const ReadNonTagCostsRequestSchema: GenMessage<ReadNonTagCostsRequest> = /*@__PURE__*/
2460
- messageDesc(file_cost_v1_cost, 53);
2572
+ messageDesc(file_cost_v1_cost, 54);
2461
2573
 
2462
2574
  /**
2463
2575
  * Request message for GetForecasts per billing group.
@@ -2514,7 +2626,7 @@ export type GetForecastsRequest = Message<"blueapi.cost.v1.GetForecastsRequest">
2514
2626
  * Use `create(GetForecastsRequestSchema)` to create a new message.
2515
2627
  */
2516
2628
  export const GetForecastsRequestSchema: GenMessage<GetForecastsRequest> = /*@__PURE__*/
2517
- messageDesc(file_cost_v1_cost, 54);
2629
+ messageDesc(file_cost_v1_cost, 55);
2518
2630
 
2519
2631
  /**
2520
2632
  * Response message for GetForecasts per billing group.
@@ -2533,7 +2645,7 @@ export type GetForecastsResponse = Message<"blueapi.cost.v1.GetForecastsResponse
2533
2645
  * Use `create(GetForecastsResponseSchema)` to create a new message.
2534
2646
  */
2535
2647
  export const GetForecastsResponseSchema: GenMessage<GetForecastsResponse> = /*@__PURE__*/
2536
- messageDesc(file_cost_v1_cost, 55);
2648
+ messageDesc(file_cost_v1_cost, 56);
2537
2649
 
2538
2650
  /**
2539
2651
  * Request message for GetMonthlyCostForecast
@@ -2582,7 +2694,7 @@ export type GetMonthlyCostForecastRequest = Message<"blueapi.cost.v1.GetMonthlyC
2582
2694
  * Use `create(GetMonthlyCostForecastRequestSchema)` to create a new message.
2583
2695
  */
2584
2696
  export const GetMonthlyCostForecastRequestSchema: GenMessage<GetMonthlyCostForecastRequest> = /*@__PURE__*/
2585
- messageDesc(file_cost_v1_cost, 56);
2697
+ messageDesc(file_cost_v1_cost, 57);
2586
2698
 
2587
2699
  /**
2588
2700
  * Response message for GetMonthlyCostForecast
@@ -2611,7 +2723,7 @@ export type GetMonthlyCostForecastResponse = Message<"blueapi.cost.v1.GetMonthly
2611
2723
  * Use `create(GetMonthlyCostForecastResponseSchema)` to create a new message.
2612
2724
  */
2613
2725
  export const GetMonthlyCostForecastResponseSchema: GenMessage<GetMonthlyCostForecastResponse> = /*@__PURE__*/
2614
- messageDesc(file_cost_v1_cost, 57);
2726
+ messageDesc(file_cost_v1_cost, 58);
2615
2727
 
2616
2728
  /**
2617
2729
  * Request message for GetMonthOnMonthCostForecast
@@ -2653,7 +2765,7 @@ export type GetMonthOnMonthCostForecastRequest = Message<"blueapi.cost.v1.GetMon
2653
2765
  * Use `create(GetMonthOnMonthCostForecastRequestSchema)` to create a new message.
2654
2766
  */
2655
2767
  export const GetMonthOnMonthCostForecastRequestSchema: GenMessage<GetMonthOnMonthCostForecastRequest> = /*@__PURE__*/
2656
- messageDesc(file_cost_v1_cost, 58);
2768
+ messageDesc(file_cost_v1_cost, 59);
2657
2769
 
2658
2770
  /**
2659
2771
  * Response message for GetMonthOnMonthCostForecast
@@ -2682,7 +2794,7 @@ export type GetMonthOnMonthCostForecastResponse = Message<"blueapi.cost.v1.GetMo
2682
2794
  * Use `create(GetMonthOnMonthCostForecastResponseSchema)` to create a new message.
2683
2795
  */
2684
2796
  export const GetMonthOnMonthCostForecastResponseSchema: GenMessage<GetMonthOnMonthCostForecastResponse> = /*@__PURE__*/
2685
- messageDesc(file_cost_v1_cost, 59);
2797
+ messageDesc(file_cost_v1_cost, 60);
2686
2798
 
2687
2799
  /**
2688
2800
  * Request message for GetMonthToDateCostForecast
@@ -2724,7 +2836,7 @@ export type GetMonthToDateCostForecastRequest = Message<"blueapi.cost.v1.GetMont
2724
2836
  * Use `create(GetMonthToDateCostForecastRequestSchema)` to create a new message.
2725
2837
  */
2726
2838
  export const GetMonthToDateCostForecastRequestSchema: GenMessage<GetMonthToDateCostForecastRequest> = /*@__PURE__*/
2727
- messageDesc(file_cost_v1_cost, 60);
2839
+ messageDesc(file_cost_v1_cost, 61);
2728
2840
 
2729
2841
  /**
2730
2842
  * Response message for GetMonthToDateCostForecast
@@ -2758,7 +2870,7 @@ export type GetMonthToDateCostForecastResponse = Message<"blueapi.cost.v1.GetMon
2758
2870
  * Use `create(GetMonthToDateCostForecastResponseSchema)` to create a new message.
2759
2871
  */
2760
2872
  export const GetMonthToDateCostForecastResponseSchema: GenMessage<GetMonthToDateCostForecastResponse> = /*@__PURE__*/
2761
- messageDesc(file_cost_v1_cost, 61);
2873
+ messageDesc(file_cost_v1_cost, 62);
2762
2874
 
2763
2875
  /**
2764
2876
  * Request message for GetAccountBudget
@@ -2800,7 +2912,7 @@ export type GetAccountBudgetRequest = Message<"blueapi.cost.v1.GetAccountBudgetR
2800
2912
  * Use `create(GetAccountBudgetRequestSchema)` to create a new message.
2801
2913
  */
2802
2914
  export const GetAccountBudgetRequestSchema: GenMessage<GetAccountBudgetRequest> = /*@__PURE__*/
2803
- messageDesc(file_cost_v1_cost, 62);
2915
+ messageDesc(file_cost_v1_cost, 63);
2804
2916
 
2805
2917
  /**
2806
2918
  * Response message for GetAccountBudget
@@ -2819,7 +2931,7 @@ export type GetAccountBudgetResponse = Message<"blueapi.cost.v1.GetAccountBudget
2819
2931
  * Use `create(GetAccountBudgetResponseSchema)` to create a new message.
2820
2932
  */
2821
2933
  export const GetAccountBudgetResponseSchema: GenMessage<GetAccountBudgetResponse> = /*@__PURE__*/
2822
- messageDesc(file_cost_v1_cost, 63);
2934
+ messageDesc(file_cost_v1_cost, 64);
2823
2935
 
2824
2936
  /**
2825
2937
  * Request message for CreateAccountBudget
@@ -2859,7 +2971,7 @@ export type CreateAccountBudgetRequest = Message<"blueapi.cost.v1.CreateAccountB
2859
2971
  * Use `create(CreateAccountBudgetRequestSchema)` to create a new message.
2860
2972
  */
2861
2973
  export const CreateAccountBudgetRequestSchema: GenMessage<CreateAccountBudgetRequest> = /*@__PURE__*/
2862
- messageDesc(file_cost_v1_cost, 64);
2974
+ messageDesc(file_cost_v1_cost, 65);
2863
2975
 
2864
2976
  /**
2865
2977
  * Response message for CreateAccountBudget
@@ -2880,7 +2992,7 @@ export type CreateAccountBudgetResponse = Message<"blueapi.cost.v1.CreateAccount
2880
2992
  * Use `create(CreateAccountBudgetResponseSchema)` to create a new message.
2881
2993
  */
2882
2994
  export const CreateAccountBudgetResponseSchema: GenMessage<CreateAccountBudgetResponse> = /*@__PURE__*/
2883
- messageDesc(file_cost_v1_cost, 65);
2995
+ messageDesc(file_cost_v1_cost, 66);
2884
2996
 
2885
2997
  /**
2886
2998
  * Request message for UpdateAccountBudget
@@ -2913,7 +3025,7 @@ export type UpdateAccountBudgetRequest = Message<"blueapi.cost.v1.UpdateAccountB
2913
3025
  * Use `create(UpdateAccountBudgetRequestSchema)` to create a new message.
2914
3026
  */
2915
3027
  export const UpdateAccountBudgetRequestSchema: GenMessage<UpdateAccountBudgetRequest> = /*@__PURE__*/
2916
- messageDesc(file_cost_v1_cost, 66);
3028
+ messageDesc(file_cost_v1_cost, 67);
2917
3029
 
2918
3030
  /**
2919
3031
  * Request message for DeleteAccountBudget
@@ -2941,7 +3053,7 @@ export type DeleteAccountBudgetRequest = Message<"blueapi.cost.v1.DeleteAccountB
2941
3053
  * Use `create(DeleteAccountBudgetRequestSchema)` to create a new message.
2942
3054
  */
2943
3055
  export const DeleteAccountBudgetRequestSchema: GenMessage<DeleteAccountBudgetRequest> = /*@__PURE__*/
2944
- messageDesc(file_cost_v1_cost, 67);
3056
+ messageDesc(file_cost_v1_cost, 68);
2945
3057
 
2946
3058
  /**
2947
3059
  * @generated from message blueapi.cost.v1.GetRecommendationsRequestAwsOptions
@@ -3024,7 +3136,7 @@ export type GetRecommendationsRequestAwsOptions = Message<"blueapi.cost.v1.GetRe
3024
3136
  * Use `create(GetRecommendationsRequestAwsOptionsSchema)` to create a new message.
3025
3137
  */
3026
3138
  export const GetRecommendationsRequestAwsOptionsSchema: GenMessage<GetRecommendationsRequestAwsOptions> = /*@__PURE__*/
3027
- messageDesc(file_cost_v1_cost, 68);
3139
+ messageDesc(file_cost_v1_cost, 69);
3028
3140
 
3029
3141
  /**
3030
3142
  * Request message for GetRecommendations
@@ -3073,7 +3185,7 @@ export type GetRecommendationsRequest = Message<"blueapi.cost.v1.GetRecommendati
3073
3185
  * Use `create(GetRecommendationsRequestSchema)` to create a new message.
3074
3186
  */
3075
3187
  export const GetRecommendationsRequestSchema: GenMessage<GetRecommendationsRequest> = /*@__PURE__*/
3076
- messageDesc(file_cost_v1_cost, 69);
3188
+ messageDesc(file_cost_v1_cost, 70);
3077
3189
 
3078
3190
  /**
3079
3191
  * Request message for GetRecommendations
@@ -3097,7 +3209,7 @@ export type GetRecommendationsResponse = Message<"blueapi.cost.v1.GetRecommendat
3097
3209
  * Use `create(GetRecommendationsResponseSchema)` to create a new message.
3098
3210
  */
3099
3211
  export const GetRecommendationsResponseSchema: GenMessage<GetRecommendationsResponse> = /*@__PURE__*/
3100
- messageDesc(file_cost_v1_cost, 70);
3212
+ messageDesc(file_cost_v1_cost, 71);
3101
3213
 
3102
3214
  /**
3103
3215
  * Request message for GetCostReduction
@@ -3195,7 +3307,7 @@ export type GetCostReductionRequest = Message<"blueapi.cost.v1.GetCostReductionR
3195
3307
  * Use `create(GetCostReductionRequestSchema)` to create a new message.
3196
3308
  */
3197
3309
  export const GetCostReductionRequestSchema: GenMessage<GetCostReductionRequest> = /*@__PURE__*/
3198
- messageDesc(file_cost_v1_cost, 71);
3310
+ messageDesc(file_cost_v1_cost, 72);
3199
3311
 
3200
3312
  /**
3201
3313
  * Response message for GetCostReduction
@@ -3219,7 +3331,7 @@ export type GetCostReductionResponse = Message<"blueapi.cost.v1.GetCostReduction
3219
3331
  * Use `create(GetCostReductionResponseSchema)` to create a new message.
3220
3332
  */
3221
3333
  export const GetCostReductionResponseSchema: GenMessage<GetCostReductionResponse> = /*@__PURE__*/
3222
- messageDesc(file_cost_v1_cost, 72);
3334
+ messageDesc(file_cost_v1_cost, 73);
3223
3335
 
3224
3336
  /**
3225
3337
  * @generated from message blueapi.cost.v1.GetExportRISPRequest
@@ -3254,7 +3366,7 @@ export type GetExportRISPRequest = Message<"blueapi.cost.v1.GetExportRISPRequest
3254
3366
  * Use `create(GetExportRISPRequestSchema)` to create a new message.
3255
3367
  */
3256
3368
  export const GetExportRISPRequestSchema: GenMessage<GetExportRISPRequest> = /*@__PURE__*/
3257
- messageDesc(file_cost_v1_cost, 73);
3369
+ messageDesc(file_cost_v1_cost, 74);
3258
3370
 
3259
3371
  /**
3260
3372
  * Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.
@@ -3276,7 +3388,7 @@ export type GetExportRISPResponse = Message<"blueapi.cost.v1.GetExportRISPRespon
3276
3388
  * Use `create(GetExportRISPResponseSchema)` to create a new message.
3277
3389
  */
3278
3390
  export const GetExportRISPResponseSchema: GenMessage<GetExportRISPResponse> = /*@__PURE__*/
3279
- messageDesc(file_cost_v1_cost, 74);
3391
+ messageDesc(file_cost_v1_cost, 75);
3280
3392
 
3281
3393
  /**
3282
3394
  * Request message for GetUtilization
@@ -3353,7 +3465,7 @@ export type GetUtilizationRequest = Message<"blueapi.cost.v1.GetUtilizationReque
3353
3465
  * Use `create(GetUtilizationRequestSchema)` to create a new message.
3354
3466
  */
3355
3467
  export const GetUtilizationRequestSchema: GenMessage<GetUtilizationRequest> = /*@__PURE__*/
3356
- messageDesc(file_cost_v1_cost, 75);
3468
+ messageDesc(file_cost_v1_cost, 76);
3357
3469
 
3358
3470
  /**
3359
3471
  * Response message for GetUtilization
@@ -3377,7 +3489,7 @@ export type GetUtilizationResponse = Message<"blueapi.cost.v1.GetUtilizationResp
3377
3489
  * Use `create(GetUtilizationResponseSchema)` to create a new message.
3378
3490
  */
3379
3491
  export const GetUtilizationResponseSchema: GenMessage<GetUtilizationResponse> = /*@__PURE__*/
3380
- messageDesc(file_cost_v1_cost, 76);
3492
+ messageDesc(file_cost_v1_cost, 77);
3381
3493
 
3382
3494
  /**
3383
3495
  * Request message for GetCoverageOptions
@@ -3475,7 +3587,7 @@ export type GetCoverageOptionsRequest = Message<"blueapi.cost.v1.GetCoverageOpti
3475
3587
  * Use `create(GetCoverageOptionsRequestSchema)` to create a new message.
3476
3588
  */
3477
3589
  export const GetCoverageOptionsRequestSchema: GenMessage<GetCoverageOptionsRequest> = /*@__PURE__*/
3478
- messageDesc(file_cost_v1_cost, 77);
3590
+ messageDesc(file_cost_v1_cost, 78);
3479
3591
 
3480
3592
  /**
3481
3593
  * Response message for GetCoverageOptions
@@ -3499,7 +3611,7 @@ export type GetCoverageOptionsResponse = Message<"blueapi.cost.v1.GetCoverageOpt
3499
3611
  * Use `create(GetCoverageOptionsResponseSchema)` to create a new message.
3500
3612
  */
3501
3613
  export const GetCoverageOptionsResponseSchema: GenMessage<GetCoverageOptionsResponse> = /*@__PURE__*/
3502
- messageDesc(file_cost_v1_cost, 78);
3614
+ messageDesc(file_cost_v1_cost, 79);
3503
3615
 
3504
3616
  /**
3505
3617
  * Request message for GetCoverageOndemand
@@ -3590,7 +3702,7 @@ export type GetCoverageOndemandRequest = Message<"blueapi.cost.v1.GetCoverageOnd
3590
3702
  * Use `create(GetCoverageOndemandRequestSchema)` to create a new message.
3591
3703
  */
3592
3704
  export const GetCoverageOndemandRequestSchema: GenMessage<GetCoverageOndemandRequest> = /*@__PURE__*/
3593
- messageDesc(file_cost_v1_cost, 79);
3705
+ messageDesc(file_cost_v1_cost, 80);
3594
3706
 
3595
3707
  /**
3596
3708
  * Response message for GetCoverageOndemand
@@ -3614,7 +3726,7 @@ export type GetCoverageOndemandResponse = Message<"blueapi.cost.v1.GetCoverageOn
3614
3726
  * Use `create(GetCoverageOndemandResponseSchema)` to create a new message.
3615
3727
  */
3616
3728
  export const GetCoverageOndemandResponseSchema: GenMessage<GetCoverageOndemandResponse> = /*@__PURE__*/
3617
- messageDesc(file_cost_v1_cost, 80);
3729
+ messageDesc(file_cost_v1_cost, 81);
3618
3730
 
3619
3731
  /**
3620
3732
  * Request message for GetBreakevenPoint
@@ -3656,7 +3768,7 @@ export type GetBreakevenPointRequest = Message<"blueapi.cost.v1.GetBreakevenPoin
3656
3768
  * Use `create(GetBreakevenPointRequestSchema)` to create a new message.
3657
3769
  */
3658
3770
  export const GetBreakevenPointRequestSchema: GenMessage<GetBreakevenPointRequest> = /*@__PURE__*/
3659
- messageDesc(file_cost_v1_cost, 81);
3771
+ messageDesc(file_cost_v1_cost, 82);
3660
3772
 
3661
3773
  /**
3662
3774
  * Response message for GetBreakevenPoint
@@ -3680,7 +3792,7 @@ export type GetBreakevenPointResponse = Message<"blueapi.cost.v1.GetBreakevenPoi
3680
3792
  * Use `create(GetBreakevenPointResponseSchema)` to create a new message.
3681
3793
  */
3682
3794
  export const GetBreakevenPointResponseSchema: GenMessage<GetBreakevenPointResponse> = /*@__PURE__*/
3683
- messageDesc(file_cost_v1_cost, 82);
3795
+ messageDesc(file_cost_v1_cost, 83);
3684
3796
 
3685
3797
  /**
3686
3798
  * Request message for the ListCostFilters rpc.
@@ -3701,7 +3813,7 @@ export type ListCostFiltersRequest = Message<"blueapi.cost.v1.ListCostFiltersReq
3701
3813
  * Use `create(ListCostFiltersRequestSchema)` to create a new message.
3702
3814
  */
3703
3815
  export const ListCostFiltersRequestSchema: GenMessage<ListCostFiltersRequest> = /*@__PURE__*/
3704
- messageDesc(file_cost_v1_cost, 83);
3816
+ messageDesc(file_cost_v1_cost, 84);
3705
3817
 
3706
3818
  /**
3707
3819
  * Response message for the ListCostFilters rpc.
@@ -3720,7 +3832,7 @@ export type ListCostFiltersResponse = Message<"blueapi.cost.v1.ListCostFiltersRe
3720
3832
  * Use `create(ListCostFiltersResponseSchema)` to create a new message.
3721
3833
  */
3722
3834
  export const ListCostFiltersResponseSchema: GenMessage<ListCostFiltersResponse> = /*@__PURE__*/
3723
- messageDesc(file_cost_v1_cost, 84);
3835
+ messageDesc(file_cost_v1_cost, 85);
3724
3836
 
3725
3837
  /**
3726
3838
  * Response message for the ListCostFilters rpc.
@@ -3780,7 +3892,7 @@ export type ListCostFilters = Message<"blueapi.cost.v1.ListCostFilters"> & {
3780
3892
  * Use `create(ListCostFiltersSchema)` to create a new message.
3781
3893
  */
3782
3894
  export const ListCostFiltersSchema: GenMessage<ListCostFilters> = /*@__PURE__*/
3783
- messageDesc(file_cost_v1_cost, 85);
3895
+ messageDesc(file_cost_v1_cost, 86);
3784
3896
 
3785
3897
  /**
3786
3898
  * Request message for the CreateCostFilters rpc.
@@ -3833,7 +3945,7 @@ export type CreateCostFiltersRequest = Message<"blueapi.cost.v1.CreateCostFilter
3833
3945
  * Use `create(CreateCostFiltersRequestSchema)` to create a new message.
3834
3946
  */
3835
3947
  export const CreateCostFiltersRequestSchema: GenMessage<CreateCostFiltersRequest> = /*@__PURE__*/
3836
- messageDesc(file_cost_v1_cost, 86);
3948
+ messageDesc(file_cost_v1_cost, 87);
3837
3949
 
3838
3950
  /**
3839
3951
  * Response message for the CreateCostFilters rpc.
@@ -3854,7 +3966,7 @@ export type CreateCostFiltersResponse = Message<"blueapi.cost.v1.CreateCostFilte
3854
3966
  * Use `create(CreateCostFiltersResponseSchema)` to create a new message.
3855
3967
  */
3856
3968
  export const CreateCostFiltersResponseSchema: GenMessage<CreateCostFiltersResponse> = /*@__PURE__*/
3857
- messageDesc(file_cost_v1_cost, 87);
3969
+ messageDesc(file_cost_v1_cost, 88);
3858
3970
 
3859
3971
  /**
3860
3972
  * Request message for the UpdateCostFilters rpc.
@@ -3914,7 +4026,7 @@ export type UpdateCostFiltersRequest = Message<"blueapi.cost.v1.UpdateCostFilter
3914
4026
  * Use `create(UpdateCostFiltersRequestSchema)` to create a new message.
3915
4027
  */
3916
4028
  export const UpdateCostFiltersRequestSchema: GenMessage<UpdateCostFiltersRequest> = /*@__PURE__*/
3917
- messageDesc(file_cost_v1_cost, 88);
4029
+ messageDesc(file_cost_v1_cost, 89);
3918
4030
 
3919
4031
  /**
3920
4032
  * Response message for the UpdateCostFilters rpc.
@@ -3935,7 +4047,7 @@ export type UpdateCostFiltersResponse = Message<"blueapi.cost.v1.UpdateCostFilte
3935
4047
  * Use `create(UpdateCostFiltersResponseSchema)` to create a new message.
3936
4048
  */
3937
4049
  export const UpdateCostFiltersResponseSchema: GenMessage<UpdateCostFiltersResponse> = /*@__PURE__*/
3938
- messageDesc(file_cost_v1_cost, 89);
4050
+ messageDesc(file_cost_v1_cost, 90);
3939
4051
 
3940
4052
  /**
3941
4053
  * Request message for the DeleteCostFilters rpc.
@@ -3963,7 +4075,7 @@ export type DeleteCostFiltersRequest = Message<"blueapi.cost.v1.DeleteCostFilter
3963
4075
  * Use `create(DeleteCostFiltersRequestSchema)` to create a new message.
3964
4076
  */
3965
4077
  export const DeleteCostFiltersRequestSchema: GenMessage<DeleteCostFiltersRequest> = /*@__PURE__*/
3966
- messageDesc(file_cost_v1_cost, 90);
4078
+ messageDesc(file_cost_v1_cost, 91);
3967
4079
 
3968
4080
  /**
3969
4081
  * Request message for the ExportCostFiltersFile rpc.
@@ -4028,7 +4140,7 @@ export type ExportCostFiltersFileRequest = Message<"blueapi.cost.v1.ExportCostFi
4028
4140
  * Use `create(ExportCostFiltersFileRequestSchema)` to create a new message.
4029
4141
  */
4030
4142
  export const ExportCostFiltersFileRequestSchema: GenMessage<ExportCostFiltersFileRequest> = /*@__PURE__*/
4031
- messageDesc(file_cost_v1_cost, 91);
4143
+ messageDesc(file_cost_v1_cost, 92);
4032
4144
 
4033
4145
  /**
4034
4146
  * Response message for the ExportCostFiltersFile rpc.
@@ -4049,7 +4161,7 @@ export type ExportCostFiltersFileResponse = Message<"blueapi.cost.v1.ExportCostF
4049
4161
  * Use `create(ExportCostFiltersFileResponseSchema)` to create a new message.
4050
4162
  */
4051
4163
  export const ExportCostFiltersFileResponseSchema: GenMessage<ExportCostFiltersFileResponse> = /*@__PURE__*/
4052
- messageDesc(file_cost_v1_cost, 92);
4164
+ messageDesc(file_cost_v1_cost, 93);
4053
4165
 
4054
4166
  /**
4055
4167
  * GCP-specific options for ReadCostsRequest.
@@ -4130,7 +4242,7 @@ export type ReadCostsRequestGcpOptions = Message<"blueapi.cost.v1.ReadCostsReque
4130
4242
  * Use `create(ReadCostsRequestGcpOptionsSchema)` to create a new message.
4131
4243
  */
4132
4244
  export const ReadCostsRequestGcpOptionsSchema: GenMessage<ReadCostsRequestGcpOptions> = /*@__PURE__*/
4133
- messageDesc(file_cost_v1_cost, 93);
4245
+ messageDesc(file_cost_v1_cost, 94);
4134
4246
 
4135
4247
  /**
4136
4248
  * A map of "key:value" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -4151,7 +4263,7 @@ export type ReadCostsRequestGcpOptionsFilters = Message<"blueapi.cost.v1.ReadCos
4151
4263
  * Use `create(ReadCostsRequestGcpOptionsFiltersSchema)` to create a new message.
4152
4264
  */
4153
4265
  export const ReadCostsRequestGcpOptionsFiltersSchema: GenMessage<ReadCostsRequestGcpOptionsFilters> = /*@__PURE__*/
4154
- messageDesc(file_cost_v1_cost, 94);
4266
+ messageDesc(file_cost_v1_cost, 95);
4155
4267
 
4156
4268
  /**
4157
4269
  * Request message for GetAccountBudgetAlerts
@@ -4179,7 +4291,7 @@ export type GetAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.GetAccountB
4179
4291
  * Use `create(GetAccountBudgetAlertsRequestSchema)` to create a new message.
4180
4292
  */
4181
4293
  export const GetAccountBudgetAlertsRequestSchema: GenMessage<GetAccountBudgetAlertsRequest> = /*@__PURE__*/
4182
- messageDesc(file_cost_v1_cost, 95);
4294
+ messageDesc(file_cost_v1_cost, 96);
4183
4295
 
4184
4296
  /**
4185
4297
  * Request message for CreateAccountBudgetAlerts
@@ -4214,7 +4326,7 @@ export type CreateAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.CreateAc
4214
4326
  * Use `create(CreateAccountBudgetAlertsRequestSchema)` to create a new message.
4215
4327
  */
4216
4328
  export const CreateAccountBudgetAlertsRequestSchema: GenMessage<CreateAccountBudgetAlertsRequest> = /*@__PURE__*/
4217
- messageDesc(file_cost_v1_cost, 96);
4329
+ messageDesc(file_cost_v1_cost, 97);
4218
4330
 
4219
4331
  /**
4220
4332
  * Request message for UpdateAccountBudgetAlerts
@@ -4253,7 +4365,7 @@ export type UpdateAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.UpdateAc
4253
4365
  * Use `create(UpdateAccountBudgetAlertsRequestSchema)` to create a new message.
4254
4366
  */
4255
4367
  export const UpdateAccountBudgetAlertsRequestSchema: GenMessage<UpdateAccountBudgetAlertsRequest> = /*@__PURE__*/
4256
- messageDesc(file_cost_v1_cost, 97);
4368
+ messageDesc(file_cost_v1_cost, 98);
4257
4369
 
4258
4370
  /**
4259
4371
  * Request message for DeleteAccountBudgetAlerts
@@ -4281,7 +4393,7 @@ export type DeleteAccountBudgetAlertsRequest = Message<"blueapi.cost.v1.DeleteAc
4281
4393
  * Use `create(DeleteAccountBudgetAlertsRequestSchema)` to create a new message.
4282
4394
  */
4283
4395
  export const DeleteAccountBudgetAlertsRequestSchema: GenMessage<DeleteAccountBudgetAlertsRequest> = /*@__PURE__*/
4284
- messageDesc(file_cost_v1_cost, 98);
4396
+ messageDesc(file_cost_v1_cost, 99);
4285
4397
 
4286
4398
  /**
4287
4399
  * Azure-specific options for ReadCostsRequest.
@@ -4325,7 +4437,7 @@ export type ReadCostsRequestAzureOptions = Message<"blueapi.cost.v1.ReadCostsReq
4325
4437
  * Use `create(ReadCostsRequestAzureOptionsSchema)` to create a new message.
4326
4438
  */
4327
4439
  export const ReadCostsRequestAzureOptionsSchema: GenMessage<ReadCostsRequestAzureOptions> = /*@__PURE__*/
4328
- messageDesc(file_cost_v1_cost, 99);
4440
+ messageDesc(file_cost_v1_cost, 100);
4329
4441
 
4330
4442
  /**
4331
4443
  * Request message for the BudgetAlerts rpc.
@@ -4402,7 +4514,7 @@ export type BudgetAlerts = Message<"blueapi.cost.v1.BudgetAlerts"> & {
4402
4514
  * Use `create(BudgetAlertsSchema)` to create a new message.
4403
4515
  */
4404
4516
  export const BudgetAlertsSchema: GenMessage<BudgetAlerts> = /*@__PURE__*/
4405
- messageDesc(file_cost_v1_cost, 100);
4517
+ messageDesc(file_cost_v1_cost, 101);
4406
4518
 
4407
4519
  /**
4408
4520
  * Request message for the ReadBudgetAlerts rpc.
@@ -4423,7 +4535,7 @@ export type ReadBudgetAlertsRequest = Message<"blueapi.cost.v1.ReadBudgetAlertsR
4423
4535
  * Use `create(ReadBudgetAlertsRequestSchema)` to create a new message.
4424
4536
  */
4425
4537
  export const ReadBudgetAlertsRequestSchema: GenMessage<ReadBudgetAlertsRequest> = /*@__PURE__*/
4426
- messageDesc(file_cost_v1_cost, 101);
4538
+ messageDesc(file_cost_v1_cost, 102);
4427
4539
 
4428
4540
  /**
4429
4541
  * Request message for the GetBudgetAlerts rpc.
@@ -4444,7 +4556,7 @@ export type GetBudgetAlertsRequest = Message<"blueapi.cost.v1.GetBudgetAlertsReq
4444
4556
  * Use `create(GetBudgetAlertsRequestSchema)` to create a new message.
4445
4557
  */
4446
4558
  export const GetBudgetAlertsRequestSchema: GenMessage<GetBudgetAlertsRequest> = /*@__PURE__*/
4447
- messageDesc(file_cost_v1_cost, 102);
4559
+ messageDesc(file_cost_v1_cost, 103);
4448
4560
 
4449
4561
  /**
4450
4562
  * Request message for the CreateBudgetAlerts rpc.
@@ -4514,7 +4626,7 @@ export type CreateBudgetAlertsRequest = Message<"blueapi.cost.v1.CreateBudgetAle
4514
4626
  * Use `create(CreateBudgetAlertsRequestSchema)` to create a new message.
4515
4627
  */
4516
4628
  export const CreateBudgetAlertsRequestSchema: GenMessage<CreateBudgetAlertsRequest> = /*@__PURE__*/
4517
- messageDesc(file_cost_v1_cost, 103);
4629
+ messageDesc(file_cost_v1_cost, 104);
4518
4630
 
4519
4631
  /**
4520
4632
  * Request message for the UpdateBudgetAlerts rpc.
@@ -4591,7 +4703,7 @@ export type UpdateBudgetAlertsRequest = Message<"blueapi.cost.v1.UpdateBudgetAle
4591
4703
  * Use `create(UpdateBudgetAlertsRequestSchema)` to create a new message.
4592
4704
  */
4593
4705
  export const UpdateBudgetAlertsRequestSchema: GenMessage<UpdateBudgetAlertsRequest> = /*@__PURE__*/
4594
- messageDesc(file_cost_v1_cost, 104);
4706
+ messageDesc(file_cost_v1_cost, 105);
4595
4707
 
4596
4708
  /**
4597
4709
  * Request message for the DeleteBudgetAlerts rpc.
@@ -4612,7 +4724,7 @@ export type DeleteBudgetAlertsRequest = Message<"blueapi.cost.v1.DeleteBudgetAle
4612
4724
  * Use `create(DeleteBudgetAlertsRequestSchema)` to create a new message.
4613
4725
  */
4614
4726
  export const DeleteBudgetAlertsRequestSchema: GenMessage<DeleteBudgetAlertsRequest> = /*@__PURE__*/
4615
- messageDesc(file_cost_v1_cost, 105);
4727
+ messageDesc(file_cost_v1_cost, 106);
4616
4728
 
4617
4729
  /**
4618
4730
  * @generated from message blueapi.cost.v1.CheckAccountsRequest
@@ -4638,7 +4750,7 @@ export type CheckAccountsRequest = Message<"blueapi.cost.v1.CheckAccountsRequest
4638
4750
  * Use `create(CheckAccountsRequestSchema)` to create a new message.
4639
4751
  */
4640
4752
  export const CheckAccountsRequestSchema: GenMessage<CheckAccountsRequest> = /*@__PURE__*/
4641
- messageDesc(file_cost_v1_cost, 106);
4753
+ messageDesc(file_cost_v1_cost, 107);
4642
4754
 
4643
4755
  /**
4644
4756
  * @generated from message blueapi.cost.v1.CheckAccountsResponse
@@ -4657,7 +4769,7 @@ export type CheckAccountsResponse = Message<"blueapi.cost.v1.CheckAccountsRespon
4657
4769
  * Use `create(CheckAccountsResponseSchema)` to create a new message.
4658
4770
  */
4659
4771
  export const CheckAccountsResponseSchema: GenMessage<CheckAccountsResponse> = /*@__PURE__*/
4660
- messageDesc(file_cost_v1_cost, 107);
4772
+ messageDesc(file_cost_v1_cost, 108);
4661
4773
 
4662
4774
  /**
4663
4775
  * Request message for the ReadInvoiceIds rpc.
@@ -4685,7 +4797,7 @@ export type ReadInvoiceIdsRequest = Message<"blueapi.cost.v1.ReadInvoiceIdsReque
4685
4797
  * Use `create(ReadInvoiceIdsRequestSchema)` to create a new message.
4686
4798
  */
4687
4799
  export const ReadInvoiceIdsRequestSchema: GenMessage<ReadInvoiceIdsRequest> = /*@__PURE__*/
4688
- messageDesc(file_cost_v1_cost, 108);
4800
+ messageDesc(file_cost_v1_cost, 109);
4689
4801
 
4690
4802
  /**
4691
4803
  * Response message for the ReadInvoiceIds rpc.
@@ -4706,7 +4818,7 @@ export type ReadInvoiceIdsResponse = Message<"blueapi.cost.v1.ReadInvoiceIdsResp
4706
4818
  * Use `create(ReadInvoiceIdsResponseSchema)` to create a new message.
4707
4819
  */
4708
4820
  export const ReadInvoiceIdsResponseSchema: GenMessage<ReadInvoiceIdsResponse> = /*@__PURE__*/
4709
- messageDesc(file_cost_v1_cost, 109);
4821
+ messageDesc(file_cost_v1_cost, 110);
4710
4822
 
4711
4823
  /**
4712
4824
  * @generated from message blueapi.cost.v1.PeriodRange
@@ -4746,7 +4858,7 @@ export type PeriodRange = Message<"blueapi.cost.v1.PeriodRange"> & {
4746
4858
  * Use `create(PeriodRangeSchema)` to create a new message.
4747
4859
  */
4748
4860
  export const PeriodRangeSchema: GenMessage<PeriodRange> = /*@__PURE__*/
4749
- messageDesc(file_cost_v1_cost, 110);
4861
+ messageDesc(file_cost_v1_cost, 111);
4750
4862
 
4751
4863
  /**
4752
4864
  * @generated from enum blueapi.cost.v1.PeriodRange.Unit
@@ -4777,7 +4889,7 @@ export enum PeriodRange_Unit {
4777
4889
  * Describes the enum blueapi.cost.v1.PeriodRange.Unit.
4778
4890
  */
4779
4891
  export const PeriodRange_UnitSchema: GenEnum<PeriodRange_Unit> = /*@__PURE__*/
4780
- enumDesc(file_cost_v1_cost, 110, 0);
4892
+ enumDesc(file_cost_v1_cost, 111, 0);
4781
4893
 
4782
4894
  /**
4783
4895
  * Request message for the ReadInvoiceOverviews rpc.
@@ -4826,7 +4938,7 @@ export type ReadInvoiceOverviewsRequest = Message<"blueapi.cost.v1.ReadInvoiceOv
4826
4938
  * Use `create(ReadInvoiceOverviewsRequestSchema)` to create a new message.
4827
4939
  */
4828
4940
  export const ReadInvoiceOverviewsRequestSchema: GenMessage<ReadInvoiceOverviewsRequest> = /*@__PURE__*/
4829
- messageDesc(file_cost_v1_cost, 111);
4941
+ messageDesc(file_cost_v1_cost, 112);
4830
4942
 
4831
4943
  /**
4832
4944
  * Request message for the ReadInvoiceCosts rpc.
@@ -4861,7 +4973,7 @@ export type ReadInvoiceCostsRequest = Message<"blueapi.cost.v1.ReadInvoiceCostsR
4861
4973
  * Use `create(ReadInvoiceCostsRequestSchema)` to create a new message.
4862
4974
  */
4863
4975
  export const ReadInvoiceCostsRequestSchema: GenMessage<ReadInvoiceCostsRequest> = /*@__PURE__*/
4864
- messageDesc(file_cost_v1_cost, 112);
4976
+ messageDesc(file_cost_v1_cost, 113);
4865
4977
 
4866
4978
  /**
4867
4979
  * Request message for the ReadInvoiceGroupCosts rpc.
@@ -4903,7 +5015,7 @@ export type ReadInvoiceGroupCostsRequest = Message<"blueapi.cost.v1.ReadInvoiceG
4903
5015
  * Use `create(ReadInvoiceGroupCostsRequestSchema)` to create a new message.
4904
5016
  */
4905
5017
  export const ReadInvoiceGroupCostsRequestSchema: GenMessage<ReadInvoiceGroupCostsRequest> = /*@__PURE__*/
4906
- messageDesc(file_cost_v1_cost, 113);
5018
+ messageDesc(file_cost_v1_cost, 114);
4907
5019
 
4908
5020
  /**
4909
5021
  * Request message for the ReadAccountOriginalResources rpc.
@@ -4924,7 +5036,7 @@ export type ReadAccountOriginalResourcesRequest = Message<"blueapi.cost.v1.ReadA
4924
5036
  * Use `create(ReadAccountOriginalResourcesRequestSchema)` to create a new message.
4925
5037
  */
4926
5038
  export const ReadAccountOriginalResourcesRequestSchema: GenMessage<ReadAccountOriginalResourcesRequest> = /*@__PURE__*/
4927
- messageDesc(file_cost_v1_cost, 114);
5039
+ messageDesc(file_cost_v1_cost, 115);
4928
5040
 
4929
5041
  /**
4930
5042
  * Request message for the RegisterPayerAccountRequest rpc.
@@ -4974,7 +5086,7 @@ export type RegisterPayerAccountRequest = Message<"blueapi.cost.v1.RegisterPayer
4974
5086
  * Use `create(RegisterPayerAccountRequestSchema)` to create a new message.
4975
5087
  */
4976
5088
  export const RegisterPayerAccountRequestSchema: GenMessage<RegisterPayerAccountRequest> = /*@__PURE__*/
4977
- messageDesc(file_cost_v1_cost, 115);
5089
+ messageDesc(file_cost_v1_cost, 116);
4978
5090
 
4979
5091
  /**
4980
5092
  * @generated from message blueapi.cost.v1.UpdatePayerAccountRequest
@@ -5022,7 +5134,7 @@ export type UpdatePayerAccountRequest = Message<"blueapi.cost.v1.UpdatePayerAcco
5022
5134
  * Use `create(UpdatePayerAccountRequestSchema)` to create a new message.
5023
5135
  */
5024
5136
  export const UpdatePayerAccountRequestSchema: GenMessage<UpdatePayerAccountRequest> = /*@__PURE__*/
5025
- messageDesc(file_cost_v1_cost, 116);
5137
+ messageDesc(file_cost_v1_cost, 117);
5026
5138
 
5027
5139
  /**
5028
5140
  * WORK-IN-PROGRESS: List the prerequisites for cost calculations.
@@ -5050,7 +5162,7 @@ export type ListCalculationPrerequisitesRequest = Message<"blueapi.cost.v1.ListC
5050
5162
  * Use `create(ListCalculationPrerequisitesRequestSchema)` to create a new message.
5051
5163
  */
5052
5164
  export const ListCalculationPrerequisitesRequestSchema: GenMessage<ListCalculationPrerequisitesRequest> = /*@__PURE__*/
5053
- messageDesc(file_cost_v1_cost, 117);
5165
+ messageDesc(file_cost_v1_cost, 118);
5054
5166
 
5055
5167
  /**
5056
5168
  * @generated from message blueapi.cost.v1.CalculationPrerequisite
@@ -5104,9 +5216,11 @@ export type CalculationPrerequisite = Message<"blueapi.cost.v1.CalculationPrereq
5104
5216
  * Use `create(CalculationPrerequisiteSchema)` to create a new message.
5105
5217
  */
5106
5218
  export const CalculationPrerequisiteSchema: GenMessage<CalculationPrerequisite> = /*@__PURE__*/
5107
- messageDesc(file_cost_v1_cost, 118);
5219
+ messageDesc(file_cost_v1_cost, 119);
5108
5220
 
5109
5221
  /**
5222
+ * Response message for the ListCalculationPrerequisites rpc.
5223
+ *
5110
5224
  * @generated from message blueapi.cost.v1.ListCalculationPrerequisitesResponse
5111
5225
  */
5112
5226
  export type ListCalculationPrerequisitesResponse = Message<"blueapi.cost.v1.ListCalculationPrerequisitesResponse"> & {
@@ -5123,7 +5237,7 @@ export type ListCalculationPrerequisitesResponse = Message<"blueapi.cost.v1.List
5123
5237
  * Use `create(ListCalculationPrerequisitesResponseSchema)` to create a new message.
5124
5238
  */
5125
5239
  export const ListCalculationPrerequisitesResponseSchema: GenMessage<ListCalculationPrerequisitesResponse> = /*@__PURE__*/
5126
- messageDesc(file_cost_v1_cost, 119);
5240
+ messageDesc(file_cost_v1_cost, 120);
5127
5241
 
5128
5242
  /**
5129
5243
  * Service for reading aggregated costs for your cloud costs and usages.
@@ -5155,6 +5269,32 @@ export const Cost: GenService<{
5155
5269
  input: typeof GetPayerAccountRequestSchema;
5156
5270
  output: typeof PayerSchema;
5157
5271
  },
5272
+ /**
5273
+ * Lists vendor payer accounts with extended information. WORK IN PROGRESS
5274
+ *
5275
+ * This endpoint returns additional fields beyond the standard ListPayerAccounts response.
5276
+ * For AWS, these are management accounts (formerly known as master or payer accounts); for Azure, these are subscriptions, for GCP, these are projects.
5277
+ *
5278
+ * @generated from rpc blueapi.cost.v1.Cost.ListPayerAccountsExtended
5279
+ */
5280
+ listPayerAccountsExtended: {
5281
+ methodKind: "server_streaming";
5282
+ input: typeof ListPayerAccountsRequestSchema;
5283
+ output: typeof PayerAccountExtendedSchema;
5284
+ },
5285
+ /**
5286
+ * Gets a vendor payer account with extended information. WORK IN PROGRESS
5287
+ *
5288
+ * This endpoint returns additional fields beyond the standard GetPayerAccount response.
5289
+ * For AWS, this means a management account (formerly known as master or payer account); for Azure, this means a subscription, for GCP, this means a project.
5290
+ *
5291
+ * @generated from rpc blueapi.cost.v1.Cost.GetPayerAccountExtended
5292
+ */
5293
+ getPayerAccountExtended: {
5294
+ methodKind: "unary";
5295
+ input: typeof GetPayerAccountRequestSchema;
5296
+ output: typeof PayerAccountExtendedSchema;
5297
+ },
5158
5298
  /**
5159
5299
  * Gets a payer account's import history.
5160
5300
  *