@alphauspkgs/blue-sdk-ts 1.0.51 → 1.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/billing/v1/billing_pb.js +133 -133
- package/billing/v1/billing_pb.ts +922 -831
- package/gc/v1/gc_pb.js +97 -87
- package/gc/v1/gc_pb.ts +177 -84
- package/org/v1/org_pb.js +17 -2
- package/org/v1/org_pb.ts +78 -1
- package/package.json +1 -1
package/billing/v1/billing_pb.ts
CHANGED
|
@@ -53,7 +53,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
53
53
|
* Describes the file billing/v1/billing.proto.
|
|
54
54
|
*/
|
|
55
55
|
export const file_billing_v1_billing: GenFile = /*@__PURE__*/
|
|
56
|
-
fileDesc("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SEmJsdWVhcGkuYmlsbGluZy52MSKgBAoMQmlsbGluZ0dyb3VwEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYByABKAkSDAoEdHlwZRgMIAEoCRIQCghoYXNDaGlsZBgNIAEoCBI+ChBiaWxsaW5nR3JvdXBJbmZvGAogASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SOgoOYWNjb3VudE9wdGlvbnMYCCABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSJgoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50EiIKBHRhZ3MYBiADKAsyFC5ibHVlYXBpLmFwaS5Db3N0VGFnEkgKD2ludm9pY2VTZXR0aW5ncxgFIAEoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSSAoPYWRkaXRpb25hbEl0ZW1zGAsgASgLMi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIyCgphd3NPcHRpb25zGAkgASgLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c09wdGlvbnMioAEKG0JpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIpCgNhd3MYASADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKwoFYXp1cmUYAiADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKQoDZ2NwGAMgAygLMhwuYmx1ZWFwaS5hcGkuQWRkaXRpb25hbEl0ZW1zIu4BChtCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQwoDYXdzGAEgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcSRQoFYXp1cmUYAiABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxJDCgNnY3AYAyABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZyLxAwoiQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxIQCghjYWxjVHlwZRgBIAEoCRIUCgxkaXNjb3VudFJhdGUYAiABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAMgASgJEhcKD3N1YnN0aXR1dGlvbkZpeBgEIAEoARIYChBzdWJzdGl0dXRpb25SYXRlGAUgASgBEhIKCnN1cHBvcnRGZWUYBiABKAkSEwoLc3VwcG9ydFJhdGUYByABKAESEgoKc3VwcG9ydEZpeBgIIAEoARIPCgd0YXhSYXRlGAkgASgBEhAKCGN1cnJlbmN5GAogASgJEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYCyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYDCABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYDSABKAkSIQoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgOIAEoCRIfChdzdWJzdGl0dXRpb25GZWVDYWxjVHlwZRgPIAEoCRIbChNzdXBwb3J0QW1vdW50VGFyZ2V0GBAgASgJEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GBEgASgJEhwKFHN1cHBvcnRGZWVBZGp1c3RtZW50GBIgASgBIpIBChhMaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSDwoHdmVuZG9ycxgCIAEoCRIQCghjYWxjVHlwZRgDIAEoCRITCgtkaXNwbGF5Q29zdBgEIAEoCRIOCgZiZ1R5cGUYBSABKAkiswQKGUNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEh0KFWludm9pY2VMYXlvdXRDb25maWdJZBgUIAEoCSI1CgpBd3NPcHRpb25zEhYKDnVzZVByb0Zvcm1hQ3VyGAEgASgIEg8KB3BheWVySWQYAiABKAkiqwEKDkFjY291bnRPcHRpb25zEjEKA2F3cxgBIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjEKA2djcBgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjMKBWF6dXJlGAMgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlZ2lzdGVyQWNjb3VudHMiTgoQUmVnaXN0ZXJBY2NvdW50cxIPCgdlbmFibGVkGAEgASgIEhEKCWFjY291bnRJZBgCIAEoCRIWCg51bkxpbmtPblJlbW92ZRgDIAEoCCJUCg5WZW5kb3JBY2NvdW50cxIOCgZ2ZW5kb3IYASABKAkSMgoIYWNjb3VudHMYAiADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkImAKDEF6dXJlT3B0aW9ucxIVCg1yZXNvdXJjZUdyb3VwGAEgASgIEhsKE2FwcGx5UGNFYXJuZWRDcmVkaXQYAiABKAgSHAoUYXBwbHlDYW1wYWlnblByaWNpbmcYAyABKAgiqgcKH0NyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEhkKEWludm9pY2VUZW1wbGF0ZUlkGBQgASgJEjMKC3RhZ1NldHRpbmdzGBUgAygLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ1NldHRpbmcSOAoNbm9uVGFnU2V0dGluZxgWIAEoCzIhLmJsdWVhcGkuYmlsbGluZy52MS5Ob25UYWdTZXR0aW5nEjoKDnZlbmRvckFjY291bnRzGBcgAygLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLlZlbmRvckFjY291bnRzElsKDGN1c3RvbUZpZWxkcxgYIAMoCzJFLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWRSZXF1ZXN0LkN1c3RvbUZpZWxkc0VudHJ5EjYKDGF6dXJlT3B0aW9ucxgZIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5BenVyZU9wdGlvbnMaMwoRQ3VzdG9tRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASL/AQogQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USRwoDYXdzGAEgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkkKBWF6dXJlGAIgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkcKA2djcBgDIAEoCzI6LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZVZlbmRvciL1AwomQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VWZW5kb3ISEAoIY2FsY1R5cGUYASABKAkSFAoMZGlzY291bnRSYXRlGAIgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgDIAEoCRIXCg9zdWJzdGl0dXRpb25GaXgYBCABKAESGAoQc3Vic3RpdHV0aW9uUmF0ZRgFIAEoARISCgpzdXBwb3J0RmVlGAYgASgJEhMKC3N1cHBvcnRSYXRlGAcgASgBEhIKCnN1cHBvcnRGaXgYCCABKAESDwoHdGF4UmF0ZRgJIAEoARIQCghjdXJyZW5jeRgKIAEoCRIbChNkaXNjb3VudFRhcmdldFVzYWdlGAsgASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGAwgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGA0gASgJEiEKGXN1YnN0aXR1dGlvbkZlZUNhbGNUYXJnZXQYDiABKAkSHwoXc3Vic3RpdHV0aW9uRmVlQ2FsY1R5cGUYDyABKAkSGwoTc3VwcG9ydEFtb3VudFRhcmdldBgQIAEoCRIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgRIAEoCRIcChRzdXBwb3J0RmVlQWRqdXN0bWVudBgSIAEoASJjChZHZXRCaWxsaW5nR3JvdXBSZXF1ZXN0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlEKF0dldEJpbGxpbmdHcm91cFJlc3BvbnNlEjYKDGJpbGxpbmdHcm91cBgBIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAilgEKC0FjY2Vzc0dyb3VwEhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSFwoPYWNjZXNzR3JvdXBOYW1lGAIgASgJEh4KFmFjY2Vzc0dyb3VwRGVzY3JpcHRpb24YAyABKAkSNwoNYmlsbGluZ0dyb3VwcxgEIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiXgoVR2V0QWNjZXNzR3JvdXBSZXF1ZXN0EhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSLgoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siTgoWR2V0QWNjZXNzR3JvdXBSZXNwb25zZRI0CgthY2Nlc3NHcm91cBgBIAEoCzIfLmJsdWVhcGkuYmlsbGluZy52MS5BY2Nlc3NHcm91cCKvAgoSQXdzRGFpbHlSdW5IaXN0b3J5EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg0KBW1vbnRoGAMgASgJEkAKCGFjY291bnRzGAQgAygLMi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50GpQBCgdBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRJHCgdoaXN0b3J5GAIgAygLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50Lkhpc3RvcnkaLQoHSGlzdG9yeRIRCgl0aW1lc3RhbXAYASABKAkSDwoHdHJpZ2dlchgCIAEoCSI/Ch1MaXN0QXdzRGFpbHlSdW5IaXN0b3J5UmVxdWVzdBINCgVtb250aBgBIAEoCRIPCgdncm91cElkGAIgASgJIlYKGkxpc3RVc2FnZUNvc3RzRHJpZnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRINCgVtb250aBgDIAEoCSKGAQoPVXNhZ2VDb3N0c0RyaWZ0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg8KB2FjY291bnQYAyABKAkSEAoIc25hcHNob3QYBCABKAESDwoHY3VycmVudBgFIAEoARIMCgRkaWZmGAYgASgBIjIKEUdldEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSI5ChhFeHBvcnRJbnZvaWNlRmlsZVJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIPCgdncm91cElkGAIgASgJIigKGUV4cG9ydEludm9pY2VGaWxlUmVzcG9uc2USCwoDdXJsGAEgASgJIjUKI1JlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSIkCiJMaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Il4KIUdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIKCgJpZBgBIAEoCRItCglmaWVsZE1hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrImoKF0ludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHY3JlYXRlZBgEIAEoCRIPCgd1cGRhdGVkGAUgASgJIhwKGkxpc3RJbnZvaWNlVGVtcGxhdGVSZXF1ZXN0Il0KKFVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZVJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISHwoRaW52b2ljZVRlbXBsYXRlSWQYAiABKAlCBOJBAQIingIKG0xpc3RJbnZvaWNlVGVtcGxhdGVSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2NyZWF0ZWQYBCABKAkSDwoHdXBkYXRlZBgFIAEoCRIZChFudW1iZXJPZkNvbm5lY3RlZBgGIAEoBRJQChVjb25uZWN0ZWRCaWxsaW5nR3JvdXAYByADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZUNvbm5lY3RlZEJpbGxpbmdHcm91cHMSQQoIaW52b2ljZXMYCCABKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzIiIKIEdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0IkgKIUdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXNwb25zZRIjChtzaG93UklTUFVwZnJvbnRUaW1lSW50ZXJ2YWwYASABKAgirAEKI1VwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0ElUKB3NldHRpbmcYASADKAsyRC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QuU2V0dGluZ0VudHJ5Gi4KDFNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBImwKHUludm9pY2VDb25uZWN0ZWRCaWxsaW5nR3JvdXBzEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkiPAopTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKHAQoeQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEg8KB2FjY291bnQYAiABKAkSSAoQc2VydmljZURpc2NvdW50cxgDIAEoCzIuLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyI4ChdBY2NvdW50U2VydmljZURpc2NvdW50cxIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkifQorQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIm0KLENyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIn0KK1VwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyJtCixVcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyI+CitEZWxldGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkifQorUmVtb3ZlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIk8KMENyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEgoKAmlkGAIgASgJIj8KMUNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiTwowVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSCgoCaWQYAiABKAkiPwoxVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSJDCjBEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSJXChRDcmVhdGVJbnZvaWNlUmVxdWVzdBIMCgRkYXRlGAQgASgJEg4KBnZlbmRvchgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJIiUKF0dldEludm9pY2VTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIigKGExpc3RJbnZvaWNlU3RhdHVzUmVxdWVzdBIMCgRkYXRlGAEgASgJImAKHFVwZGF0ZUludm9pY2VQcmV2aWV3c1JlcXVlc3QSDAoEZGF0ZRgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJEg8KB2VuYWJsZWQYBCABKAgizwEKFUNyZWF0ZVJlc2VsbGVyUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg0KBWVtYWlsGAIgASgJEhAKCHBhc3N3b3JkGAMgASgJEhQKDG5vdGlmaWNhdGlvbhgEIAEoCBI2Cgp3YXZlQ29uZmlnGAUgAygLMiIuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyQ29uZmlnEjYKCmFxdWFDb25maWcYBiADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWciRgoUTGlzdFJlc2VsbGVyc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siUAoSR2V0UmVzZWxsZXJSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIqYCChVVcGRhdGVSZXNlbGxlclJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISEwoFZW1haWwYAiABKAlCBOJBAQESFwoIcGFzc3dvcmQYAyABKAlCBeJBAgQBEjwKCndhdmVDb25maWcYBCADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWdCBOJBAQESPAoKYXF1YUNvbmZpZxgFIAMoCzIiLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlckNvbmZpZ0IE4kEBARIbCgxub3RpZmljYXRpb24YBiABKAhCBeJBAgQBEjQKCnVwZGF0ZU1hc2sYByABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQECIiMKFURlbGV0ZVJlc2VsbGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJKChhHZXRCaWxsaW5nU2V0dGluZ1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sixwIKGUdldEJpbGxpbmdTZXR0aW5nUmVzcG9uc2USMAoJeWVhck1vbnRoGAEgAygLMh0uYmx1ZWFwaS5hcGkucmlwcGxlLlllYXJNb250aBI0Cg5yb3VuZGluZ01ldGhvZBgCIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI6ChRleHBvcnRSb3VuZGluZ01ldGhvZBgDIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI4Cg1pbnZvaWNlTGF5b3V0GAQgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQSMwoOaW52b2ljZUR1ZURhdGUYBSABKAsyGy5ibHVlYXBpLmFwaS5yaXBwbGUuRHVlRGF0ZRIXCg9zdXBwb3J0Q3VycmVuY3kYBiADKAkiOQoYTGlzdEV4Y2hhbmdlUmF0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSJlChxTZXRHbG9iYWxFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEidwobU2V0UGF5ZXJFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSDQoFbW9udGgYAyABKAkSEAoIY3VycmVuY3kYBCABKAkSFAoMZXhjaGFuZ2VSYXRlGAUgASgBImwKIlNldEJpbGxpbmdHcm91cEV4Y2hhbmdlUmF0ZVJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEi4gEKGUxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2USDQoFbW9udGgYASABKAkSNgoGY29tbW9uGAIgASgLMiYuYmx1ZWFwaS5hcGkucmlwcGxlLkNvbW1vbkV4Y2hhbmdlUmF0ZRJCCgxiaWxsaW5nR3JvdXAYAyADKAsyLC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlEjoKBXBheWVyGAQgASgLMisuYmx1ZWFwaS5hcGkucmlwcGxlLlZlbmRvclBheWVyRXhjaGFuZ2VSYXRlIkkKF0xpc3RBY2Nlc3NHcm91cHNSZXF1ZXN0Ei4KCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlQKGENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhUKDWJpbGxpbmdHcm91cHMYAyADKAkiYAoYVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSFQoNYmlsbGluZ0dyb3VwcxgEIAMoCSImChhEZWxldGVBY2Nlc3NHcm91cFJlcXVlc3QSCgoCaWQYASABKAkifQoSTGlzdEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAMgASgJEi4KCmZpZWxkX21hc2sYBCABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIp0JChNMaXN0SW52b2ljZVJlc3BvbnNlEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkSGgoSZmluYWxpemF0aW9uU3RhdHVzGAUgASgJEhEKCWlzQ3JlYXRlZBgGIAEoCBIZChFpc1NldHRpbmdNb2RpZmllZBgHIAEoCBITCgtjcmVhdGVkRGF0ZRgIIAEoCRITCgt1cGRhdGVkRGF0ZRgJIAEoCRIWCg5jcmVhdGVkVmVuZG9ycxgKIAMoCRITCgtpc1B1Ymxpc2hlZBgLIAEoCBJdChN2ZW5kb3JCaWxsaW5nQW1vdW50GAwgAygLMkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuVmVuZG9yQmlsbGluZ0Ftb3VudEVudHJ5EhoKEmJpbGxpbmdBbW91bnRUb3RhbBgNIAEoCRIQCghjdXJyZW5jeRgOIAEoCRINCgV1cmxJZBgPIAEoCRJtChtjcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmcYECADKAsySC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZS5DcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRJpChlzYXZlZFZlbmRvckludm9pY2VTZXR0aW5nGBEgAygLMkYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuU2F2ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5Em0KG2RlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZxgSIAMoCzJILmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlc3BvbnNlLkRlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EhAKCGhhc0NoaWxkGBMgASgIEhcKD2F0dGFjaGVkVmVuZG9ycxgUIAMoCRo6ChhWZW5kb3JCaWxsaW5nQW1vdW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpnCiBDcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzOgI4ARplCh5TYXZlZFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXR0aW5nczoCOAEaZwogRGVmYXVsdFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXR0aW5nczoCOAEiKQobTGlzdEFiY0JpbGxpbmdHcm91cHNSZXF1ZXN0EgoKAmlkGAEgASgJIk4KIkxpc3RBYmNCaWxsaW5nR3JvdXBBY2NvdW50c1JlcXVlc3QSDwoHcGF5ZXJJZBgBIAEoCRIXCg9iaWxsaW5nR3JvdXBBcm4YAiABKAkijwEKD0FiY0JpbGxpbmdHcm91cBILCgNhcm4YASABKAkSDAoEbmFtZRgCIAEoCRIUCgxjcmVhdGlvblRpbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSGAoQcHJpbWFyeUFjY291bnRJZBgFIAEoCRIMCgRzaXplGAYgASgJEg4KBnN0YXR1cxgHIAEoCSI0CgpBYmNBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCSJiCh1SZWFkSW52b2ljZUFkanVzdG1lbnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEQoJYWNjb3VudElkGAIgASgJEg0KBW1vbnRoGAMgASgJEg8KB2ZlZVR5cGUYBCABKAkimQEKHFJlYWRBZGp1c3RtZW50RW50cmllc1JlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhMKBW1vbnRoGAIgASgJQgTiQQEBGk4KIkFkanVzdG1lbnRFbnRyaWVzUmVxdWVzdEF3c09wdGlvbnMSEwoLc3BwRGlzY291bnQYASABKAgSEwoLZWRwRGlzY291bnQYAiABKAgiQwoZR2V0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQIingMKG0FwcGx5QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISUwoHc2V0dGluZxgCIAEoCzI8LmJsdWVhcGkuYmlsbGluZy52MS5BcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQXBwbHlTZXR0aW5nQgTiQQECEhUKB2VudHJpZXMYAyADKAlCBOJBAQIa/AEKDEFwcGx5U2V0dGluZxITCgVtb250aBgBIAEoCUIE4kEBARIVCgd0YXhGcmVlGAIgASgIQgTiQQEBEmoKDGV4Y2hhbmdlUmF0ZRgDIAMoCzJOLmJsdWVhcGkuYmlsbGluZy52MS5BcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQXBwbHlTZXR0aW5nLkV4Y2hhbmdlUmF0ZUVudHJ5QgTiQQEBEh8KEWJpbGxpbmdJbnRlcm5hbElkGAQgASgJQgTiQQEBGjMKEUV4Y2hhbmdlUmF0ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEiTAodUmVzdG9yZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhUKB2VudHJpZXMYAyADKAlCBOJBAQIiXwobU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAhIYCgpzdGFydE1vbnRoGAMgASgJQgTiQQECIvwBCh5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECElYKBmNvbmZpZxgDIAMoCzJALmJsdWVhcGkuYmlsbGluZy52MS5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQWNjb3VudENvbmZpZ0IE4kEBAhIhChNhY2NvdW50Rm9yUmVtYWluaW5nGAQgASgJQgTiQQECGjcKDUFjY291bnRDb25maWcSEAoCaWQYASABKAlCBOJBAQISFAoGYW1vdW50GAIgASgBQgTiQQECIkwKIlJlc3RvcmVTcGxpdEFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECIk8KJVJlc3RvcmVBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECIn4KFkNyZWF0ZUN1c3RvbUZlZVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhMKBW1vbnRoGAIgASgJQgTiQQECEjkKB2VudHJpZXMYAyADKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmVlRW50cnlCBOJBAQIioQMKDkN1c3RvbUZlZUVudHJ5EhcKCWFjY291bnRJZBgBIAEoCUIE4kEBAhIcCg5wYXllckFjY291bnRJZBgCIAEoCUIE4kEBAhIVCgdmZWVUeXBlGAMgASgJQgTiQQECEhkKC21vYmluZ2lUeXBlGAQgASgJQgTiQQECEhQKBmFtb3VudBgFIAEoAUIE4kEBAhIaCgxjdXJyZW5jeUNvZGUYBiABKAlCBOJBAQISGQoLZGVzY3JpcHRpb24YByABKAlCBOJBAQISGQoLcHJvZHVjdENvZGUYCCABKAlCBOJBAQESGQoLcHJvZHVjdE5hbWUYCSABKAlCBOJBAQESGAoKdXNhZ2VTdGFydBgKIAEoCUIE4kEBARIaCgx0aW1lSW50ZXJ2YWwYCyABKAlCBOJBAQESQAoEbWV0YRgMIAMoCzIsLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GZWVFbnRyeS5NZXRhRW50cnlCBOJBAQEaKwoJTWV0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiKgoXQ3JlYXRlQ3VzdG9tRmVlUmVzcG9uc2USDwoHY3JlYXRlZBgBIAEoBSJ9Ch9MaXN0QWRqdXN0bWVudEVudHJ5SXRlbXNSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhITCgVtb250aBgCIAEoCUIE4kEBAhIZCgttb2JpbmdpVHlwZRgDIAEoCUIE4kEBARIUCgZzdGF0dXMYBCABKAlCBOJBAQEiugEKE0FkanVzdG1lbnRFbnRyeUl0ZW0SNQoFZW50cnkYASABKAsyJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWRqdXN0bWVudEVudHJ5Ej8KBG1ldGEYAiADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuQWRqdXN0bWVudEVudHJ5SXRlbS5NZXRhRW50cnkaKwoJTWV0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiPAobTGlzdEFjY291bnRSZXNvdXJjZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSJKCg9SZXNvdXJjZUFjY291bnQSDwoHcGF5ZXJJZBgBIAEoCRISCgpjdXN0b21lcklkGAIgASgJEhIKCnJlZ2lzdGVyZWQYAyABKAgiSAoaR2V0QWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhoKEmluY2x1ZGVTUFBEaXNjb3VudBgCIAEoCCKNAQodQ3JlYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEioKBmNvbmZpZxgCIAMoCzIaLmJsdWVhcGkuYXBpLkNvbmZpZ0ZpbHRlcnMSMAoIYWNjb3VudHMYAyADKAsyHi5ibHVlYXBpLmFwaS5NYW5hZ2VtZW50QWNjb3VudCKNAQodVXBkYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEioKBmNvbmZpZxgCIAMoCzIaLmJsdWVhcGkuYXBpLkNvbmZpZ0ZpbHRlcnMSMAoIYWNjb3VudHMYAyADKAsyHi5ibHVlYXBpLmFwaS5NYW5hZ2VtZW50QWNjb3VudCIvCh1EZWxldGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiZwoZUmVhZFVudGFnZ2VkR3JvdXBzUmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISNAoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQEiXAokUmVhZEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZXNSZXF1ZXN0EjQKCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBImYKIkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSCgoCaWQYASABKAkSNAoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQEifAolQ3JlYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEjAKBmNvbmZpZxgDIAEoCzIgLmJsdWVhcGkuYXBpLnJpcHBsZS5NZXRob2RDb25maWcixQEKJVVwZGF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISVAoYY3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlGAIgASgLMiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUIE4kEBAhI0Cgp1cGRhdGVNYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBAiIzCiVEZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EgoKAmlkGAEgASgJIl0KLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIiyQEKL0dldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlc3BvbnNlEhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgDIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIsCghhY2NvdW50cxgEIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnRCBOJBAQEi9wIKLlNldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISgAEKB3NldHRpbmcYAyADKAsyaS5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhqUAQomQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmcSEAoCaWQYASABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAiABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISFgoIYWNjb3VudHMYAyADKAlCBOJBAQEiYAoxRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBIVCgdncm91cElkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAiKRAQokQ3JlYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSRgoHc2V0dGluZxgDIAEoCzI1LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50c1NldHRpbmcixQEKJFVwZGF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhJVChdpbnZvaWNlU2VydmljZURpc2NvdW50cxgCIAEoCzIuLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50c0IE4kEBAhI0Cgp1cGRhdGVNYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBAiIyCiREZWxldGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSCgoCaWQYASABKAkibgoHVGFnRGF0YRISCgpjdXN0b21lcklkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIUCgxjdXN0b21lck5hbWUYAyABKAkSJgoEdGFncxgEIAMoCzIYLmJsdWVhcGkuYmlsbGluZy52MS5UYWdzIiMKBFRhZ3MSCwoDa2V5GAEgASgJEg4KBnZhbHVlcxgCIAMoCSIuCg5HZXRUYWdzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDAoEdHlwZRgCIAEoCSI7CgtDdXN0b21GaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiXgoXQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSDQoFdmFsdWUYASABKAkSNAoLY3VzdG9tRmllbGQYAiABKAsyHy5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmllbGQiNQoiTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJIoUBCiNMaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXNwb25zZRIPCgdncm91cElkGAEgASgJEk0KGGJpbGxpbmdHcm91cEN1c3RvbUZpZWxkcxgCIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBDdXN0b21GaWVsZCI8ChhDcmVhdGVDdXN0b21GaWVsZFJlcXVlc3QSCwoDa2V5GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIkgKGFVwZGF0ZUN1c3RvbUZpZWxkUmVxdWVzdBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiJgoYRGVsZXRlQ3VzdG9tRmllbGRSZXF1ZXN0EgoKAmlkGAEgASgJIhgKFkxpc3RDdXN0b21GaWVsZFJlcXVlc3QiawoXQ3JlYXRlRnJlZUZvcm1hdFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSLwoFaXRlbXMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuRnJlZUZvcm1JdGVtImEKDEZyZWVGb3JtSXRlbRINCgVsYWJlbBgBIAEoCRIQCgh1bml0Q29zdBgCIAEoAxINCgV0b3RhbBgFIAEoAxIQCghxdWFudGl0eRgDIAEoDRIPCgdlbmFibGVkGAQgASgIIjoKF0RlbGV0ZUZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSDgoGdmVuZG9yGAIgASgJIj0KFEdldEZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSFAoMaXNBc3NvY2lhdGVkGAIgASgIIm4KFUdldEZyZWVGb3JtYXRSZXNwb25zZRIPCgdncm91cElkGAMgASgJEg4KBnZlbmRvchgBIAEoCRI0CgpmcmVlRm9ybWF0GAIgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSI6CiZHZXRNb250aGx5TWlzY0ZlZUltcG9ydFRlbXBsYXRlUmVxdWVzdBIQCghsYW5ndWFnZRgBIAEoCSL5AQocTW9udGhseU1pc2NGZWVJbXBvcnRUZW1wbGF0ZRIOCgZmb3JtYXQYASABKAkSFgoOZm9ybWF0X3ZlcnNpb24YAiABKAkSDwoHaGVhZGVycxgDIAMoCRISCgpzYW1wbGVfcm93GAQgAygJEhUKDWFsbG93ZWRfbW9kZXMYBSADKAkSGwoTbWF4X2ZpbGVfc2l6ZV9ieXRlcxgGIAEoAxIQCghtYXhfcm93cxgHIAEoBRJGCgtmaWVsZF9ydWxlcxgIIAMoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZUltcG9ydEZpZWxkUnVsZSJlCh1Nb250aGx5TWlzY0ZlZUltcG9ydEZpZWxkUnVsZRINCgVmaWVsZBgBIAEoCRIQCghyZXF1aXJlZBgCIAEoCBIOCgZmb3JtYXQYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkizgEKIEJ1bGtJbXBvcnRNb250aGx5TWlzY0ZlZXNSZXF1ZXN0EhsKDWJpbGxpbmdfbW9udGgYASABKAlCBOJBAQISGQoLY3N2X2NvbnRlbnQYAiABKAlCBOJBAQISFwoJZmlsZV9uYW1lGAMgASgJQgTiQQECEgwKBG1vZGUYBCABKAkSFAoGZm9ybWF0GAUgASgJQgTiQQECEhwKDmZvcm1hdF92ZXJzaW9uGAYgASgJQgTiQQECEhcKD2lkZW1wb3RlbmN5X2tleRgHIAEoCSKRAgoaTGlzdE1vbnRobHlNaXNjRmVlc1JlcXVlc3QSGwoNYmlsbGluZ19tb250aBgBIAEoCUIE4kEBAhIYChBiaWxsaW5nX2dyb3VwX2lkGAIgASgJEiAKGGJpbGxpbmdfZ3JvdXBfbmFtZV9xdWVyeRgDIAEoCRISCgppdGVtX3F1ZXJ5GAQgASgJEg4KBnNvdXJjZRgFIAEoCRISCgp1cGRhdGVkX2J5GAYgASgJEhUKDXVwZGF0ZWRfYWZ0ZXIYByABKAkSFgoOdXBkYXRlZF9iZWZvcmUYCCABKAkSEQoJcGFnZV9zaXplGAkgASgFEhIKCnBhZ2VfdG9rZW4YCiABKAkSDAoEc29ydBgLIAEoCSJ9ChtMaXN0TW9udGhseU1pc2NGZWVzUmVzcG9uc2USMAoEcm93cxgBIAMoCzIiLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiTQoYR2V0TW9udGhseU1pc2NGZWVSZXF1ZXN0EhQKBnJvd19pZBgBIAEoCUIE4kEBAhIbCg1iaWxsaW5nX21vbnRoGAIgASgJQgTiQQECIuwBChxFeHBvcnRNb250aGx5TWlzY0ZlZXNSZXF1ZXN0EhsKDWJpbGxpbmdfbW9udGgYASABKAlCBOJBAQISGAoQYmlsbGluZ19ncm91cF9pZBgCIAEoCRIgChhiaWxsaW5nX2dyb3VwX25hbWVfcXVlcnkYAyABKAkSEgoKaXRlbV9xdWVyeRgEIAEoCRIOCgZzb3VyY2UYBSABKAkSEgoKdXBkYXRlZF9ieRgGIAEoCRIVCg11cGRhdGVkX2FmdGVyGAcgASgJEhYKDnVwZGF0ZWRfYmVmb3JlGAggASgJEgwKBHNvcnQYCSABKAkiWwodRXhwb3J0TW9udGhseU1pc2NGZWVzUmVzcG9uc2USEwoLY3N2X2NvbnRlbnQYASABKAwSEgoKZXhwb3J0X3JlZhgCIAEoCRIRCglmaWxlX25hbWUYAyABKAkiPQoeR2V0TW9udGhseU1pc2NGZWVJbXBvcnRSZXF1ZXN0EhsKDWltcG9ydF9qb2JfaWQYASABKAlCBOJBAQIifQobVXBzZXJ0TW9udGhseU1pc2NGZWVSZXF1ZXN0Eg4KBnJvd19pZBgBIAEoCRI1CgNyb3cYAiABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuTW9udGhseU1pc2NGZWVCBOJBAQISFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJIlAKG0RlbGV0ZU1vbnRobHlNaXNjRmVlUmVxdWVzdBIUCgZyb3dfaWQYASABKAlCBOJBAQISGwoNYmlsbGluZ19tb250aBgCIAEoCUIE4kEBAiKsAgoOTW9udGhseU1pc2NGZWUSDgoGcm93X2lkGAEgASgJEhUKDWJpbGxpbmdfbW9udGgYAiABKAkSGAoQYmlsbGluZ19ncm91cF9pZBgDIAEoCRIaChJiaWxsaW5nX2dyb3VwX25hbWUYBCABKAkSEQoJaXRlbV9uYW1lGAUgASgJEhAKCHF1YW50aXR5GAYgASgJEhEKCXVuaXRfY29zdBgHIAEoCRIOCgZhbW91bnQYCCABKAkSDgoGc291cmNlGAkgASgJEhUKDWltcG9ydF9qb2JfaWQYCiABKAkSEgoKY3JlYXRlZF9ieRgLIAEoCRISCgpjcmVhdGVkX2F0GAwgASgJEhIKCnVwZGF0ZWRfYnkYDSABKAkSEgoKdXBkYXRlZF9hdBgOIAEoCSLjAwoaTW9udGhseU1pc2NGZWVJbXBvcnRSZXN1bHQSFQoNaW1wb3J0X2pvYl9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDAoEbW9kZRgDIAEoCRIVCg1iaWxsaW5nX21vbnRoGAQgASgJEhEKCWZpbGVfbmFtZRgFIAEoCRIRCglmaWxlX2hhc2gYBiABKAkSEgoKdG90YWxfcm93cxgHIAEoBRISCgp2YWxpZF9yb3dzGAggASgFEhUKDWluc2VydGVkX3Jvd3MYCSABKAUSFAoMdXBkYXRlZF9yb3dzGAogASgFEhYKDnVuY2hhbmdlZF9yb3dzGAsgASgFEhQKDGRlbGV0ZWRfcm93cxgMIAEoBRITCgtmYWlsZWRfcm93cxgNIAEoBRIjChtyZXBsYWNlX21vbnRoX2V4aXN0aW5nX3Jvd3MYDiABKAUSEgoKZXhwb3J0X3JlZhgPIAEoCRJGCgtyb3dfcmVzdWx0cxgQIAMoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZUltcG9ydFJvd1Jlc3VsdBISCgpjcmVhdGVkX2J5GBEgASgJEhIKCmNyZWF0ZWRfYXQYEiABKAkSEgoKdXBkYXRlZF9hdBgTIAEoCSKXAwodTW9udGhseU1pc2NGZWVJbXBvcnRSb3dSZXN1bHQSFgoOY3N2X3Jvd19udW1iZXIYASABKAUSDgoGYWN0aW9uGAIgASgJEg4KBnJvd19pZBgDIAEoCRIVCg1iaWxsaW5nX21vbnRoGAQgASgJEhgKEGJpbGxpbmdfZ3JvdXBfaWQYBSABKAkSGgoSYmlsbGluZ19ncm91cF9uYW1lGAYgASgJEhEKCWl0ZW1fbmFtZRgHIAEoCRIQCghxdWFudGl0eRgIIAEoCRIRCgl1bml0X2Nvc3QYCSABKAkSDgoGYW1vdW50GAogASgJEk0KDnByZXZpb3VzX3ZhbHVlGAsgASgLMjUuYmx1ZWFwaS5iaWxsaW5nLnYxLk1vbnRobHlNaXNjRmVlSW1wb3J0UHJldmlvdXNWYWx1ZRJMChF2YWxpZGF0aW9uX2Vycm9ycxgMIAMoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZVZhbGlkYXRpb25FcnJvchIMCgRub3RlGA0gASgJIlgKIU1vbnRobHlNaXNjRmVlSW1wb3J0UHJldmlvdXNWYWx1ZRIQCghxdWFudGl0eRgBIAEoCRIRCgl1bml0X2Nvc3QYAiABKAkSDgoGYW1vdW50GAMgASgJIk0KHU1vbnRobHlNaXNjRmVlVmFsaWRhdGlvbkVycm9yEg0KBWZpZWxkGAEgASgJEgwKBGNvZGUYAiABKAkSDwoHbWVzc2FnZRgDIAEoCSJ3Ch5VcGRhdGVUYWdzQWRkaW5nU2V0dGluZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg8KB2dyb3VwSWQYAiABKAkSNAoFaXRlbXMYAyADKAsyJS5ibHVlYXBpLmJpbGxpbmcudjEuVGFnc0FkZGluZ1NldHRpbmciPgobR2V0VGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJIkkKEVRhZ3NBZGRpbmdTZXR0aW5nEg8KB2dyb3VwSWQYASABKAkSEgoKY3VzdG9tZXJJZBgCIAEoCRIPCgd0YWdLZXlzGAMgAygJIk0KHUV4cG9ydFNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhQKBmZvcm1hdBgBIAEoCUIE4kEBAhIWCghsYW5ndWFnZRgCIAEoCUIE4kEBASJvCitFeHBvcnRBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhQKBmZvcm1hdBgBIAEoCUIE4kEBAhIWCghsYW5ndWFnZRgCIAEoCUIE4kEBARISCgpkaXJlY3RMaW5rGAMgASgIInQKMEV4cG9ydEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESEgoKZGlyZWN0TGluaxgDIAEoCCI2ChxFeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXF1ZXN0EhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBIjUKHUV4cG9ydEJpbGxpbmdHcm91cENzdlJlc3BvbnNlEhQKDGRvd25sb2FkTGluaxgBIAEoCSJcCh5FeHBvcnRJbnZvaWNlU2V0dGluZ0NzdlJlcXVlc3QSFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESIgoUaW5jbHVkZU1pc2NlbGxhbmVvdXMYAyABKAhCBOJBAQEiNwofRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXNwb25zZRIUCgxkb3dubG9hZExpbmsYASABKAkiQAotR2V0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkiPAouR2V0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSK5AQohQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSUwoHaWRUb0tleRgCIAMoCzJCLmJsdWVhcGkuYmlsbGluZy52MS5BZGRCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QuSWRUb0tleUVudHJ5Gi4KDElkVG9LZXlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIk4KJERlbGV0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJEhUKDWN1c3RvbUZpZWxkSWQYAiABKAkidgofQWRkQWNjb3VudFRvQmlsbGluZ0dyb3VwUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIyCghhY2NvdW50cxgDIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50VG9BZGQiUQoMQWNjb3VudFRvQWRkEhIKCmN1c3RvbWVySWQYASABKAkSEQoJYWNjb3VudElkGAIgASgJEgwKBG5hbWUYAyABKAkSDAoEbm90ZRgEIAEoCSKrAQocQWRkVGFnc1RvQmlsbGluZ0dyb3VwUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIwCghzZXR0aW5ncxgDIAMoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5UYWdTZXR0aW5nEjgKDW5vblRhZ1NldHRpbmcYBCABKAsyIS5ibHVlYXBpLmJpbGxpbmcudjEuTm9uVGFnU2V0dGluZyJHCgpUYWdTZXR0aW5nEhIKCmN1c3RvbWVySWQYASABKAkSJQoEdGFncxgCIAMoCzIXLmJsdWVhcGkuYmlsbGluZy52MS5UYWciMQoDVGFnEgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIOCgZhc3NpZ24YAyABKAUiPgoNTm9uVGFnU2V0dGluZxIPCgdpbmNsdWRlGAEgASgIEgwKBHR5cGUYAiABKAkSDgoGYW1vdW50GAMgASgBIj4KHVNhdmVUYWdJbnZvaWNlU2V0dGluZ1Jlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCRINCgVlcnJvchgCIAEoCSJ+CiZVcGRhdGVOb25UYWdHcm91cFRvQmlsbGluZ0dyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSOAoIc2V0dGluZ3MYAyADKAsyJi5ibHVlYXBpLmJpbGxpbmcudjEuTm9uVGFnR3JvdXBTZXR0aW5nIj4KEk5vblRhZ0dyb3VwU2V0dGluZxIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg4KBmFtb3VudBgDIAEoASKaAQoaU2F2ZUludm9pY2VTZXR0aW5nc1JlcXVlc3QSDAoEZGF0ZRgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEQoJYWxsR3JvdXBzGAMgASgIEg4KBmdyb3VwcxgEIAMoCRI7Cg5pbnZvaWNlU2V0dGluZxgFIAEoCzIjLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2V0dGluZ3MiswQKD0ludm9pY2VTZXR0aW5ncxIRCglpbnZvaWNlTm8YAiABKAkSFAoMZGlzY291bnRSYXRlGAQgASgBEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYBSABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYBiABKAkSDwoHdGF4UmF0ZRgHIAEoARISCgpzdXBwb3J0RmVlGAggASgJEhMKC3N1cHBvcnRSYXRlGAkgASgBEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GAogASgJEhIKCnN1cHBvcnRGaXgYCyABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAwgASgJEhgKEHN1YnN0aXR1dGlvblJhdGUYDSABKAESFwoPc3Vic3RpdHV0aW9uRml4GA4gASgBEiEKGXN1YnN0aXR1dGlvbkZlZUNhbGNUYXJnZXQYDyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYECABKAkSHwoXc3Vic3RpdHV0aW9uRmVlQ2FsY1R5cGUYESABKAkSEAoIY3VycmVuY3kYAyABKAkSFAoMZXhjaGFuZ2VSYXRlGBIgASgBEgwKBG1lbW8YEyABKAkSEAoIY2FsY1R5cGUYFCABKAkSOQoPYWRkaXRpb25hbEl0ZW1zGBUgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbRIcChRzdXBwb3J0RmVlQWRqdXN0bWVudBgWIAEoASKtAwoQQmFzaWNJbmZvcm1hdGlvbhIYChBiaWxsaW5nR3JvdXBOYW1lGAIgASgJEhYKDmJpbGxpbmdHcm91cElkGAMgASgJEhMKC2NvbXBhbnlOYW1lGAQgASgJEhYKCWFkZHJlc3NlZRgFIAEoCUgAiAEBEhQKB2NvdW50cnkYBiABKAlIAYgBARIXCgpwb3N0YWxDb2RlGAcgASgJSAKIAQESEQoEY2l0eRgIIAEoCUgDiAEBEhgKC3Bob25lTnVtYmVyGAkgASgJSASIAQESGQoMYWRkcmVzc0xpbmUxGAogASgJSAWIAQESGQoMYWRkcmVzc0xpbmUyGAsgASgJSAaIAQESEgoFc3RhdGUYDCABKAlIB4gBARIXCgpwcmVmZWN0dXJlGA0gASgJSAiIAQFCDAoKX2FkZHJlc3NlZUIKCghfY291bnRyeUINCgtfcG9zdGFsQ29kZUIHCgVfY2l0eUIOCgxfcGhvbmVOdW1iZXJCDwoNX2FkZHJlc3NMaW5lMUIPCg1fYWRkcmVzc0xpbmUyQggKBl9zdGF0ZUINCgtfcHJlZmVjdHVyZSJ3CilVcGRhdGVCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRI+ChBiYXNpY0luZm9ybWF0aW9uGAIgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLkJhc2ljSW5mb3JtYXRpb24ivAEKJVVwZGF0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkc1JlcXVlc3QSCgoCaWQYASABKAkSVwoHaWRUb0tleRgCIAMoCzJGLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHNSZXF1ZXN0LklkVG9LZXlFbnRyeRouCgxJZFRvS2V5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJyCiNVcGRhdGVCaWxsaW5nR3JvdXBGcmVlRm9ybWF0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSLwoFaXRlbXMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuRnJlZUZvcm1JdGVtIuoCCihVcGRhdGVCaWxsaW5nR3JvdXBMaW5rZWRSZXNvdXJjZXNSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIXCg9zZWxlY3Rpb25NZXRob2QYAyABKAkSMgoIYWNjb3VudHMYBCADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkEjAKCHNldHRpbmdzGAUgAygLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ1NldHRpbmcSPQoNbm9uVGFnU2V0dGluZxgGIAEoCzIhLmJsdWVhcGkuYmlsbGluZy52MS5Ob25UYWdTZXR0aW5nSACIAQESPwoOYWNjb3VudE9wdGlvbnMYByABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnNIAYgBAUIQCg5fbm9uVGFnU2V0dGluZ0IRCg9fYWNjb3VudE9wdGlvbnMi9gEKKFVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JlcXVlc3QSCgoCaWQYASABKAkSGQoMYmlsbGluZ1RpdGxlGAIgASgJSACIAQESHAoPY2FsY3VsYXRpb25UeXBlGAMgASgJSAGIAQESFQoIbGFuZ3VhZ2UYBCABKAlIAogBARIiChVpbnZvaWNlTGF5b3V0Q29uZmlnSWQYBSABKAlIA4gBAUIPCg1fYmlsbGluZ1RpdGxlQhIKEF9jYWxjdWxhdGlvblR5cGVCCwoJX2xhbmd1YWdlQhgKFl9pbnZvaWNlTGF5b3V0Q29uZmlnSWQirwEKKFVwZGF0ZUJpbGxpbmdHcm91cFJlc2VsbGVyQ2hhcmdlc1JlcXVlc3QSCgoCaWQYASABKAkSHAoPaW52b2ljZVRlbXBsYXRlGAIgASgJSACIAQESRQoHaW52b2ljZRgDIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZUISChBfaW52b2ljZVRlbXBsYXRlIr8ECipVcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QSCgoCaWQYASABKAkSeAoDYXdzGAIgAygLMmUuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhJ6CgVhenVyZRgDIAMoCzJlLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQISeAoDZ2NwGAQgAygLMmUuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhqUAQomQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmcSEAoCaWQYASABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAiABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISFgoIYWNjb3VudHMYAyADKAlCBOJBAQEiJwoZRGVsZXRlQmlsbGluZ0dyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCSJSCihHZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0EhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAiKgAQopR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVzcG9uc2USCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEg8KB2VuYWJsZWQYAyABKAgSRgoHc2V0dGluZxgEIAMoCzI1LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5CaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW4i8AEKK1VwZGF0ZUJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEhUKB2VuYWJsZWQYAyABKAhCBOJBAQESTAoHc2V0dGluZxgEIAMoCzI1LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5CaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5CBOJBAQESNAoKdXBkYXRlTWFzaxgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiMQoXR2V0QW5ub3VuY2VtZW50c1JlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASABKAkipwEKGUNyZWF0ZUFubm91bmNlbWVudFJlcXVlc3QSDQoFbGFiZWwYASABKAkSDAoEdHlwZRgCIAEoCRIQCghjb250ZW50cxgDIAEoCRIVCg1iaWxsaW5nR3JvdXBzGAQgAygJEhgKEGFsbEJpbGxpbmdHcm91cHMYBSABKAgSDQoFc3RhcnQYBiABKAMSCwoDZW5kGAcgASgDEg4KBnN0YXR1cxgIIAEoCSJ4ChlVcGRhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgASgJEkMKDGFubm91bmNlbWVudBgCIAEoCzItLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0IkoKIFVwZGF0ZUFubm91bmNlbWVudHNTdGF0dXNSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgAygJEg4KBnN0YXR1cxgCIAEoCSJFCh1VcGRhdGVBbm5vdW5jZW1lbnREYXRlUmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAMoCRIMCgRkYXRlGAIgASgDIjMKGURlbGV0ZUFubm91bmNlbWVudFJlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASABKAki6QEKDEFubm91bmNlbWVudBIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIMCgR0eXBlGAMgASgJEg8KB21lc3NhZ2UYBCABKAkSFQoNYmlsbGluZ0dyb3VwcxgFIAMoCRIYChBhbGxCaWxsaW5nR3JvdXBzGA0gASgIEg0KBXN0YXJ0GAYgASgJEgsKA2VuZBgHIAEoCRIMCgRkYXRlGAggASgJEg4KBnN0YXR1cxgJIAEoCRISCgp1c2VyU3RhdHVzGAogASgJEg8KB2NyZWF0ZWQYCyABKAkSDwoHdXBkYXRlZBgMIAEoCSI2CiNHZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIpYBCiRHZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVzcG9uc2USDwoHZ3JvdXBJZBgBIAEoCRIRCglncm91cE5hbWUYAiABKAkSEQoJY29tcGFueUlkGAMgASgJEjcKDWFubm91bmNlbWVudHMYBCADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQW5ub3VuY2VtZW50IhMKEUdldENyZWRpdHNSZXF1ZXN0IsQBCgZDcmVkaXQSCgoCaWQYASABKAkSEgoKY3VzdG9tZXJJZBgCIAEoCRIUCgxjdXN0b21lck5hbWUYAyABKAkSFAoMY3JlZGl0QW1vdW50GAQgASgBEgwKBHRlcm0YBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSDwoHY3JlYXRlZBgHIAEoCRISCgppbml0aWFsRmVlGAggASgBEhUKDWNyZWRpdEJhbGFuY2UYCSABKAESDwoHYXBwbGllZBgKIAEoCCIXChVHZXRDc3ZTZXR0aW5nc1JlcXVlc3QipAEKCkNzdlNldHRpbmcSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIyCgNjb2wYAyADKAsyJS5ibHVlYXBpLmJpbGxpbmcudjEuQ3N2U2V0dGluZy5Db2x1bW4aSAoGQ29sdW1uEgwKBG5hbWUYASABKAkSCgoCaWQYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHZW5hYmxlZBgEIAEoCCLmAQogVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZVJlcXVlc3QSDQoFbW9udGgYASABKAkSDgoGdmVuZG9yGAIgASgJElwKDGV4Y2hhbmdlUmF0ZRgDIAMoCzJGLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlRXhjaGFuZ2VSYXRlUmVxdWVzdC5FeGNoYW5nZVJhdGVFbnRyeRIQCghncm91cElkcxgEIAMoCRozChFFeGNoYW5nZVJhdGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBIlsKGkNvbnZlcnRJbnZvaWNlVG9QZGZSZXF1ZXN0EgwKBGRhdGUYASABKAkSFQoNYmlsbGluZ2dyb3VwcxgCIAMoCRIYChBhbGxCaWxsaW5nR3JvdXBzGAMgASgIIkQKG0NvbnZlcnRJbnZvaWNlVG9QZGZSZXNwb25zZRIQCghwcm9ncmVzcxgBIAEoCRITCgtkb3dubG9hZFVybBgCIAEoCSKIAgohTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWRSZXF1ZXN0Ei4KCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrEg8KB3ZlbmRvcnMYAiABKAkSEAoIY2FsY1R5cGUYAyABKAkSEwoLZGlzcGxheUNvc3QYBCABKAkSDgoGYmdUeXBlGAUgASgJEhMKC2NvbXBhbnlOYW1lGAYgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYByABKAkSFgoOYmlsbGluZ0dyb3VwSWQYCCABKAkSEAoIcGFnZVNpemUYCSABKAUSEgoKcGFnZU51bWJlchgKIAEoBSKXAgoUQmlsbGluZ0dyb3VwTGlzdEl0ZW0SGAoQYmlsbGluZ0dyb3VwTmFtZRgBIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIYChBiaWxsaW5nR3JvdXBUeXBlGAQgASgJEkwKB3ZlbmRvcnMYBSADKAsyOy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwTGlzdEl0ZW0uQmlsbGluZ0dyb3VwVmVuZG9yEhkKEWJpbGxpbmdJbnRlcm5hbElkGAYgASgJGjUKEkJpbGxpbmdHcm91cFZlbmRvchIOCgZ2ZW5kb3IYASABKAkSDwoHZW5hYmxlZBgCIAEoCCK0AQoiTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWRSZXNwb25zZRI/Cg1iaWxsaW5nR3JvdXBzGAEgAygLMiguYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cExpc3RJdGVtEhIKCnRvdGFsQ291bnQYAiABKAUSEwoLY3VycmVudFBhZ2UYAyABKAUSEAoIcGFnZVNpemUYBCABKAUSEgoKdG90YWxQYWdlcxgFIAEoBSKOAQohQ2hpbGRCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEgoKAmlkGAEgASgJEhIKCmludGVybmFsSWQYBiABKAkSEAoIcGFyZW50SWQYAiABKAkSFAoMcm9vdFBhcmVudElkGAUgASgJEgwKBG5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkivgEKJEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cBIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAyABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISLAoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50QgTiQQEBIoACChFDaGlsZEJpbGxpbmdHcm91cBJPChBiYXNpY0luZm9ybWF0aW9uGAEgASgLMjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhJNCg9pbnZvaWNlU2V0dGluZ3MYAiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSOQoLYmlsbGluZ0luZm8YAyABKAsyJC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwSW5mbxIQCghoYXNDaGlsZBgEIAEoCCKsAgogQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQwoDYXdzGAEgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcSIQoZYWNjb3VudFN1cHBvcnRQbGFuRW5hYmxlZBgCIAEoCBJZChphY2NvdW50U3VwcG9ydFBsYW5TZXR0aW5ncxgDIAMoCzI1LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5CaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW4SRQoFYXp1cmUYBCABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZyKaAgoeQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0Ek8KEGJhc2ljSW5mb3JtYXRpb24YASABKAsyNS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEjkKC2JpbGxpbmdJbmZvGAMgASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8STQoPaW52b2ljZVNldHRpbmdzGAIgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEh0KFWludm9pY2VMYXlvdXRDb25maWdJZBgEIAEoCSIhCh9DcmVhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIjEKG0dldENoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJIlYKHEdldENoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2USNgoHZGV0YWlscxgBIAEoCzIlLmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cCJBCh1SZWFkQ2hpbGRCaWxsaW5nR3JvdXBzUmVxdWVzdBIOCgZyb290SWQYASABKAkSEAoIcGFyZW50SWQYAiABKAkiwAEKHlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEk8KEGJhc2ljSW5mb3JtYXRpb24YAiABKAsyNS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEjkKC2JpbGxpbmdJbmZvGAMgASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8iIQofVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSI0Ch5EZWxldGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCSIhCh9EZWxldGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlItABCi1VcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRJNCg9pbnZvaWNlU2V0dGluZ3MYAiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSIgoVaW52b2ljZUxheW91dENvbmZpZ0lkGAMgASgJSACIAQFCGAoWX2ludm9pY2VMYXlvdXRDb25maWdJZCIwCi5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1Jlc3BvbnNlIpoDCjNTZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSGAoKaW50ZXJuYWxJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISFAoGcm9vdElkGAMgASgJQgTiQQECEoUBCgdzZXR0aW5nGAQgAygLMm4uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhqUAQomQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmcSEAoCaWQYASABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAiABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISFgoIYWNjb3VudHMYAyADKAlCBOJBAQEiVAoyU2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRIKCgJpZBgCIAEoCSKOAQo5U2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSPQoIYWNjb3VudHMYAiADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHMiWQozR2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSDgoGdmVuZG9yGAIgASgJIs4BCjRHZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlc3BvbnNlEhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgDIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIsCghhY2NvdW50cxgEIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnRCBOJBAQEiSAoyR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCSJBCjNHZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiUAo6UmVhZENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJInkKHUJ1bGtDcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0Eg4KBnZlbmRvchgFIAEoCRISCgpjc3ZDb250ZW50GAEgASgMEhEKCWRlbGltaXRlchgCIAEoCRIRCgloYXNIZWFkZXIYAyABKAgSDgoGZHJ5UnVuGAQgASgIIlUKG0J1bGtDcmVhdGVCaWxsaW5nR3JvdXBFcnJvchINCgVpbmRleBgBIAEoBRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJIu0BCh5CdWxrQ3JlYXRlQmlsbGluZ0dyb3VwTWV0YWRhdGESDgoGc3RhdHVzGAEgASgJEhIKCnRvdGFsQ291bnQYAiABKAUSFgoOcHJvY2Vzc2VkQ291bnQYAyABKAUSFAoMc3VjY2Vzc0NvdW50GAQgASgFEhQKDGZhaWx1cmVDb3VudBgFIAEoBRI/CgZlcnJvcnMYBiADKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0NyZWF0ZUJpbGxpbmdHcm91cEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJIrkBChNFeGNsdWRlU2VydmljZUVudHJ5Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJEhcKD2V4Y2VwdF9wYXllcl9pZBgGIAMoCRIOCgZhY3Rpb24YByABKAkSDgoGc3RhdHVzGAggASgJEhUKDWVycm9yX21lc3NhZ2UYCSABKAkijwEKIENyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJEhcKD2V4Y2VwdF9wYXllcl9pZBgGIAMoCSJbCiFDcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2USNgoFZW50cnkYASABKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSKPAQogVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghwYXllcl9pZBgDIAEoCRIPCgdzZXJ2aWNlGAQgASgJEg8KB3Byb2R1Y3QYBSABKAkSFwoPZXhjZXB0X3BheWVyX2lkGAYgAygJIlsKIVVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZRI2CgVlbnRyeRgBIAEoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5InYKIERlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJIlsKIURlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZRI2CgVlbnRyeRgBIAEoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5IjwKGkxpc3RFeGNsdWRlU2VydmljZXNSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkiVwobTGlzdEV4Y2x1ZGVTZXJ2aWNlc1Jlc3BvbnNlEjgKB2VudHJpZXMYASADKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSJECgtTZXJ2aWNlSXRlbRIKCgJpZBgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBW5hbWVzGAMgAygJEgwKBHNrdXMYBCADKAkiMwoTTGlzdFNlcnZpY2VzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDAoEY29kZRgCIAEoCSJFChRMaXN0U2VydmljZXNSZXNwb25zZRItCgRkYXRhGAEgAygLMh8uYmx1ZWFwaS5iaWxsaW5nLnYxLlNlcnZpY2VJdGVtInIKFkJ1bGtMaW5rQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAUgASgJEhIKCmNzdkNvbnRlbnQYASABKAwSEQoJZGVsaW1pdGVyGAIgASgJEhEKCWhhc0hlYWRlchgDIAEoCBIOCgZkcnlSdW4YBCABKAgiYQoUQnVsa0xpbmtBY2NvdW50RXJyb3ISDQoFaW5kZXgYASABKAUSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEg8KB21lc3NhZ2UYBCABKAki3wEKF0J1bGtMaW5rQWNjb3VudE1ldGFkYXRhEg4KBnN0YXR1cxgBIAEoCRISCgp0b3RhbENvdW50GAIgASgFEhYKDnByb2Nlc3NlZENvdW50GAMgASgFEhQKDHN1Y2Nlc3NDb3VudBgEIAEoBRIUCgxmYWlsdXJlQ291bnQYBSABKAUSOAoGZXJyb3JzGAYgAygLMiguYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtMaW5rQWNjb3VudEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJIj4KGkJ1bGtUYWdCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmNzdkNvbnRlbnQYASABKAwSDAoEbW9kZRgCIAEoCSKCAQoYQnVsa1RhZ0JpbGxpbmdHcm91cEVycm9yEg0KBWluZGV4GAEgASgFEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhIKCmN1c3RvbWVySWQYAyABKAkSCwoDa2V5GAQgASgJEg0KBXZhbHVlGAUgASgJEg8KB21lc3NhZ2UYBiABKAki5wEKG0J1bGtUYWdCaWxsaW5nR3JvdXBNZXRhZGF0YRIOCgZzdGF0dXMYASABKAkSEgoKdG90YWxDb3VudBgCIAEoBRIWCg5wcm9jZXNzZWRDb3VudBgDIAEoBRIUCgxzdWNjZXNzQ291bnQYBCABKAUSFAoMZmFpbHVyZUNvdW50GAUgASgFEjwKBmVycm9ycxgGIAMoCzIsLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrVGFnQmlsbGluZ0dyb3VwRXJyb3ISEQoJc3RhcnRUaW1lGAcgASgJEg8KB2VuZFRpbWUYCCABKAkiNwopR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkieQoqR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlEjEKBmxheW91dBgBIAEoCzIhLmJsdWVhcGkuYXBpLnJpcHBsZS5JbnZvaWNlTGF5b3V0EgoKAmlkGAIgASgJEgwKBG5hbWUYAyABKAkiSgopU2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoJbGF5b3V0X2lkGAIgASgJImMKIENyZWF0ZUludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgwKBG5hbWUYASABKAkSMQoGbGF5b3V0GAIgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQiNgohQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlEhEKCWxheW91dF9pZBgBIAEoCSJvCiBVcGRhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBIKCgJpZBgBIAEoCRIxCgZsYXlvdXQYAiABKAsyIS5ibHVlYXBpLmFwaS5yaXBwbGUuSW52b2ljZUxheW91dBIMCgRuYW1lGAMgASgJIiAKHlJlYWRJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdCJuCh9SZWFkSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSMQoGbGF5b3V0GAMgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQiOgosRGVsZXRlQmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiLgogRGVsZXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiOQorTGlzdEludm9pY2VMYXlvdXRDb25maWdCaWxsaW5nR3JvdXBzUmVxdWVzdBIKCgJpZBgBIAEoCSJICixMaXN0SW52b2ljZUxheW91dENvbmZpZ0JpbGxpbmdHcm91cHNSZXNwb25zZRIYChBiaWxsaW5nZ3JvdXBfaWRzGAEgAygJMrnKAQoHQmlsbGluZxKAAQoRTGlzdEJpbGxpbmdHcm91cHMSLC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cHNSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCIZgtPkkwITEhEvdjEvYmlsbGluZ2dyb3VwczABErABChpMaXN0QmlsbGluZ0dyb3Vwc1BhZ2luYXRlZBI1LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3Vwc1BhZ2luYXRlZFJlcXVlc3QaNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWRSZXNwb25zZSIjgtPkkwIdEhsvdjEvYmlsbGluZ2dyb3VwczpwYWdpbmF0ZWQSgwEKEkNyZWF0ZUJpbGxpbmdHcm91cBItLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCIcgtPkkwIWOgEqIhEvdjEvYmlsbGluZ2dyb3VwcxKWAQoYQ3JlYXRlQmlsbGluZ0dyb3VwTWVyZ2VkEjMuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZFJlcXVlc3QaIC5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwIiOC0+STAh06ASoiGC92MS9iaWxsaW5nZ3JvdXBzL21lcmdlZBJ5ChFEZWxldGVCaWxsaW5Hcm91cBItLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVCaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih2C0+STAhcqFS92MS9iaWxsaW5nZ3JvdXAve2lkfRKMAQoYQWRkQWNjb3VudFRvQmlsbGluZ0dyb3VwEjMuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkZEFjY291bnRUb0JpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiI4LT5JMCHToBKiIYL3YxL2JpbGxpbmdncm91cC9hY2NvdW50EpkBCg9HZXRCaWxsaW5nR3JvdXASKi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwUmVxdWVzdBorLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBSZXNwb25zZSItgtPkkwInEiUvdjEvYmlsbGluZ2dyb3Vwcy97YmlsbGluZ0ludGVybmFsSWR9EpEBCg5HZXRBY2Nlc3NHcm91cBIpLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBY2Nlc3NHcm91cFJlcXVlc3QaKi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QWNjZXNzR3JvdXBSZXNwb25zZSIogtPkkwIiEiAvdjEvYWNjZXNzZ3JvdXBzL3thY2Nlc3NHcm91cElkfRKeAQoWTGlzdEF3c0RhaWx5UnVuSGlzdG9yeRIxLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QXdzRGFpbHlSdW5IaXN0b3J5UmVxdWVzdBomLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NEYWlseVJ1bkhpc3RvcnkiJ4LT5JMCIToBKiIcL3YxL2F3cy9kYWlseXJ1bmhpc3Rvcnk6cmVhZDABEpoBChNMaXN0VXNhZ2VDb3N0c0RyaWZ0Ei4uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RVc2FnZUNvc3RzRHJpZnRSZXF1ZXN0GiMuYmx1ZWFwaS5iaWxsaW5nLnYxLlVzYWdlQ29zdHNEcmlmdCIsgtPkkwImOgEqIiEvdjEve3ZlbmRvcn0vdXNhZ2Vjb3N0c2RyaWZ0OnJlYWQwARJ8Cg1DcmVhdGVJbnZvaWNlEiguYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUludm9pY2VSZXF1ZXN0GhsuYmx1ZWFwaS5hcGkuSW52b2ljZU1lc3NhZ2UiJILT5JMCHjoBKiIZL3YxL2ludm9pY2Uve2RhdGV9OmNyZWF0ZRKbAQoZQ3JlYXRlSW52b2ljZVdpdGhTZXR0aW5ncxIuLmJsdWVhcGkuYmlsbGluZy52MS5TYXZlSW52b2ljZVNldHRpbmdzUmVxdWVzdBobLmJsdWVhcGkuYXBpLkludm9pY2VNZXNzYWdlIjGC0+STAis6ASoiJi92MS9pbnZvaWNlL3tkYXRlfTpjcmVhdGUmc2F2ZXNldHRpbmdzEokBChNTYXZlSW52b2ljZVNldHRpbmdzEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLlNhdmVJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiqC0+STAiQ6ASoiHy92MS9pbnZvaWNlL3tkYXRlfTpzYXZlc2V0dGluZ3MSogEKE0NvbnZlcnRJbnZvaWNlVG9QZGYSLi5ibHVlYXBpLmJpbGxpbmcudjEuQ29udmVydEludm9pY2VUb1BkZlJlcXVlc3QaLy5ibHVlYXBpLmJpbGxpbmcudjEuQ29udmVydEludm9pY2VUb1BkZlJlc3BvbnNlIiqC0+STAiQ6ASoiHy92MS9pbnZvaWNlL3tkYXRlfTpjb252ZXJ0dG9wZGYSfQoQR2V0SW52b2ljZVN0YXR1cxIrLmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlU3RhdHVzUmVxdWVzdBobLmJsdWVhcGkuYXBpLkludm9pY2VNZXNzYWdlIh+C0+STAhkSFy92MS9pbnZvaWNlL3N0YXR1cy97aWR9EosBChFMaXN0SW52b2ljZVN0YXR1cxIsLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVN0YXR1c1JlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIpgtPkkwIjOgEqIh4vdjEvaW52b2ljZS9zdGF0dXMve2RhdGV9OnJlYWQwARJtCgpHZXRJbnZvaWNlEiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VSZXF1ZXN0GhQuYmx1ZWFwaS5hcGkuSW52b2ljZSIigtPkkwIcOgEqIhcvdjEvaW52b2ljZS97ZGF0ZX06cmVhZBJ9CgtMaXN0SW52b2ljZRImLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlcXVlc3QaJy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZSIbgtPkkwIVOgEqIhAvdjEvaW52b2ljZTpyZWFkMAESiAEKFVVwZGF0ZUludm9pY2VQcmV2aWV3cxIwLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlUHJldmlld3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiWC0+STAh86ASoaGi92MS9pbnZvaWNlL3tkYXRlfTpwcmV2aWV3EpYBChFFeHBvcnRJbnZvaWNlRmlsZRIsLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRJbnZvaWNlRmlsZVJlcXVlc3QaLS5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZUZpbGVSZXNwb25zZSIkgtPkkwIeOgEqIhkvdjEvaW52b2ljZS97ZGF0ZX06ZXhwb3J0EpYBChNMaXN0SW52b2ljZVRlbXBsYXRlEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlVGVtcGxhdGVSZXF1ZXN0Gi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlVGVtcGxhdGVSZXNwb25zZSIcgtPkkwIWEhQvdjEvaW52b2ljZS90ZW1wbGF0ZTABEq0BChlHZXRJbnZvaWNlRGlzcGxheVNldHRpbmdzEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0GjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXNwb25zZSIjgtPkkwIdEhsvdjEvaW52b2ljZS9kaXNwbGF5c2V0dGluZ3MSlwEKHFVwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3MSNy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJoLT5JMCIDoBKiIbL3YxL2ludm9pY2UvZGlzcGxheXNldHRpbmdzEpYBChlVcGRhdGVJbnZvaWNlRXhjaGFuZ2VSYXRlEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VFeGNoYW5nZVJhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiU6ASoaIC92MS9pbnZvaWNlL2V4Y2hhbmdlcmF0ZS97bW9udGh9EqwBCiFVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlVGVtcGxhdGUSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVRlbXBsYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIxgtPkkwIrOgEqIiYvdjEvYmlsbGluZ2dyb3Vwcy97aWR9L2ludm9pY2V0ZW1wbGF0ZRKxAQocUmVhZFNlcnZpY2VEaXNjb3VudHNTZXJ2aWNlcxI3LmJsdWVhcGkuYmlsbGluZy52MS5SZWFkU2VydmljZURpc2NvdW50c1NlcnZpY2VzUmVxdWVzdBoeLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5TZXJ2aWNlIjaC0+STAjA6ASoiKy92MS9zZXJ2aWNlZGlzY291bnRzL3t2ZW5kb3J9L3NlcnZpY2VzOnJlYWQwARKqAQodQ3JlYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSOC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIh+C0+STAhk6ASoiFC92MS9zZXJ2aWNlZGlzY291bnRzEq8BCh1VcGRhdGVJbnZvaWNlU2VydmljZURpc2NvdW50cxI4LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaLi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHMiJILT5JMCHjoBKhoZL3YxL3NlcnZpY2VkaXNjb3VudHMve2lkfRKUAQodRGVsZXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSOC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiGC0+STAhsqGS92MS9zZXJ2aWNlZGlzY291bnRzL3tpZH0SqgEKG0xpc3RJbnZvaWNlU2VydmljZURpc2NvdW50cxI2LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GisuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIiSC0+STAh46ASoiGS92MS9zZXJ2aWNlZGlzY291bnRzOnJlYWQwARKmAQoaR2V0SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSNS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIiGC0+STAhsSGS92MS9zZXJ2aWNlZGlzY291bnRzL3tpZH0SogEKFkV4cG9ydFNlcnZpY2VEaXNjb3VudHMSMS5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0U2VydmljZURpc2NvdW50c1JlcXVlc3QaLS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuU2VydmljZURpc2NvdW50c0V4cG9ydCImgtPkkwIgOgEqIhsvdjEvc2VydmljZWRpc2NvdW50czpleHBvcnQS8AEKKUNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpFLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjaC0+STAjA6ASoiKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9iaWxsaW5nZ3JvdXAS8AEKKVVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpFLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjaC0+STAjA6ASoaKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9iaWxsaW5nZ3JvdXASvgEKKURlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkQuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIzgtPkkwItKisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEtEBCiJMaXN0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj0uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cyI2gtPkkwIwOgEqIisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudDpyZWFkMAES3AEKJENyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjGC0+STAis6ASoiJi92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50EtwBCiRVcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpALmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSIxgtPkkwIrOgEqGiYvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudBK5AQokUmVtb3ZlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLlJlbW92ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiOILT5JMCMjoBKhotL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQ6cmVtb3ZlEq8BCiREZWxldGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIugtPkkwIoKiYvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudBLNAQokRXhwb3J0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaNC5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHNFeHBvcnQiLoLT5JMCKDoBKiIjL3YxL3NlcnZpY2VkaXNjb3VudHMvYWNjb3VudDpleHBvcnQS2gEKKUV4cG9ydEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkQuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5Hcm91cFNlcnZpY2VEaXNjb3VudHNFeHBvcnQiM4LT5JMCLToBKiIoL3YxL3NlcnZpY2VkaXNjb3VudHMvYmlsbGluZ2dyb3VwOmV4cG9ydBLkAQomR2V0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSQS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkIuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiM4LT5JMCLRIrL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2JpbGxpbmdncm91cBJzCg5DcmVhdGVSZXNlbGxlchIpLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVSZXNlbGxlclJlcXVlc3QaHC5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXIiGILT5JMCEjoBKiINL3YxL3Jlc2VsbGVycxJwCg1MaXN0UmVzZWxsZXJzEiguYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RSZXNlbGxlcnNSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIhWC0+STAg8SDS92MS9yZXNlbGxlcnMwARJvCgtHZXRSZXNlbGxlchImLmJsdWVhcGkuYmlsbGluZy52MS5HZXRSZXNlbGxlclJlcXVlc3QaHC5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXIiGoLT5JMCFBISL3YxL3Jlc2VsbGVycy97aWR9EngKDlVwZGF0ZVJlc2VsbGVyEikuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZVJlc2VsbGVyUmVxdWVzdBocLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlciIdgtPkkwIXOgEqGhIvdjEvcmVzZWxsZXJzL3tpZH0SbwoORGVsZXRlUmVzZWxsZXISKS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlUmVzZWxsZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhqC0+STAhQqEi92MS9yZXNlbGxlcnMve2lkfRKGAQoRR2V0QmlsbGluZ1NldHRpbmcSLC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ1NldHRpbmdSZXF1ZXN0Gi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdTZXR0aW5nUmVzcG9uc2UiFILT5JMCDhIML3YxL3NldHRpbmdzEpsBChFMaXN0RXhjaGFuZ2VSYXRlcxIsLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0RXhjaGFuZ2VSYXRlc1JlcXVlc3QaLS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2hhbmdlUmF0ZXNSZXNwb25zZSIpgtPkkwIjEiEvdjEve3ZlbmRvcn0vZXhjaGFuZ2VyYXRlL3ttb250aH0SlgEKFVNldEdsb2JhbEV4Y2hhbmdlUmF0ZRIwLmJsdWVhcGkuYmlsbGluZy52MS5TZXRHbG9iYWxFeGNoYW5nZVJhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjOC0+STAi06ASoiKC92MS9leGNoYW5nZXJhdGUvZ2xvYmFsL3t2ZW5kb3J9L3ttb250aH0SigEKFFNldFBheWVyRXhjaGFuZ2VSYXRlEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldFBheWVyRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIpgtPkkwIjOgEqIh4vdjEvZXhjaGFuZ2VyYXRlL3BheWVyL3ttb250aH0SnwEKG1NldEJpbGxpbmdHcm91cEV4Y2hhbmdlUmF0ZRI2LmJsdWVhcGkuYmlsbGluZy52MS5TZXRCaWxsaW5nR3JvdXBFeGNoYW5nZVJhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAio6ASoiJS92MS9leGNoYW5nZXJhdGUvYmlsbGluZ2dyb3VwL3ttb250aH0SfAoQTGlzdEFjY2Vzc0dyb3VwcxIrLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWNjZXNzR3JvdXBzUmVxdWVzdBofLmJsdWVhcGkuYXBpLnJpcHBsZS5BY2Nlc3NHcm91cCIYgtPkkwISEhAvdjEvYWNjZXNzZ3JvdXBzMAESfwoRQ3JlYXRlQWNjZXNzR3JvdXASLC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0Gh8uYmx1ZWFwaS5hcGkucmlwcGxlLkFjY2Vzc0dyb3VwIhuC0+STAhU6ASoiEC92MS9hY2Nlc3Nncm91cHMShAEKEVVwZGF0ZUFjY2Vzc0dyb3VwEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBofLmJsdWVhcGkuYXBpLnJpcHBsZS5BY2Nlc3NHcm91cCIggtPkkwIaOgEqGhUvdjEvYWNjZXNzZ3JvdXBzL3tpZH0SeAoRRGVsZXRlQWNjZXNzR3JvdXASLC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQWNjZXNzR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih2C0+STAhcqFS92MS9hY2Nlc3Nncm91cHMve2lkfRKfAQoUTGlzdEFiY0JpbGxpbmdHcm91cHMSLy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFiY0JpbGxpbmdHcm91cHNSZXF1ZXN0GiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkFiY0JpbGxpbmdHcm91cCIvgtPkkwIpEicvdjEvYmlsbGluZ2dyb3Vwcy9iaWxsaW5nY29uZHVjdG9yL3tpZH0wARK2AQobTGlzdEFiY0JpbGxpbmdHcm91cEFjY291bnRzEjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBYmNCaWxsaW5nR3JvdXBBY2NvdW50c1JlcXVlc3QaHi5ibHVlYXBpLmJpbGxpbmcudjEuQWJjQWNjb3VudCI9gtPkkwI3EjUvdjEvYmlsbGluZ2dyb3Vwcy9iaWxsaW5nY29uZHVjdG9yL3twYXllcklkfS9hY2NvdW50czABEpwBChZSZWFkSW52b2ljZUFkanVzdG1lbnRzEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRJbnZvaWNlQWRqdXN0bWVudHNSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkud2F2ZS5BZGp1c3RtZW50Ii+C0+STAik6ASoiJC92MS97dmVuZG9yfS9pbnZvaWNlYWRqdXN0bWVudHM6cmVhZDABEqMBChVSZWFkQWRqdXN0bWVudEVudHJpZXMSMC5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZEFkanVzdG1lbnRFbnRyaWVzUmVxdWVzdBomLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5BZGp1c3RtZW50RW50cnkiLoLT5JMCKDoBKiIjL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzOnJlYWQwARKYAQoSR2V0QWRqdXN0bWVudEVudHJ5Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFkanVzdG1lbnRFbnRyeVJlcXVlc3QaJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWRqdXN0bWVudEVudHJ5IiuC0+STAiUSIy92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9EpABChRBcHBseUFkanVzdG1lbnRFbnRyeRIvLmJsdWVhcGkuYmlsbGluZy52MS5BcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiL4LT5JMCKToBKiIkL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzOmFwcGx5EpYBChZSZXN0b3JlQWRqdXN0bWVudEVudHJ5EjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlc3RvcmVBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjGC0+STAis6ASoiJi92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllczpyZXN0b3JlEpUBChRTcGxpdEFkanVzdG1lbnRFbnRyeRIvLmJsdWVhcGkuYmlsbGluZy52MS5TcGxpdEFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiNILT5JMCLjoBKiIpL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0vc3BsaXQSngEKF0FsbG9jYXRlQWRqdXN0bWVudEVudHJ5EjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFsbG9jYXRlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI3gtPkkwIxOgEqIiwvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfS9hbGxvY2F0ZRKrAQobUmVzdG9yZVNwbGl0QWRqdXN0bWVudEVudHJ5EjYuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlc3RvcmVTcGxpdEFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiPILT5JMCNjoBKiIxL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0vc3BsaXQ6cmVzdG9yZRK0AQoeUmVzdG9yZUFsbG9jYXRlQWRqdXN0bWVudEVudHJ5EjkuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlc3RvcmVBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiP4LT5JMCOToBKiI0L3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0vYWxsb2NhdGU6cmVzdG9yZRKgAQoPQ3JlYXRlQ3VzdG9tRmVlEiouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbUZlZVJlcXVlc3QaKy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tRmVlUmVzcG9uc2UiNILT5JMCLjoBKiIpL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL2N1c3RvbWZlZXMSrQEKGExpc3RBZGp1c3RtZW50RW50cnlJdGVtcxIzLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWRqdXN0bWVudEVudHJ5SXRlbXNSZXF1ZXN0GicuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkanVzdG1lbnRFbnRyeUl0ZW0iMYLT5JMCKzoBKiImL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyeWl0ZW1zOnJlYWQwARKXAQoUTGlzdEFjY291bnRSZXNvdXJjZXMSLy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFjY291bnRSZXNvdXJjZXNSZXF1ZXN0GiMuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlc291cmNlQWNjb3VudCIngtPkkwIhEh8vdjEvcmVzb3VyY2VzL2FjY291bnRzL3t2ZW5kb3J9MAESiwEKE0dldEFkanVzdG1lbnRDb25maWcSLi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QWRqdXN0bWVudENvbmZpZ1JlcXVlc3QaHS5ibHVlYXBpLmFwaS5BZGp1c3RtZW50Q29uZmlnIiWC0+STAh8SHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EpQBChZDcmVhdGVBZGp1c3RtZW50Q29uZmlnEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkuQWRqdXN0bWVudENvbmZpZyIogtPkkwIiOgEqIh0vdjEvYWRqdXN0bWVudGNvbmZpZy97dmVuZG9yfRKUAQoWVXBkYXRlQWRqdXN0bWVudENvbmZpZxIxLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBodLmJsdWVhcGkuYXBpLkFkanVzdG1lbnRDb25maWciKILT5JMCIjoBKhodL3YxL2FkanVzdG1lbnRjb25maWcve3ZlbmRvcn0SigEKFkRlbGV0ZUFkanVzdG1lbnRDb25maWcSMS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJYLT5JMCHyodL3YxL2FkanVzdG1lbnRjb25maWcve3ZlbmRvcn0SlQEKElJlYWRVbnRhZ2dlZEdyb3VwcxItLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkVW50YWdnZWRHcm91cHNSZXF1ZXN0GiEuYmx1ZWFwaS5hcGkucmlwcGxlLlVudGFnZ2VkR3JvdXAiK4LT5JMCJToBKiIgL3YxL3t2ZW5kb3J9L3VudGFnZ2VkZ3JvdXBzOnJlYWQwARK4AQodUmVhZEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZXMSOC5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZXNSZXF1ZXN0GiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZSItgtPkkwInOgEqIiIvdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlczpyZWFkMAESrwEKG0dldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRI2LmJsdWVhcGkuYmlsbGluZy52MS5HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZSIqgtPkkwIkEiIvdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy97aWR9ErMBCh5DcmVhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USOS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiKILT5JMCIjoBKiIdL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMSuAEKHlVwZGF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRI5LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZSItgtPkkwInOgEqGiIvdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy97aWR9Ep8BCh5EZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USOS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkKiIvdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy97aWR9EvsBCidHZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASQi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBpDLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXNwb25zZSJFgtPkkwI/Ej0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy9iaWxsaW5nZ3JvdXAve2dyb3VwSWR9L3t2ZW5kb3J9MAESzwEKJ1NldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cBJCLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkiC0+STAkI6ASoiPS92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL2JpbGxpbmdncm91cC97Z3JvdXBJZH0ve3ZlbmRvcn0S0gEKKkRlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cBJFLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkWC0+STAj8qPS92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL2JpbGxpbmdncm91cC97Z3JvdXBJZH0ve3ZlbmRvcn0SXgoHR2V0VGFncxIiLmJsdWVhcGkuYmlsbGluZy52MS5HZXRUYWdzUmVxdWVzdBobLmJsdWVhcGkuYmlsbGluZy52MS5UYWdEYXRhIhCC0+STAgoSCC92MS90YWdzMAESfgoRQ3JlYXRlQ3VzdG9tRmllbGQSLC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tRmllbGRSZXF1ZXN0Gh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIhqC0+STAhQ6ASoiDy92MS9jdXN0b21maWVsZBKBAQoPTGlzdEN1c3RvbUZpZWxkEiouYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RDdXN0b21GaWVsZFJlcXVlc3QaHy5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmllbGQiH4LT5JMCGToBKiIUL3YxL2N1c3RvbWZpZWxkOnJlYWQwARKUAQoaQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSNS5ibHVlYXBpLmJpbGxpbmcudjEuQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IieC0+STAiE6ASoiHC92MS9iaWxsaW5nZ3JvdXAvY3VzdG9tZmllbGQSvgEKG0xpc3RCaWxsaW5nR3JvdXBDdXN0b21GaWVsZBI2LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0GjcuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlc3BvbnNlIiyC0+STAiY6ASoiIS92MS9iaWxsaW5nZ3JvdXAvY3VzdG9tZmllbGQ6cmVhZDABEoMBChVBZGRUYWdzVG9CaWxsaW5nR3JvdXASMC5ibHVlYXBpLmJpbGxpbmcudjEuQWRkVGFnc1RvQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIggtPkkwIaOgEqIhUvdjEvYmlsbGluZ2dyb3VwL3RhZ3MSrwEKH1VwZGF0ZU5vblRhZ0dyb3VwVG9CaWxsaW5nR3JvdXASOi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlTm9uVGFnR3JvdXBUb0JpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiOILT5JMCMjoBKiItL3YxL2JpbGxpbmdncm91cC97aWR9L3t2ZW5kb3J9L3VudGFnZ2VkZ3JvdXBzErEBCh1EZWxldGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZBI4LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiPoLT5JMCOCo2L3YxL2JpbGxpbmdncm91cC9jdXN0b21maWVsZC97Z3JvdXBJZH0ve2N1c3RvbUZpZWxkSWR9EoMBChFVcGRhdGVDdXN0b21GaWVsZBIsLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDdXN0b21GaWVsZFJlcXVlc3QaHy5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmllbGQiH4LT5JMCGToBKhoUL3YxL2N1c3RvbWZpZWxkL3tpZH0SdwoRRGVsZXRlQ3VzdG9tRmllbGQSLC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ3VzdG9tRmllbGRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhyC0+STAhYqFC92MS9jdXN0b21maWVsZC97aWR9EnIKEENyZWF0ZUZyZWVGb3JtYXQSKy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlRnJlZUZvcm1hdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiGYLT5JMCEzoBKiIOL3YxL2ZyZWVmb3JtYXQSeQoQRGVsZXRlRnJlZUZvcm1hdBIrLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVGcmVlRm9ybWF0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIggtPkkwIaKhgvdjEvZnJlZWZvcm1hdC97Z3JvdXBJZH0SiAEKDUdldEZyZWVGb3JtYXQSKC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0RnJlZUZvcm1hdFJlcXVlc3QaKS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0RnJlZUZvcm1hdFJlc3BvbnNlIiCC0+STAhoSGC92MS9mcmVlZm9ybWF0L3tncm91cElkfTABEr0BCh9HZXRNb250aGx5TWlzY0ZlZUltcG9ydFRlbXBsYXRlEjouYmx1ZWFwaS5iaWxsaW5nLnYxLkdldE1vbnRobHlNaXNjRmVlSW1wb3J0VGVtcGxhdGVSZXF1ZXN0GjAuYmx1ZWFwaS5iaWxsaW5nLnYxLk1vbnRobHlNaXNjRmVlSW1wb3J0VGVtcGxhdGUiLILT5JMCJhIkL3YxL21vbnRobHktbWlzYy1mZWVzOmltcG9ydFRlbXBsYXRlEpEBChlCdWxrSW1wb3J0TW9udGhseU1pc2NGZWVzEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtJbXBvcnRNb250aGx5TWlzY0ZlZXNSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIrgtPkkwIlOgEqIiAvdjEvbW9udGhseS1taXNjLWZlZXM6YnVsa0ltcG9ydBKVAQoTTGlzdE1vbnRobHlNaXNjRmVlcxIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0TW9udGhseU1pc2NGZWVzUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0TW9udGhseU1pc2NGZWVzUmVzcG9uc2UiHYLT5JMCFxIVL3YxL21vbnRobHktbWlzYy1mZWVzEo0BChFHZXRNb250aGx5TWlzY0ZlZRIsLmJsdWVhcGkuYmlsbGluZy52MS5HZXRNb250aGx5TWlzY0ZlZVJlcXVlc3QaIi5ibHVlYXBpLmJpbGxpbmcudjEuTW9udGhseU1pc2NGZWUiJoLT5JMCIBIeL3YxL21vbnRobHktbWlzYy1mZWVzL3tyb3dfaWR9EqIBChVFeHBvcnRNb250aGx5TWlzY0ZlZXMSMC5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0TW9udGhseU1pc2NGZWVzUmVxdWVzdBoxLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRNb250aGx5TWlzY0ZlZXNSZXNwb25zZSIkgtPkkwIeEhwvdjEvbW9udGhseS1taXNjLWZlZXM6ZXhwb3J0ErMBChdHZXRNb250aGx5TWlzY0ZlZUltcG9ydBIyLmJsdWVhcGkuYmlsbGluZy52MS5HZXRNb250aGx5TWlzY0ZlZUltcG9ydFJlcXVlc3QaLi5ibHVlYXBpLmJpbGxpbmcudjEuTW9udGhseU1pc2NGZWVJbXBvcnRSZXN1bHQiNILT5JMCLhIsL3YxL21vbnRobHktbWlzYy1mZWUtaW1wb3J0cy97aW1wb3J0X2pvYl9pZH0SsgEKFFVwc2VydE1vbnRobHlNaXNjRmVlEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwc2VydE1vbnRobHlNaXNjRmVlUmVxdWVzdBoiLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZSJFgtPkkwI/OgEqWho6ASoaFS92MS9tb250aGx5LW1pc2MtZmVlcxoeL3YxL21vbnRobHktbWlzYy1mZWVzL3tyb3dfaWR9EocBChREZWxldGVNb250aGx5TWlzY0ZlZRIvLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVNb250aGx5TWlzY0ZlZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJoLT5JMCICoeL3YxL21vbnRobHktbWlzYy1mZWVzL3tyb3dfaWR9EqIBChRHZXRUYWdzQWRkaW5nU2V0dGluZxIvLmJsdWVhcGkuYmlsbGluZy52MS5HZXRUYWdzQWRkaW5nU2V0dGluZ1JlcXVlc3QaJS5ibHVlYXBpLmJpbGxpbmcudjEuVGFnc0FkZGluZ1NldHRpbmciMILT5JMCKhIoL3YxL3t2ZW5kb3J9L3RhZ3NhZGRpbmdzZXR0aW5nL3tncm91cElkfTABEpoBChdVcGRhdGVUYWdzQWRkaW5nU2V0dGluZxIyLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVUYWdzQWRkaW5nU2V0dGluZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLToBKhooL3YxL3t2ZW5kb3J9L3RhZ3NhZGRpbmdzZXR0aW5nL3tncm91cElkfRKhAQoVRXhwb3J0QmlsbGluZ0dyb3VwQ3N2EjAuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEJpbGxpbmdHcm91cENzdlJlcXVlc3QaMS5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVzcG9uc2UiI4LT5JMCHRIbL3YxL2V4cG9ydGNzdi9iaWxsaW5nLWdyb3VwEqkBChdFeHBvcnRJbnZvaWNlU2V0dGluZ0NzdhIyLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRJbnZvaWNlU2V0dGluZ0NzdlJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXNwb25zZSIlgtPkkwIfEh0vdjEvZXhwb3J0Y3N2L2ludm9pY2Utc2V0dGluZxKnAQoiVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhI9LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqGh8vdjEvYmlsbGluZ2dyb3VwL3tpZH06YmFzaWNJbmZvEqIBCh5VcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHMSOS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSItgtPkkwInOgEqGiIvdjEvYmlsbGluZ2dyb3VwL3tpZH06Y3VzdG9tRmllbGRzEpwBChxVcGRhdGVCaWxsaW5nR3JvdXBGcmVlRm9ybWF0EjcuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEZyZWVGb3JtYXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiU6ASoaIC92MS9iaWxsaW5nZ3JvdXAve2lkfTpmcmVlRm9ybWF0EqUBCiFVcGRhdGVCaWxsaW5nR3JvdXBMaW5rZWRSZXNvdXJjZXMSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqGh8vdjEvYmlsbGluZ2dyb3VwL3tpZH06cmVzb3VyY2VzEqsBCiFVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEvYmlsbGluZ2dyb3VwL3tpZH06aW52b2ljZVNldHRpbmdzEqsBCiFVcGRhdGVCaWxsaW5nR3JvdXBSZXNlbGxlckNoYXJnZXMSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwUmVzZWxsZXJDaGFyZ2VzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEvYmlsbGluZ2dyb3VwL3tpZH06cmVzZWxsZXJDaGFyZ2VzErEBCiNVcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlcxI+LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMoLT5JMCLDoBKhonL3YxL2JpbGxpbmdncm91cC97aWR9OmFkZGl0aW9uYWxDaGFyZ2VzEtQBCiFHZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW4SPC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBo9LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXNwb25zZSIygtPkkwIsEiovdjEvYmlsbGluZ2dyb3VwL3tpZH0ve3ZlbmRvcn0vc3VwcG9ydHBsYW4StgEKJFVwZGF0ZUJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbhI/LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjWC0+STAi86ASoaKi92MS9iaWxsaW5nZ3JvdXAve2lkfS97dmVuZG9yfS9zdXBwb3J0cGxhbhKBAQoSQ3JlYXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJILT5JMCHjoBKiIZL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudBKSAQoSVXBkYXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiNYLT5JMCLzoBKhoqL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudC97YW5ub3VuY2VtZW50SWR9EpwBChlVcGRhdGVBbm5vdW5jZW1lbnRzU3RhdHVzEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudHNTdGF0dXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjGC0+STAis6ASoyJi92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL2J1bGsvc3RhdHVzEqABChZVcGRhdGVBbm5vdW5jZW1lbnREYXRlEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudERhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjuC0+STAjU6ASoyMC92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3thbm5vdW5jZW1lbnRJZH0vZGF0ZRKPAQoSRGVsZXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMoLT5JMCLCoqL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudC97YW5ub3VuY2VtZW50SWR9EqABChBHZXRBbm5vdW5jZW1lbnRzEisuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFubm91bmNlbWVudHNSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFubm91bmNlbWVudCI7gtPkkwI1EjMvYmlsbGluZy92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3thbm5vdW5jZW1lbnRJZH0wARLOAQocR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50cxI3LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVxdWVzdBo4LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVzcG9uc2UiOYLT5JMCMxIxL3YxL2JpbGxpbmdncm91cC9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3tncm91cElkfTABEmYKCkdldENyZWRpdHMSJS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3JlZGl0c1JlcXVlc3QaGi5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlZGl0IhOC0+STAg0SCy92MS9jcmVkaXRzMAESdgoOR2V0Q3N2U2V0dGluZ3MSKS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3N2U2V0dGluZ3NSZXF1ZXN0Gh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkNzdlNldHRpbmciF4LT5JMCERIPL3YxL2NzdnNldHRpbmdzMAESqQEKF0NyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIiWC0+STAh86ASoiGi92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuEqoBChRHZXRDaGlsZEJpbGxpbmdHcm91cBIvLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIvgtPkkwIpEicvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0SoAEKFlJlYWRDaGlsZEJpbGxpbmdHcm91cHMSMS5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZENoaWxkQmlsbGluZ0dyb3Vwc1JlcXVlc3QaJS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXAiKoLT5JMCJDoBKiIfL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW46cmVhZDABErYBChdVcGRhdGVDaGlsZEJpbGxpbmdHcm91cBIyLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIygtPkkwIsOgEqGicvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0SswEKF0RlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIi+C0+STAikqJy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfRLzAQomVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0GkIuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVzcG9uc2UiQoLT5JMCPDoBKho3L3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L2ludm9pY2VTZXR0aW5ncxLSAQorU2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJGLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJDgtPkkwI9OgEqIjgvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cxLtAQoyU2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSTS5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlCC0+STAko6ASoiRS92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9zZXJ2aWNlRGlzY291bnRzL2FjY291bnRzOnNldBLlAQosU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USRy5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlSC0+STAk46ASoiSS92MS97dmVuZG9yfS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9jdXN0b21pemVkQmlsbGluZ1NlcnZpY2USlgIKLEdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEkcuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBpILmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlc3BvbnNlIlGC0+STAksSSS92MS97dmVuZG9yfS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9jdXN0b21pemVkQmlsbGluZ1NlcnZpY2UwARKAAgorR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJGLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpHLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiQILT5JMCOhI4L3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L3NlcnZpY2VEaXNjb3VudHMSiwIKM1JlYWRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxJOLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkQ2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cyJOgtPkkwJIEkYvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cy9hY2NvdW50czpyZWFkMAEShwEKFkJ1bGtDcmVhdGVCaWxsaW5nR3JvdXASMS5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0NyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIieC0+STAiE6ASoiHC92MS9iaWxsaW5nZ3JvdXBzOmJ1bGtDcmVhdGUSvwEKGUNyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnkSNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlIjWC0+STAi86ASoiKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxK/AQoZVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeRI0LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2UiNYLT5JMCLzoBKhoqL3YxL2JpbGxpbmdncm91cHMvZXhjbHVkZS1zZXJ2aWNlLXNldHRpbmdzErwBChlEZWxldGVFeGNsdWRlU2VydmljZUVudHJ5EjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0GjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZSIygtPkkwIsKiovdjEvYmlsbGluZ2dyb3Vwcy9leGNsdWRlLXNlcnZpY2Utc2V0dGluZ3MSqgEKE0xpc3RFeGNsdWRlU2VydmljZXMSLi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2x1ZGVTZXJ2aWNlc1JlcXVlc3QaLy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2x1ZGVTZXJ2aWNlc1Jlc3BvbnNlIjKC0+STAiwSKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxKAAQoMTGlzdFNlcnZpY2VzEicuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RTZXJ2aWNlc1JlcXVlc3QaKC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdFNlcnZpY2VzUmVzcG9uc2UiHYLT5JMCFxIVL3YxL3t2ZW5kb3J9L3NlcnZpY2VzEn4KD0J1bGtMaW5rQWNjb3VudBIqLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrTGlua0FjY291bnRSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIsgtPkkwImOgEqIiEvdjEvYmlsbGluZ2dyb3VwczpidWxrTGlua0FjY291bnQSfgoTQnVsa1RhZ0JpbGxpbmdHcm91cBIuLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrVGFnQmlsbGluZ0dyb3VwUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iJILT5JMCHjoBKiIZL3YxL2JpbGxpbmdncm91cHM6YnVsa1RhZxLXAQoiR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZxI9LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBo+LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiMoLT5JMCLBIqL3YxL2JpbGxpbmdncm91cHMve2lkfS9pbnZvaWNlbGF5b3V0Y29uZmlnErIBCiJTZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnEj0uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjWC0+STAi86ASoiKi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZWxheW91dGNvbmZpZxKsAQoZQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZxI0LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiIoLT5JMCHDoBKiIXL3YxL2ludm9pY2VsYXlvdXRjb25maWcSkgEKGVVwZGF0ZUludm9pY2VMYXlvdXRDb25maWcSNC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJ4LT5JMCIToBKhocL3YxL2ludm9pY2VsYXlvdXRjb25maWcve2lkfRKtAQoXUmVhZEludm9pY2VMYXlvdXRDb25maWcSMi5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiJ4LT5JMCIToBKiIcL3YxL2ludm9pY2VsYXlvdXRjb25maWc6cmVhZDABErUBCiVEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnEkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjKC0+STAiwqKi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZWxheW91dGNvbmZpZxKPAQoZRGVsZXRlSW52b2ljZUxheW91dENvbmZpZxI0LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIkgtPkkwIeKhwvdjEvaW52b2ljZWxheW91dGNvbmZpZy97aWR9Et0BCiRMaXN0SW52b2ljZUxheW91dENvbmZpZ0JpbGxpbmdHcm91cHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VMYXlvdXRDb25maWdCaWxsaW5nR3JvdXBzUmVxdWVzdBpALmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZUxheW91dENvbmZpZ0JpbGxpbmdHcm91cHNSZXNwb25zZSIygtPkkwIsEiovdjEvaW52b2ljZWxheW91dGNvbmZpZy97aWR9L2JpbGxpbmdncm91cHManQGSQZkBEkYoQkVUQSkgQmlsbGluZyBBUEkuIEJhc2UgVVJMOiBodHRwczovL2FwaS5hbHBoYXVzLmNsb3VkL20vYmx1ZS9iaWxsaW5nGk8KElNlcnZpY2UgZGVmaW5pdGlvbhI5aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2JpbGxpbmcvQlEKGWNsb3VkLmFscGhhdXMuYXBpLmJpbGxpbmdCDEJpbGxpbmdQcm90b1omZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2JpbGxpbmdiBnByb3RvMw", [file_api_account, file_api_invoice, file_api_costtag, file_api_ripple_accessgroup, file_api_ripple_billinggroup, file_api_ripple_reseller, file_api_ripple_yearmonth, file_api_ripple_rounding, file_api_ripple_invoicelayout, file_api_ripple_duedate, file_api_ripple_exchangerate, file_api_ripple_untaggedgroup, file_api_ripple_customizedbillingservice, file_api_ripple_v1_invoiceservicediscounts, file_api_ripple_v1_accountsupportplan, file_api_ripple_v1_adjustmententry, file_api_adjustment, file_api_wave_adjustment, 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]);
|
|
56
|
+
fileDesc("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SEmJsdWVhcGkuYmlsbGluZy52MSKgBAoMQmlsbGluZ0dyb3VwEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYByABKAkSDAoEdHlwZRgMIAEoCRIQCghoYXNDaGlsZBgNIAEoCBI+ChBiaWxsaW5nR3JvdXBJbmZvGAogASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SOgoOYWNjb3VudE9wdGlvbnMYCCABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSJgoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50EiIKBHRhZ3MYBiADKAsyFC5ibHVlYXBpLmFwaS5Db3N0VGFnEkgKD2ludm9pY2VTZXR0aW5ncxgFIAEoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSSAoPYWRkaXRpb25hbEl0ZW1zGAsgASgLMi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIyCgphd3NPcHRpb25zGAkgASgLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c09wdGlvbnMioAEKG0JpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIpCgNhd3MYASADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKwoFYXp1cmUYAiADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKQoDZ2NwGAMgAygLMhwuYmx1ZWFwaS5hcGkuQWRkaXRpb25hbEl0ZW1zIu4BChtCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQwoDYXdzGAEgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcSRQoFYXp1cmUYAiABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxJDCgNnY3AYAyABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZyLxAwoiQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxIQCghjYWxjVHlwZRgBIAEoCRIUCgxkaXNjb3VudFJhdGUYAiABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAMgASgJEhcKD3N1YnN0aXR1dGlvbkZpeBgEIAEoARIYChBzdWJzdGl0dXRpb25SYXRlGAUgASgBEhIKCnN1cHBvcnRGZWUYBiABKAkSEwoLc3VwcG9ydFJhdGUYByABKAESEgoKc3VwcG9ydEZpeBgIIAEoARIPCgd0YXhSYXRlGAkgASgBEhAKCGN1cnJlbmN5GAogASgJEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYCyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYDCABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYDSABKAkSIQoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgOIAEoCRIfChdzdWJzdGl0dXRpb25GZWVDYWxjVHlwZRgPIAEoCRIbChNzdXBwb3J0QW1vdW50VGFyZ2V0GBAgASgJEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GBEgASgJEhwKFHN1cHBvcnRGZWVBZGp1c3RtZW50GBIgASgBIpIBChhMaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSDwoHdmVuZG9ycxgCIAEoCRIQCghjYWxjVHlwZRgDIAEoCRITCgtkaXNwbGF5Q29zdBgEIAEoCRIOCgZiZ1R5cGUYBSABKAkiswQKGUNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEh0KFWludm9pY2VMYXlvdXRDb25maWdJZBgUIAEoCSI1CgpBd3NPcHRpb25zEhYKDnVzZVByb0Zvcm1hQ3VyGAEgASgIEg8KB3BheWVySWQYAiABKAkiqwEKDkFjY291bnRPcHRpb25zEjEKA2F3cxgBIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjEKA2djcBgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjMKBWF6dXJlGAMgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlZ2lzdGVyQWNjb3VudHMiTgoQUmVnaXN0ZXJBY2NvdW50cxIPCgdlbmFibGVkGAEgASgIEhEKCWFjY291bnRJZBgCIAEoCRIWCg51bkxpbmtPblJlbW92ZRgDIAEoCCJUCg5WZW5kb3JBY2NvdW50cxIOCgZ2ZW5kb3IYASABKAkSMgoIYWNjb3VudHMYAiADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkImAKDEF6dXJlT3B0aW9ucxIVCg1yZXNvdXJjZUdyb3VwGAEgASgIEhsKE2FwcGx5UGNFYXJuZWRDcmVkaXQYAiABKAgSHAoUYXBwbHlDYW1wYWlnblByaWNpbmcYAyABKAgiqgcKH0NyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEhkKEWludm9pY2VUZW1wbGF0ZUlkGBQgASgJEjMKC3RhZ1NldHRpbmdzGBUgAygLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ1NldHRpbmcSOAoNbm9uVGFnU2V0dGluZxgWIAEoCzIhLmJsdWVhcGkuYmlsbGluZy52MS5Ob25UYWdTZXR0aW5nEjoKDnZlbmRvckFjY291bnRzGBcgAygLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLlZlbmRvckFjY291bnRzElsKDGN1c3RvbUZpZWxkcxgYIAMoCzJFLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWRSZXF1ZXN0LkN1c3RvbUZpZWxkc0VudHJ5EjYKDGF6dXJlT3B0aW9ucxgZIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5BenVyZU9wdGlvbnMaMwoRQ3VzdG9tRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASL/AQogQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USRwoDYXdzGAEgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkkKBWF6dXJlGAIgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkcKA2djcBgDIAEoCzI6LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZVZlbmRvciL1AwomQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VWZW5kb3ISEAoIY2FsY1R5cGUYASABKAkSFAoMZGlzY291bnRSYXRlGAIgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgDIAEoCRIXCg9zdWJzdGl0dXRpb25GaXgYBCABKAESGAoQc3Vic3RpdHV0aW9uUmF0ZRgFIAEoARISCgpzdXBwb3J0RmVlGAYgASgJEhMKC3N1cHBvcnRSYXRlGAcgASgBEhIKCnN1cHBvcnRGaXgYCCABKAESDwoHdGF4UmF0ZRgJIAEoARIQCghjdXJyZW5jeRgKIAEoCRIbChNkaXNjb3VudFRhcmdldFVzYWdlGAsgASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGAwgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGA0gASgJEiEKGXN1YnN0aXR1dGlvbkZlZUNhbGNUYXJnZXQYDiABKAkSHwoXc3Vic3RpdHV0aW9uRmVlQ2FsY1R5cGUYDyABKAkSGwoTc3VwcG9ydEFtb3VudFRhcmdldBgQIAEoCRIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgRIAEoCRIcChRzdXBwb3J0RmVlQWRqdXN0bWVudBgSIAEoASJjChZHZXRCaWxsaW5nR3JvdXBSZXF1ZXN0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlEKF0dldEJpbGxpbmdHcm91cFJlc3BvbnNlEjYKDGJpbGxpbmdHcm91cBgBIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAilgEKC0FjY2Vzc0dyb3VwEhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSFwoPYWNjZXNzR3JvdXBOYW1lGAIgASgJEh4KFmFjY2Vzc0dyb3VwRGVzY3JpcHRpb24YAyABKAkSNwoNYmlsbGluZ0dyb3VwcxgEIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiXgoVR2V0QWNjZXNzR3JvdXBSZXF1ZXN0EhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSLgoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siTgoWR2V0QWNjZXNzR3JvdXBSZXNwb25zZRI0CgthY2Nlc3NHcm91cBgBIAEoCzIfLmJsdWVhcGkuYmlsbGluZy52MS5BY2Nlc3NHcm91cCKvAgoSQXdzRGFpbHlSdW5IaXN0b3J5EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg0KBW1vbnRoGAMgASgJEkAKCGFjY291bnRzGAQgAygLMi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50GpQBCgdBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRJHCgdoaXN0b3J5GAIgAygLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50Lkhpc3RvcnkaLQoHSGlzdG9yeRIRCgl0aW1lc3RhbXAYASABKAkSDwoHdHJpZ2dlchgCIAEoCSI/Ch1MaXN0QXdzRGFpbHlSdW5IaXN0b3J5UmVxdWVzdBINCgVtb250aBgBIAEoCRIPCgdncm91cElkGAIgASgJIlYKGkxpc3RVc2FnZUNvc3RzRHJpZnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRINCgVtb250aBgDIAEoCSKGAQoPVXNhZ2VDb3N0c0RyaWZ0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg8KB2FjY291bnQYAyABKAkSEAoIc25hcHNob3QYBCABKAESDwoHY3VycmVudBgFIAEoARIMCgRkaWZmGAYgASgBIjIKEUdldEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSI5ChhFeHBvcnRJbnZvaWNlRmlsZVJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIPCgdncm91cElkGAIgASgJIigKGUV4cG9ydEludm9pY2VGaWxlUmVzcG9uc2USCwoDdXJsGAEgASgJIjUKI1JlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSIkCiJMaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Il4KIUdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIKCgJpZBgBIAEoCRItCglmaWVsZE1hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrImoKF0ludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHY3JlYXRlZBgEIAEoCRIPCgd1cGRhdGVkGAUgASgJIhwKGkxpc3RJbnZvaWNlVGVtcGxhdGVSZXF1ZXN0Il0KKFVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZVJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISHwoRaW52b2ljZVRlbXBsYXRlSWQYAiABKAlCBOJBAQIingIKG0xpc3RJbnZvaWNlVGVtcGxhdGVSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2NyZWF0ZWQYBCABKAkSDwoHdXBkYXRlZBgFIAEoCRIZChFudW1iZXJPZkNvbm5lY3RlZBgGIAEoBRJQChVjb25uZWN0ZWRCaWxsaW5nR3JvdXAYByADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZUNvbm5lY3RlZEJpbGxpbmdHcm91cHMSQQoIaW52b2ljZXMYCCABKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzIiIKIEdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0IkgKIUdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXNwb25zZRIjChtzaG93UklTUFVwZnJvbnRUaW1lSW50ZXJ2YWwYASABKAgirAEKI1VwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0ElUKB3NldHRpbmcYASADKAsyRC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QuU2V0dGluZ0VudHJ5Gi4KDFNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBImwKHUludm9pY2VDb25uZWN0ZWRCaWxsaW5nR3JvdXBzEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkiPAopTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKHAQoeQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEg8KB2FjY291bnQYAiABKAkSSAoQc2VydmljZURpc2NvdW50cxgDIAEoCzIuLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyI4ChdBY2NvdW50U2VydmljZURpc2NvdW50cxIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkifQorQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIm0KLENyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIn0KK1VwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyJtCixVcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyI+CitEZWxldGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkifQorUmVtb3ZlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIk8KMENyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEgoKAmlkGAIgASgJIj8KMUNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiTwowVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSCgoCaWQYAiABKAkiPwoxVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSJDCjBEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSJXChRDcmVhdGVJbnZvaWNlUmVxdWVzdBIMCgRkYXRlGAQgASgJEg4KBnZlbmRvchgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJIiUKF0dldEludm9pY2VTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIigKGExpc3RJbnZvaWNlU3RhdHVzUmVxdWVzdBIMCgRkYXRlGAEgASgJImAKHFVwZGF0ZUludm9pY2VQcmV2aWV3c1JlcXVlc3QSDAoEZGF0ZRgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJEg8KB2VuYWJsZWQYBCABKAgizwEKFUNyZWF0ZVJlc2VsbGVyUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg0KBWVtYWlsGAIgASgJEhAKCHBhc3N3b3JkGAMgASgJEhQKDG5vdGlmaWNhdGlvbhgEIAEoCBI2Cgp3YXZlQ29uZmlnGAUgAygLMiIuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyQ29uZmlnEjYKCmFxdWFDb25maWcYBiADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWciRgoUTGlzdFJlc2VsbGVyc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siUAoSR2V0UmVzZWxsZXJSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIqYCChVVcGRhdGVSZXNlbGxlclJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISEwoFZW1haWwYAiABKAlCBOJBAQESFwoIcGFzc3dvcmQYAyABKAlCBeJBAgQBEjwKCndhdmVDb25maWcYBCADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWdCBOJBAQESPAoKYXF1YUNvbmZpZxgFIAMoCzIiLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlckNvbmZpZ0IE4kEBARIbCgxub3RpZmljYXRpb24YBiABKAhCBeJBAgQBEjQKCnVwZGF0ZU1hc2sYByABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQECIiMKFURlbGV0ZVJlc2VsbGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJKChhHZXRCaWxsaW5nU2V0dGluZ1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sixwIKGUdldEJpbGxpbmdTZXR0aW5nUmVzcG9uc2USMAoJeWVhck1vbnRoGAEgAygLMh0uYmx1ZWFwaS5hcGkucmlwcGxlLlllYXJNb250aBI0Cg5yb3VuZGluZ01ldGhvZBgCIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI6ChRleHBvcnRSb3VuZGluZ01ldGhvZBgDIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI4Cg1pbnZvaWNlTGF5b3V0GAQgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQSMwoOaW52b2ljZUR1ZURhdGUYBSABKAsyGy5ibHVlYXBpLmFwaS5yaXBwbGUuRHVlRGF0ZRIXCg9zdXBwb3J0Q3VycmVuY3kYBiADKAkiOQoYTGlzdEV4Y2hhbmdlUmF0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSJlChxTZXRHbG9iYWxFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEidwobU2V0UGF5ZXJFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSDQoFbW9udGgYAyABKAkSEAoIY3VycmVuY3kYBCABKAkSFAoMZXhjaGFuZ2VSYXRlGAUgASgBImwKIlNldEJpbGxpbmdHcm91cEV4Y2hhbmdlUmF0ZVJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEi4gEKGUxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2USDQoFbW9udGgYASABKAkSNgoGY29tbW9uGAIgASgLMiYuYmx1ZWFwaS5hcGkucmlwcGxlLkNvbW1vbkV4Y2hhbmdlUmF0ZRJCCgxiaWxsaW5nR3JvdXAYAyADKAsyLC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlEjoKBXBheWVyGAQgASgLMisuYmx1ZWFwaS5hcGkucmlwcGxlLlZlbmRvclBheWVyRXhjaGFuZ2VSYXRlIkkKF0xpc3RBY2Nlc3NHcm91cHNSZXF1ZXN0Ei4KCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlQKGENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhUKDWJpbGxpbmdHcm91cHMYAyADKAkiYAoYVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSFQoNYmlsbGluZ0dyb3VwcxgEIAMoCSImChhEZWxldGVBY2Nlc3NHcm91cFJlcXVlc3QSCgoCaWQYASABKAkifQoSTGlzdEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAMgASgJEi4KCmZpZWxkX21hc2sYBCABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIp0JChNMaXN0SW52b2ljZVJlc3BvbnNlEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkSGgoSZmluYWxpemF0aW9uU3RhdHVzGAUgASgJEhEKCWlzQ3JlYXRlZBgGIAEoCBIZChFpc1NldHRpbmdNb2RpZmllZBgHIAEoCBITCgtjcmVhdGVkRGF0ZRgIIAEoCRITCgt1cGRhdGVkRGF0ZRgJIAEoCRIWCg5jcmVhdGVkVmVuZG9ycxgKIAMoCRITCgtpc1B1Ymxpc2hlZBgLIAEoCBJdChN2ZW5kb3JCaWxsaW5nQW1vdW50GAwgAygLMkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuVmVuZG9yQmlsbGluZ0Ftb3VudEVudHJ5EhoKEmJpbGxpbmdBbW91bnRUb3RhbBgNIAEoCRIQCghjdXJyZW5jeRgOIAEoCRINCgV1cmxJZBgPIAEoCRJtChtjcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmcYECADKAsySC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZS5DcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRJpChlzYXZlZFZlbmRvckludm9pY2VTZXR0aW5nGBEgAygLMkYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuU2F2ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5Em0KG2RlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZxgSIAMoCzJILmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlc3BvbnNlLkRlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EhAKCGhhc0NoaWxkGBMgASgIEhcKD2F0dGFjaGVkVmVuZG9ycxgUIAMoCRo6ChhWZW5kb3JCaWxsaW5nQW1vdW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpnCiBDcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzOgI4ARplCh5TYXZlZFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXR0aW5nczoCOAEaZwogRGVmYXVsdFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXR0aW5nczoCOAEiKQobTGlzdEFiY0JpbGxpbmdHcm91cHNSZXF1ZXN0EgoKAmlkGAEgASgJIk4KIkxpc3RBYmNCaWxsaW5nR3JvdXBBY2NvdW50c1JlcXVlc3QSDwoHcGF5ZXJJZBgBIAEoCRIXCg9iaWxsaW5nR3JvdXBBcm4YAiABKAkijwEKD0FiY0JpbGxpbmdHcm91cBILCgNhcm4YASABKAkSDAoEbmFtZRgCIAEoCRIUCgxjcmVhdGlvblRpbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSGAoQcHJpbWFyeUFjY291bnRJZBgFIAEoCRIMCgRzaXplGAYgASgJEg4KBnN0YXR1cxgHIAEoCSI0CgpBYmNBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCSJiCh1SZWFkSW52b2ljZUFkanVzdG1lbnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEQoJYWNjb3VudElkGAIgASgJEg0KBW1vbnRoGAMgASgJEg8KB2ZlZVR5cGUYBCABKAkimQEKHFJlYWRBZGp1c3RtZW50RW50cmllc1JlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhMKBW1vbnRoGAIgASgJQgTiQQEBGk4KIkFkanVzdG1lbnRFbnRyaWVzUmVxdWVzdEF3c09wdGlvbnMSEwoLc3BwRGlzY291bnQYASABKAgSEwoLZWRwRGlzY291bnQYAiABKAgiQwoZR2V0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQIingMKG0FwcGx5QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISUwoHc2V0dGluZxgCIAEoCzI8LmJsdWVhcGkuYmlsbGluZy52MS5BcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQXBwbHlTZXR0aW5nQgTiQQECEhUKB2VudHJpZXMYAyADKAlCBOJBAQIa/AEKDEFwcGx5U2V0dGluZxITCgVtb250aBgBIAEoCUIE4kEBARIVCgd0YXhGcmVlGAIgASgIQgTiQQEBEmoKDGV4Y2hhbmdlUmF0ZRgDIAMoCzJOLmJsdWVhcGkuYmlsbGluZy52MS5BcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQXBwbHlTZXR0aW5nLkV4Y2hhbmdlUmF0ZUVudHJ5QgTiQQEBEh8KEWJpbGxpbmdJbnRlcm5hbElkGAQgASgJQgTiQQEBGjMKEUV4Y2hhbmdlUmF0ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEiTAodUmVzdG9yZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhUKB2VudHJpZXMYAyADKAlCBOJBAQIiXwobU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAhIYCgpzdGFydE1vbnRoGAMgASgJQgTiQQECIvwBCh5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECElYKBmNvbmZpZxgDIAMoCzJALmJsdWVhcGkuYmlsbGluZy52MS5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QuQWNjb3VudENvbmZpZ0IE4kEBAhIhChNhY2NvdW50Rm9yUmVtYWluaW5nGAQgASgJQgTiQQECGjcKDUFjY291bnRDb25maWcSEAoCaWQYASABKAlCBOJBAQISFAoGYW1vdW50GAIgASgBQgTiQQECIkwKIlJlc3RvcmVTcGxpdEFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECIk8KJVJlc3RvcmVBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECIn4KFkNyZWF0ZUN1c3RvbUZlZVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhMKBW1vbnRoGAIgASgJQgTiQQECEjkKB2VudHJpZXMYAyADKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmVlRW50cnlCBOJBAQIioQMKDkN1c3RvbUZlZUVudHJ5EhcKCWFjY291bnRJZBgBIAEoCUIE4kEBAhIcCg5wYXllckFjY291bnRJZBgCIAEoCUIE4kEBAhIVCgdmZWVUeXBlGAMgASgJQgTiQQECEhkKC21vYmluZ2lUeXBlGAQgASgJQgTiQQECEhQKBmFtb3VudBgFIAEoAUIE4kEBAhIaCgxjdXJyZW5jeUNvZGUYBiABKAlCBOJBAQISGQoLZGVzY3JpcHRpb24YByABKAlCBOJBAQISGQoLcHJvZHVjdENvZGUYCCABKAlCBOJBAQESGQoLcHJvZHVjdE5hbWUYCSABKAlCBOJBAQESGAoKdXNhZ2VTdGFydBgKIAEoCUIE4kEBARIaCgx0aW1lSW50ZXJ2YWwYCyABKAlCBOJBAQESQAoEbWV0YRgMIAMoCzIsLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GZWVFbnRyeS5NZXRhRW50cnlCBOJBAQEaKwoJTWV0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiKgoXQ3JlYXRlQ3VzdG9tRmVlUmVzcG9uc2USDwoHY3JlYXRlZBgBIAEoBSJ9Ch9MaXN0QWRqdXN0bWVudEVudHJ5SXRlbXNSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhITCgVtb250aBgCIAEoCUIE4kEBAhIZCgttb2JpbmdpVHlwZRgDIAEoCUIE4kEBARIUCgZzdGF0dXMYBCABKAlCBOJBAQEiugEKE0FkanVzdG1lbnRFbnRyeUl0ZW0SNQoFZW50cnkYASABKAsyJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWRqdXN0bWVudEVudHJ5Ej8KBG1ldGEYAiADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuQWRqdXN0bWVudEVudHJ5SXRlbS5NZXRhRW50cnkaKwoJTWV0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiPAobTGlzdEFjY291bnRSZXNvdXJjZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSJKCg9SZXNvdXJjZUFjY291bnQSDwoHcGF5ZXJJZBgBIAEoCRISCgpjdXN0b21lcklkGAIgASgJEhIKCnJlZ2lzdGVyZWQYAyABKAgiSAoaR2V0QWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhoKEmluY2x1ZGVTUFBEaXNjb3VudBgCIAEoCCKNAQodQ3JlYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEioKBmNvbmZpZxgCIAMoCzIaLmJsdWVhcGkuYXBpLkNvbmZpZ0ZpbHRlcnMSMAoIYWNjb3VudHMYAyADKAsyHi5ibHVlYXBpLmFwaS5NYW5hZ2VtZW50QWNjb3VudCKNAQodVXBkYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEioKBmNvbmZpZxgCIAMoCzIaLmJsdWVhcGkuYXBpLkNvbmZpZ0ZpbHRlcnMSMAoIYWNjb3VudHMYAyADKAsyHi5ibHVlYXBpLmFwaS5NYW5hZ2VtZW50QWNjb3VudCIvCh1EZWxldGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiZwoZUmVhZFVudGFnZ2VkR3JvdXBzUmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISNAoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQEiXAokUmVhZEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZXNSZXF1ZXN0EjQKCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBImYKIkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSCgoCaWQYASABKAkSNAoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQEifAolQ3JlYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEjAKBmNvbmZpZxgDIAEoCzIgLmJsdWVhcGkuYXBpLnJpcHBsZS5NZXRob2RDb25maWcixQEKJVVwZGF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISVAoYY3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlGAIgASgLMiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUIE4kEBAhI0Cgp1cGRhdGVNYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBAiIzCiVEZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EgoKAmlkGAEgASgJIl0KLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIiyQEKL0dldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlc3BvbnNlEhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgDIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIsCghhY2NvdW50cxgEIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnRCBOJBAQEi9wIKLlNldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISgAEKB3NldHRpbmcYAyADKAsyaS5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhqUAQomQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmcSEAoCaWQYASABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAiABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISFgoIYWNjb3VudHMYAyADKAlCBOJBAQEiYAoxRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBIVCgdncm91cElkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAiKRAQokQ3JlYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSRgoHc2V0dGluZxgDIAEoCzI1LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50c1NldHRpbmcixQEKJFVwZGF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhJVChdpbnZvaWNlU2VydmljZURpc2NvdW50cxgCIAEoCzIuLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50c0IE4kEBAhI0Cgp1cGRhdGVNYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBAiIyCiREZWxldGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSCgoCaWQYASABKAkibgoHVGFnRGF0YRISCgpjdXN0b21lcklkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIUCgxjdXN0b21lck5hbWUYAyABKAkSJgoEdGFncxgEIAMoCzIYLmJsdWVhcGkuYmlsbGluZy52MS5UYWdzIiMKBFRhZ3MSCwoDa2V5GAEgASgJEg4KBnZhbHVlcxgCIAMoCSIuCg5HZXRUYWdzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDAoEdHlwZRgCIAEoCSI7CgtDdXN0b21GaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiXgoXQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSDQoFdmFsdWUYASABKAkSNAoLY3VzdG9tRmllbGQYAiABKAsyHy5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmllbGQiNQoiTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJIoUBCiNMaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXNwb25zZRIPCgdncm91cElkGAEgASgJEk0KGGJpbGxpbmdHcm91cEN1c3RvbUZpZWxkcxgCIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBDdXN0b21GaWVsZCI8ChhDcmVhdGVDdXN0b21GaWVsZFJlcXVlc3QSCwoDa2V5GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIkgKGFVwZGF0ZUN1c3RvbUZpZWxkUmVxdWVzdBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiJgoYRGVsZXRlQ3VzdG9tRmllbGRSZXF1ZXN0EgoKAmlkGAEgASgJIhgKFkxpc3RDdXN0b21GaWVsZFJlcXVlc3QiawoXQ3JlYXRlRnJlZUZvcm1hdFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSLwoFaXRlbXMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuRnJlZUZvcm1JdGVtImEKDEZyZWVGb3JtSXRlbRINCgVsYWJlbBgBIAEoCRIQCgh1bml0Q29zdBgCIAEoAxINCgV0b3RhbBgFIAEoAxIQCghxdWFudGl0eRgDIAEoDRIPCgdlbmFibGVkGAQgASgIIjoKF0RlbGV0ZUZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSDgoGdmVuZG9yGAIgASgJIj0KFEdldEZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSFAoMaXNBc3NvY2lhdGVkGAIgASgIIm4KFUdldEZyZWVGb3JtYXRSZXNwb25zZRIPCgdncm91cElkGAMgASgJEg4KBnZlbmRvchgBIAEoCRI0CgpmcmVlRm9ybWF0GAIgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSI6CiZHZXRNb250aGx5TWlzY0ZlZUltcG9ydFRlbXBsYXRlUmVxdWVzdBIQCghsYW5ndWFnZRgBIAEoCSKxAQocTW9udGhseU1pc2NGZWVJbXBvcnRUZW1wbGF0ZRIOCgZmb3JtYXQYASABKAkSFgoOZm9ybWF0X3ZlcnNpb24YAiABKAkSDwoHaGVhZGVycxgDIAMoCRISCgpzYW1wbGVfcm93GAQgAygJEhUKDWFsbG93ZWRfbW9kZXMYBSADKAkSGwoTbWF4X2ZpbGVfc2l6ZV9ieXRlcxgGIAEoAxIQCghtYXhfcm93cxgHIAEoBSKvAQogQnVsa0ltcG9ydE1vbnRobHlNaXNjRmVlc1JlcXVlc3QSGQoLY3N2X2NvbnRlbnQYASABKAlCBOJBAQISFwoJZmlsZV9uYW1lGAIgASgJQgTiQQECEhIKBG1vZGUYAyABKAlCBOJBAQISFAoGZm9ybWF0GAQgASgJQgTiQQECEhwKDmZvcm1hdF92ZXJzaW9uGAUgASgJQgTiQQECEg8KB2RyeV9ydW4YBiABKAgisAEKGkxpc3RNb250aGx5TWlzY0ZlZXNSZXF1ZXN0EhsKDWJpbGxpbmdfbW9udGgYASABKAlCBOJBAQISGAoQYmlsbGluZ19ncm91cF9pZBgCIAEoCRIgChhiaWxsaW5nX2dyb3VwX25hbWVfcXVlcnkYAyABKAkSEgoKaXRlbV9xdWVyeRgEIAEoCRIRCglwYWdlX3NpemUYBSABKAUSEgoKcGFnZV90b2tlbhgGIAEoCSJ9ChtMaXN0TW9udGhseU1pc2NGZWVzUmVzcG9uc2USMAoEcm93cxgBIAMoCzIiLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiUAobRGVsZXRlTW9udGhseU1pc2NGZWVSZXF1ZXN0EhQKBnJvd19pZBgBIAEoCUIE4kEBAhIbCg1iaWxsaW5nX21vbnRoGAIgASgJQgTiQQECIuYBCg5Nb250aGx5TWlzY0ZlZRIOCgZyb3dfaWQYASABKAkSFQoNYmlsbGluZ19tb250aBgCIAEoCRIYChBiaWxsaW5nX2dyb3VwX2lkGAMgASgJEhoKEmJpbGxpbmdfZ3JvdXBfbmFtZRgEIAEoCRIOCgZ2ZW5kb3IYBSABKAkSEQoJaXRlbV9uYW1lGAYgASgJEhAKCHF1YW50aXR5GAcgASgNEhEKCXVuaXRfY29zdBgIIAEoAxIOCgZhbW91bnQYCSABKAMSDwoHZW5hYmxlZBgKIAEoCBIOCgZzb3VyY2UYCyABKAkilgMKGk1vbnRobHlNaXNjRmVlSW1wb3J0UmVzdWx0Eg4KBnN0YXR1cxgBIAEoCRIRCglmaWxlX25hbWUYAiABKAkSEgoKdG90YWxfcm93cxgDIAEoBRISCgp2YWxpZF9yb3dzGAQgASgFEhUKDWluc2VydGVkX3Jvd3MYBSABKAUSFAoMdXBkYXRlZF9yb3dzGAYgASgFEhYKDnVuY2hhbmdlZF9yb3dzGAcgASgFEhMKC2ZhaWxlZF9yb3dzGAggASgFEkYKC3Jvd19yZXN1bHRzGAkgAygLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk1vbnRobHlNaXNjRmVlSW1wb3J0Um93UmVzdWx0EhQKDHJlbW92ZWRfcm93cxgKIAEoBRIWCg5iaWxsaW5nX21vbnRocxgLIAMoCRIPCgd2ZW5kb3JzGAwgAygJEkwKDmJpbGxpbmdfZ3JvdXBzGA0gAygLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLk1vbnRobHlNaXNjRmVlSW1wb3J0R3JvdXBTdW1tYXJ5IlgKIE1vbnRobHlNaXNjRmVlSW1wb3J0R3JvdXBTdW1tYXJ5EhgKEGJpbGxpbmdfZ3JvdXBfaWQYASABKAkSGgoSYmlsbGluZ19ncm91cF9uYW1lGAIgASgJIssCCh1Nb250aGx5TWlzY0ZlZUltcG9ydFJvd1Jlc3VsdBIWCg5jc3Zfcm93X251bWJlchgBIAEoBRIOCgZhY3Rpb24YAiABKAkSGAoQYmlsbGluZ19ncm91cF9pZBgDIAEoCRIaChJiaWxsaW5nX2dyb3VwX25hbWUYBCABKAkSDgoGdmVuZG9yGAUgASgJEhEKCWl0ZW1fbmFtZRgGIAEoCRIQCghxdWFudGl0eRgHIAEoDRIRCgl1bml0X2Nvc3QYCCABKAMSDgoGYW1vdW50GAkgASgDEg8KB2VuYWJsZWQYCiABKAgSTAoRdmFsaWRhdGlvbl9lcnJvcnMYCyADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTW9udGhseU1pc2NGZWVWYWxpZGF0aW9uRXJyb3ISFQoNYmlsbGluZ19tb250aBgMIAEoCSJNCh1Nb250aGx5TWlzY0ZlZVZhbGlkYXRpb25FcnJvchINCgVmaWVsZBgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkidwoeVXBkYXRlVGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEjQKBWl0ZW1zGAMgAygLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ3NBZGRpbmdTZXR0aW5nIj4KG0dldFRhZ3NBZGRpbmdTZXR0aW5nUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSJJChFUYWdzQWRkaW5nU2V0dGluZxIPCgdncm91cElkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSDwoHdGFnS2V5cxgDIAMoCSJNCh1FeHBvcnRTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQEibworRXhwb3J0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESEgoKZGlyZWN0TGluaxgDIAEoCCJ0CjBFeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSFAoGZm9ybWF0GAEgASgJQgTiQQECEhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEhIKCmRpcmVjdExpbmsYAyABKAgiNgocRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVxdWVzdBIWCghsYW5ndWFnZRgCIAEoCUIE4kEBASI1Ch1FeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXNwb25zZRIUCgxkb3dubG9hZExpbmsYASABKAkiXAoeRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXF1ZXN0EhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEiIKFGluY2x1ZGVNaXNjZWxsYW5lb3VzGAMgASgIQgTiQQEBIjcKH0V4cG9ydEludm9pY2VTZXR0aW5nQ3N2UmVzcG9uc2USFAoMZG93bmxvYWRMaW5rGAEgASgJIkAKLUdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIjwKLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiuQEKIUFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJElMKB2lkVG9LZXkYAiADKAsyQi5ibHVlYXBpLmJpbGxpbmcudjEuQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0LklkVG9LZXlFbnRyeRouCgxJZFRvS2V5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJOCiREZWxldGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIVCg1jdXN0b21GaWVsZElkGAIgASgJInYKH0FkZEFjY291bnRUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMgoIYWNjb3VudHMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkIlEKDEFjY291bnRUb0FkZBISCgpjdXN0b21lcklkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBG5vdGUYBCABKAkiqwEKHEFkZFRhZ3NUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMAoIc2V0dGluZ3MYAyADKAsyHi5ibHVlYXBpLmJpbGxpbmcudjEuVGFnU2V0dGluZxI4Cg1ub25UYWdTZXR0aW5nGAQgASgLMiEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ1NldHRpbmciRwoKVGFnU2V0dGluZxISCgpjdXN0b21lcklkGAEgASgJEiUKBHRhZ3MYAiADKAsyFy5ibHVlYXBpLmJpbGxpbmcudjEuVGFnIjEKA1RhZxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSDgoGYXNzaWduGAMgASgFIj4KDU5vblRhZ1NldHRpbmcSDwoHaW5jbHVkZRgBIAEoCBIMCgR0eXBlGAIgASgJEg4KBmFtb3VudBgDIAEoASI+Ch1TYXZlVGFnSW52b2ljZVNldHRpbmdSZXNwb25zZRIOCgZzdGF0dXMYASABKAkSDQoFZXJyb3IYAiABKAkifgomVXBkYXRlTm9uVGFnR3JvdXBUb0JpbGxpbmdHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEjgKCHNldHRpbmdzGAMgAygLMiYuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ0dyb3VwU2V0dGluZyI+ChJOb25UYWdHcm91cFNldHRpbmcSCgoCaWQYASABKAkSDAoEdHlwZRgCIAEoCRIOCgZhbW91bnQYAyABKAEimgEKGlNhdmVJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhEKCWFsbEdyb3VwcxgDIAEoCBIOCgZncm91cHMYBCADKAkSOwoOaW52b2ljZVNldHRpbmcYBSABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzIrMECg9JbnZvaWNlU2V0dGluZ3MSEQoJaW52b2ljZU5vGAIgASgJEhQKDGRpc2NvdW50UmF0ZRgEIAEoARIbChNkaXNjb3VudFRhcmdldFVzYWdlGAUgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGAYgASgJEg8KB3RheFJhdGUYByABKAESEgoKc3VwcG9ydEZlZRgIIAEoCRITCgtzdXBwb3J0UmF0ZRgJIAEoARIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgKIAEoCRISCgpzdXBwb3J0Rml4GAsgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgMIAEoCRIYChBzdWJzdGl0dXRpb25SYXRlGA0gASgBEhcKD3N1YnN0aXR1dGlvbkZpeBgOIAEoARIhChlzdWJzdGl0dXRpb25GZWVDYWxjVGFyZ2V0GA8gASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGBAgASgJEh8KF3N1YnN0aXR1dGlvbkZlZUNhbGNUeXBlGBEgASgJEhAKCGN1cnJlbmN5GAMgASgJEhQKDGV4Y2hhbmdlUmF0ZRgSIAEoARIMCgRtZW1vGBMgASgJEhAKCGNhbGNUeXBlGBQgASgJEjkKD2FkZGl0aW9uYWxJdGVtcxgVIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5GcmVlRm9ybUl0ZW0SHAoUc3VwcG9ydEZlZUFkanVzdG1lbnQYFiABKAEirQMKEEJhc2ljSW5mb3JtYXRpb24SGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCRIWCglhZGRyZXNzZWUYBSABKAlIAIgBARIUCgdjb3VudHJ5GAYgASgJSAGIAQESFwoKcG9zdGFsQ29kZRgHIAEoCUgCiAEBEhEKBGNpdHkYCCABKAlIA4gBARIYCgtwaG9uZU51bWJlchgJIAEoCUgEiAEBEhkKDGFkZHJlc3NMaW5lMRgKIAEoCUgFiAEBEhkKDGFkZHJlc3NMaW5lMhgLIAEoCUgGiAEBEhIKBXN0YXRlGAwgASgJSAeIAQESFwoKcHJlZmVjdHVyZRgNIAEoCUgIiAEBQgwKCl9hZGRyZXNzZWVCCgoIX2NvdW50cnlCDQoLX3Bvc3RhbENvZGVCBwoFX2NpdHlCDgoMX3Bob25lTnVtYmVyQg8KDV9hZGRyZXNzTGluZTFCDwoNX2FkZHJlc3NMaW5lMkIICgZfc3RhdGVCDQoLX3ByZWZlY3R1cmUidwopVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvblJlcXVlc3QSCgoCaWQYASABKAkSPgoQYmFzaWNJbmZvcm1hdGlvbhgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5CYXNpY0luZm9ybWF0aW9uIrwBCiVVcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHNSZXF1ZXN0EgoKAmlkGAEgASgJElcKB2lkVG9LZXkYAiADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzUmVxdWVzdC5JZFRvS2V5RW50cnkaLgoMSWRUb0tleUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicgojVXBkYXRlQmlsbGluZ0dyb3VwRnJlZUZvcm1hdFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEi8KBWl0ZW1zGAMgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSLqAgooVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSFwoPc2VsZWN0aW9uTWV0aG9kGAMgASgJEjIKCGFjY291bnRzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRUb0FkZBIwCghzZXR0aW5ncxgFIAMoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5UYWdTZXR0aW5nEj0KDW5vblRhZ1NldHRpbmcYBiABKAsyIS5ibHVlYXBpLmJpbGxpbmcudjEuTm9uVGFnU2V0dGluZ0gAiAEBEj8KDmFjY291bnRPcHRpb25zGAcgASgLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRPcHRpb25zSAGIAQFCEAoOX25vblRhZ1NldHRpbmdCEQoPX2FjY291bnRPcHRpb25zIvYBCihVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgoKAmlkGAEgASgJEhkKDGJpbGxpbmdUaXRsZRgCIAEoCUgAiAEBEhwKD2NhbGN1bGF0aW9uVHlwZRgDIAEoCUgBiAEBEhUKCGxhbmd1YWdlGAQgASgJSAKIAQESIgoVaW52b2ljZUxheW91dENvbmZpZ0lkGAUgASgJSAOIAQFCDwoNX2JpbGxpbmdUaXRsZUISChBfY2FsY3VsYXRpb25UeXBlQgsKCV9sYW5ndWFnZUIYChZfaW52b2ljZUxheW91dENvbmZpZ0lkIq8BCihVcGRhdGVCaWxsaW5nR3JvdXBSZXNlbGxlckNoYXJnZXNSZXF1ZXN0EgoKAmlkGAEgASgJEhwKD2ludm9pY2VUZW1wbGF0ZRgCIAEoCUgAiAEBEkUKB2ludm9pY2UYAyABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VCEgoQX2ludm9pY2VUZW1wbGF0ZSK/BAoqVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0EgoKAmlkGAEgASgJEngKA2F3cxgCIAMoCzJlLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQISegoFYXp1cmUYAyADKAsyZS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0LkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nQgTiQQECEngKA2djcBgEIAMoCzJlLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQIalAEKJkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nEhAKAmlkGAEgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAIgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEhYKCGFjY291bnRzGAMgAygJQgTiQQEBIicKGURlbGV0ZUJpbGxpbmdHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiUgooR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIioAEKKUdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlc3BvbnNlEgoKAmlkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIPCgdlbmFibGVkGAMgASgIEkYKB3NldHRpbmcYBCADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuIvABCitVcGRhdGVCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0EhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhIVCgdlbmFibGVkGAMgASgIQgTiQQEBEkwKB3NldHRpbmcYBCADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuQgTiQQEBEjQKCnVwZGF0ZU1hc2sYBSABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQECIjEKF0dldEFubm91bmNlbWVudHNSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgASgJIqcBChlDcmVhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0Eg0KBWxhYmVsGAEgASgJEgwKBHR5cGUYAiABKAkSEAoIY29udGVudHMYAyABKAkSFQoNYmlsbGluZ0dyb3VwcxgEIAMoCRIYChBhbGxCaWxsaW5nR3JvdXBzGAUgASgIEg0KBXN0YXJ0GAYgASgDEgsKA2VuZBgHIAEoAxIOCgZzdGF0dXMYCCABKAkieAoZVXBkYXRlQW5ub3VuY2VtZW50UmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAEoCRJDCgxhbm5vdW5jZW1lbnQYAiABKAsyLS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQW5ub3VuY2VtZW50UmVxdWVzdCJKCiBVcGRhdGVBbm5vdW5jZW1lbnRzU3RhdHVzUmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAMoCRIOCgZzdGF0dXMYAiABKAkiRQodVXBkYXRlQW5ub3VuY2VtZW50RGF0ZVJlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASADKAkSDAoEZGF0ZRgCIAEoAyIzChlEZWxldGVBbm5vdW5jZW1lbnRSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgASgJIukBCgxBbm5vdW5jZW1lbnQSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEdHlwZRgDIAEoCRIPCgdtZXNzYWdlGAQgASgJEhUKDWJpbGxpbmdHcm91cHMYBSADKAkSGAoQYWxsQmlsbGluZ0dyb3VwcxgNIAEoCBINCgVzdGFydBgGIAEoCRILCgNlbmQYByABKAkSDAoEZGF0ZRgIIAEoCRIOCgZzdGF0dXMYCSABKAkSEgoKdXNlclN0YXR1cxgKIAEoCRIPCgdjcmVhdGVkGAsgASgJEg8KB3VwZGF0ZWQYDCABKAkiNgojR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKWAQokR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1Jlc3BvbnNlEg8KB2dyb3VwSWQYASABKAkSEQoJZ3JvdXBOYW1lGAIgASgJEhEKCWNvbXBhbnlJZBgDIAEoCRI3Cg1hbm5vdW5jZW1lbnRzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFubm91bmNlbWVudCITChFHZXRDcmVkaXRzUmVxdWVzdCLEAQoGQ3JlZGl0EgoKAmlkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSFAoMY3VzdG9tZXJOYW1lGAMgASgJEhQKDGNyZWRpdEFtb3VudBgEIAEoARIMCgR0ZXJtGAUgASgJEhMKC2Rlc2NyaXB0aW9uGAYgASgJEg8KB2NyZWF0ZWQYByABKAkSEgoKaW5pdGlhbEZlZRgIIAEoARIVCg1jcmVkaXRCYWxhbmNlGAkgASgBEg8KB2FwcGxpZWQYCiABKAgiFwoVR2V0Q3N2U2V0dGluZ3NSZXF1ZXN0IqQBCgpDc3ZTZXR0aW5nEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSMgoDY29sGAMgAygLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNzdlNldHRpbmcuQ29sdW1uGkgKBkNvbHVtbhIMCgRuYW1lGAEgASgJEgoKAmlkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2VuYWJsZWQYBCABKAgi5gEKIFVwZGF0ZUludm9pY2VFeGNoYW5nZVJhdGVSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg4KBnZlbmRvchgCIAEoCRJcCgxleGNoYW5nZVJhdGUYAyADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZVJlcXVlc3QuRXhjaGFuZ2VSYXRlRW50cnkSEAoIZ3JvdXBJZHMYBCADKAkaMwoRRXhjaGFuZ2VSYXRlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ASJbChpDb252ZXJ0SW52b2ljZVRvUGRmUmVxdWVzdBIMCgRkYXRlGAEgASgJEhUKDWJpbGxpbmdncm91cHMYAiADKAkSGAoQYWxsQmlsbGluZ0dyb3VwcxgDIAEoCCJEChtDb252ZXJ0SW52b2ljZVRvUGRmUmVzcG9uc2USEAoIcHJvZ3Jlc3MYASABKAkSEwoLZG93bmxvYWRVcmwYAiABKAkiiAIKIUxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzaxIPCgd2ZW5kb3JzGAIgASgJEhAKCGNhbGNUeXBlGAMgASgJEhMKC2Rpc3BsYXlDb3N0GAQgASgJEg4KBmJnVHlwZRgFIAEoCRITCgtjb21wYW55TmFtZRgGIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAcgASgJEhYKDmJpbGxpbmdHcm91cElkGAggASgJEhAKCHBhZ2VTaXplGAkgASgFEhIKCnBhZ2VOdW1iZXIYCiABKAUilwIKFEJpbGxpbmdHcm91cExpc3RJdGVtEhgKEGJpbGxpbmdHcm91cE5hbWUYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEwoLY29tcGFueU5hbWUYAyABKAkSGAoQYmlsbGluZ0dyb3VwVHlwZRgEIAEoCRJMCgd2ZW5kb3JzGAUgAygLMjsuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cExpc3RJdGVtLkJpbGxpbmdHcm91cFZlbmRvchIZChFiaWxsaW5nSW50ZXJuYWxJZBgGIAEoCRo1ChJCaWxsaW5nR3JvdXBWZW5kb3ISDgoGdmVuZG9yGAEgASgJEg8KB2VuYWJsZWQYAiABKAgitAEKIkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVzcG9uc2USPwoNYmlsbGluZ0dyb3VwcxgBIAMoCzIoLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBMaXN0SXRlbRISCgp0b3RhbENvdW50GAIgASgFEhMKC2N1cnJlbnRQYWdlGAMgASgFEhAKCHBhZ2VTaXplGAQgASgFEhIKCnRvdGFsUGFnZXMYBSABKAUijgEKIUNoaWxkQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhIKCgJpZBgBIAEoCRISCgppbnRlcm5hbElkGAYgASgJEhAKCHBhcmVudElkGAIgASgJEhQKDHJvb3RQYXJlbnRJZBgFIAEoCRIMCgRuYW1lGAMgASgJEhMKC2NvbXBhbnlOYW1lGAQgASgJIr4BCiRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASEAoCaWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAMgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEiwKCGFjY291bnRzGAQgAygLMhQuYmx1ZWFwaS5hcGkuQWNjb3VudEIE4kEBASKAAgoRQ2hpbGRCaWxsaW5nR3JvdXASTwoQYmFzaWNJbmZvcm1hdGlvbhgBIAEoCzI1LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24STQoPaW52b2ljZVNldHRpbmdzGAIgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEjkKC2JpbGxpbmdJbmZvGAMgASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SEAoIaGFzQ2hpbGQYBCABKAgirAIKIENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEkMKA2F3cxgBIAEoCzI2LmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBWZW5kb3JlZEludm9pY2VTZXR0aW5nEiEKGWFjY291bnRTdXBwb3J0UGxhbkVuYWJsZWQYAiABKAgSWQoaYWNjb3VudFN1cHBvcnRQbGFuU2V0dGluZ3MYAyADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuEkUKBWF6dXJlGAQgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcimgIKHkNyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBJPChBiYXNpY0luZm9ybWF0aW9uGAEgASgLMjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhI5CgtiaWxsaW5nSW5mbxgDIAEoCzIkLmJsdWVhcGkuYXBpLnJpcHBsZS5CaWxsaW5nR3JvdXBJbmZvEk0KD2ludm9pY2VTZXR0aW5ncxgCIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxIdChVpbnZvaWNlTGF5b3V0Q29uZmlnSWQYBCABKAkiIQofQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIxChtHZXRDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCSJWChxHZXRDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlEjYKB2RldGFpbHMYASABKAsyJS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXAiQQodUmVhZENoaWxkQmlsbGluZ0dyb3Vwc1JlcXVlc3QSDgoGcm9vdElkGAEgASgJEhAKCHBhcmVudElkGAIgASgJIsABCh5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRJPChBiYXNpY0luZm9ybWF0aW9uGAIgASgLMjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhI5CgtiaWxsaW5nSW5mbxgDIAEoCzIkLmJsdWVhcGkuYXBpLnJpcHBsZS5CaWxsaW5nR3JvdXBJbmZvIiEKH1VwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiNAoeRGVsZXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkiIQofRGVsZXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSLQAQotVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSTQoPaW52b2ljZVNldHRpbmdzGAIgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEiIKFWludm9pY2VMYXlvdXRDb25maWdJZBgDIAEoCUgAiAEBQhgKFl9pbnZvaWNlTGF5b3V0Q29uZmlnSWQiMAouVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXNwb25zZSKaAwozU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EhgKCmludGVybmFsSWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEhQKBnJvb3RJZBgDIAEoCUIE4kEBAhKFAQoHc2V0dGluZxgEIAMoCzJuLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQIalAEKJkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nEhAKAmlkGAEgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAIgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEhYKCGFjY291bnRzGAMgAygJQgTiQQEBIlQKMlNldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSCgoCaWQYAiABKAkijgEKOVNldENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEj0KCGFjY291bnRzGAIgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIlkKM0dldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEg4KBnZlbmRvchgCIAEoCSLOAQo0R2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXNwb25zZRIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAyABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISLAoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50QgTiQQEBIkgKMkdldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkiQQozR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEgoKAmlkGAEgASgJIlAKOlJlYWRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCSJ5Ch1CdWxrQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBIOCgZ2ZW5kb3IYBSABKAkSEgoKY3N2Q29udGVudBgBIAEoDBIRCglkZWxpbWl0ZXIYAiABKAkSEQoJaGFzSGVhZGVyGAMgASgIEg4KBmRyeVJ1bhgEIAEoCCJVChtCdWxrQ3JlYXRlQmlsbGluZ0dyb3VwRXJyb3ISDQoFaW5kZXgYASABKAUSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCSKzAgoeQnVsa0NyZWF0ZUJpbGxpbmdHcm91cE1ldGFkYXRhEg4KBnN0YXR1cxgBIAEoCRISCgp0b3RhbENvdW50GAIgASgFEhYKDnByb2Nlc3NlZENvdW50GAMgASgFEhQKDHN1Y2Nlc3NDb3VudBgEIAEoBRIUCgxmYWlsdXJlQ291bnQYBSABKAUSPwoGZXJyb3JzGAYgAygLMi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtDcmVhdGVCaWxsaW5nR3JvdXBFcnJvchIRCglzdGFydFRpbWUYByABKAkSDwoHZW5kVGltZRgIIAEoCRJECgRyb3dzGAkgAygLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSb3ciPgodTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSDQoFdmFsdWUYASABKAkSDgoGc291cmNlGAIgASgJIqkNChlOb3JtYWxpemVkSW52b2ljZVNldHRpbmdzEkMKCGNhbGNUeXBlGAEgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEkYKC2Rpc3BsYXlDb3N0GAIgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEk4KE3N1cHBvcnRBbW91bnRUYXJnZXQYAyABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSTwoUc3VwcG9ydEZlZUNhbGNUYXJnZXQYBCABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSVAoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgFIAEoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Ob3JtYWxpemVkSW52b2ljZVNldHRpbmdGaWVsZBJKCg9pbnZvaWNlVGVtcGxhdGUYBiABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSSAoNY3VzdG9tU2VydmljZRgHIAEoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Ob3JtYWxpemVkSW52b2ljZVNldHRpbmdGaWVsZBJLChBzZXJ2aWNlRGlzY291bnRzGAggASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEkMKCGN1cnJlbmN5GAkgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEkIKB3RheFJhdGUYCiABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSRwoMZGlzY291bnRSYXRlGAsgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEk4KE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYDCABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSTAoRZGlzY291bnRDYWxjTG9naWMYDSABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSSgoPc3Vic3RpdHV0aW9uRmVlGA4gASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEksKEHN1YnN0aXR1dGlvblJhdGUYDyABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSSgoPc3Vic3RpdHV0aW9uRml4GBAgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkElUKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGBEgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkElIKF3N1YnN0aXR1dGlvbkZlZUNhbGNUeXBlGBIgASgLMjEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vcm1hbGl6ZWRJbnZvaWNlU2V0dGluZ0ZpZWxkEkUKCnN1cHBvcnRGZWUYEyABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSRgoLc3VwcG9ydFJhdGUYFCABKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuTm9ybWFsaXplZEludm9pY2VTZXR0aW5nRmllbGQSRQoKc3VwcG9ydEZpeBgVIAEoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Ob3JtYWxpemVkSW52b2ljZVNldHRpbmdGaWVsZBJPChRzdXBwb3J0RmVlQWRqdXN0bWVudBgWIAEoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5Ob3JtYWxpemVkSW52b2ljZVNldHRpbmdGaWVsZCLiAQoiQnVsa0JpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JvdxINCgVpbmRleBgBIAEoBRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRIOCgZzdGF0dXMYAyABKAkSDgoGZXJyb3JzGAQgAygJEkkKEm5vcm1hbGl6ZWRTZXR0aW5ncxgFIAEoCzItLmJsdWVhcGkuYmlsbGluZy52MS5Ob3JtYWxpemVkSW52b2ljZVNldHRpbmdzEhMKC2Rpc3Bvc2l0aW9uGAYgASgJEhUKDWNzdkxpbmVOdW1iZXIYByABKAUieQodQnVsa1VwZGF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSDgoGdmVuZG9yGAUgASgJEhIKCmNzdkNvbnRlbnQYASABKAwSEQoJZGVsaW1pdGVyGAIgASgJEhEKCWhhc0hlYWRlchgDIAEoCBIOCgZkcnlSdW4YBCABKAgiZQobQnVsa1VwZGF0ZUJpbGxpbmdHcm91cEVycm9yEg0KBWluZGV4GAEgASgFEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDgoGcmVhc29uGAQgASgJIrMCCh5CdWxrVXBkYXRlQmlsbGluZ0dyb3VwTWV0YWRhdGESDgoGc3RhdHVzGAEgASgJEhIKCnRvdGFsQ291bnQYAiABKAUSFgoOcHJvY2Vzc2VkQ291bnQYAyABKAUSFAoMc3VjY2Vzc0NvdW50GAQgASgFEhQKDGZhaWx1cmVDb3VudBgFIAEoBRI/CgZlcnJvcnMYBiADKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa1VwZGF0ZUJpbGxpbmdHcm91cEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJEkQKBHJvd3MYCSADKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0JpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JvdyK5AQoTRXhjbHVkZVNlcnZpY2VFbnRyeRIOCgZtc3BfaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEhAKCHBheWVyX2lkGAMgASgJEg8KB3NlcnZpY2UYBCABKAkSDwoHcHJvZHVjdBgFIAEoCRIXCg9leGNlcHRfcGF5ZXJfaWQYBiADKAkSDgoGYWN0aW9uGAcgASgJEg4KBnN0YXR1cxgIIAEoCRIVCg1lcnJvcl9tZXNzYWdlGAkgASgJIo8BCiBDcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBIOCgZtc3BfaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEhAKCHBheWVyX2lkGAMgASgJEg8KB3NlcnZpY2UYBCABKAkSDwoHcHJvZHVjdBgFIAEoCRIXCg9leGNlcHRfcGF5ZXJfaWQYBiADKAkiWwohQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlEjYKBWVudHJ5GAEgASgLMicuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4Y2x1ZGVTZXJ2aWNlRW50cnkijwEKIFVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJEhcKD2V4Y2VwdF9wYXllcl9pZBgGIAMoCSJbCiFVcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2USNgoFZW50cnkYASABKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSJ2CiBEZWxldGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBIOCgZtc3BfaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEhAKCHBheWVyX2lkGAMgASgJEg8KB3NlcnZpY2UYBCABKAkSDwoHcHJvZHVjdBgFIAEoCSJbCiFEZWxldGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2USNgoFZW50cnkYASABKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSI8ChpMaXN0RXhjbHVkZVNlcnZpY2VzUmVxdWVzdBIOCgZtc3BfaWQYASABKAkSDgoGdmVuZG9yGAIgASgJIlcKG0xpc3RFeGNsdWRlU2VydmljZXNSZXNwb25zZRI4CgdlbnRyaWVzGAEgAygLMicuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4Y2x1ZGVTZXJ2aWNlRW50cnkiRAoLU2VydmljZUl0ZW0SCgoCaWQYASABKAkSDAoEY29kZRgCIAEoCRINCgVuYW1lcxgDIAMoCRIMCgRza3VzGAQgAygJIjMKE0xpc3RTZXJ2aWNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgwKBGNvZGUYAiABKAkiRQoUTGlzdFNlcnZpY2VzUmVzcG9uc2USLQoEZGF0YRgBIAMoCzIfLmJsdWVhcGkuYmlsbGluZy52MS5TZXJ2aWNlSXRlbSJyChZCdWxrTGlua0FjY291bnRSZXF1ZXN0Eg4KBnZlbmRvchgFIAEoCRISCgpjc3ZDb250ZW50GAEgASgMEhEKCWRlbGltaXRlchgCIAEoCRIRCgloYXNIZWFkZXIYAyABKAgSDgoGZHJ5UnVuGAQgASgIImEKFEJ1bGtMaW5rQWNjb3VudEVycm9yEg0KBWluZGV4GAEgASgFEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhEKCWFjY291bnRJZBgDIAEoCRIPCgdtZXNzYWdlGAQgASgJIt8BChdCdWxrTGlua0FjY291bnRNZXRhZGF0YRIOCgZzdGF0dXMYASABKAkSEgoKdG90YWxDb3VudBgCIAEoBRIWCg5wcm9jZXNzZWRDb3VudBgDIAEoBRIUCgxzdWNjZXNzQ291bnQYBCABKAUSFAoMZmFpbHVyZUNvdW50GAUgASgFEjgKBmVycm9ycxgGIAMoCzIoLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrTGlua0FjY291bnRFcnJvchIRCglzdGFydFRpbWUYByABKAkSDwoHZW5kVGltZRgIIAEoCSI+ChpCdWxrVGFnQmlsbGluZ0dyb3VwUmVxdWVzdBISCgpjc3ZDb250ZW50GAEgASgMEgwKBG1vZGUYAiABKAkiggEKGEJ1bGtUYWdCaWxsaW5nR3JvdXBFcnJvchINCgVpbmRleBgBIAEoBRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRISCgpjdXN0b21lcklkGAMgASgJEgsKA2tleRgEIAEoCRINCgV2YWx1ZRgFIAEoCRIPCgdtZXNzYWdlGAYgASgJIucBChtCdWxrVGFnQmlsbGluZ0dyb3VwTWV0YWRhdGESDgoGc3RhdHVzGAEgASgJEhIKCnRvdGFsQ291bnQYAiABKAUSFgoOcHJvY2Vzc2VkQ291bnQYAyABKAUSFAoMc3VjY2Vzc0NvdW50GAQgASgFEhQKDGZhaWx1cmVDb3VudBgFIAEoBRI8CgZlcnJvcnMYBiADKAsyLC5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa1RhZ0JpbGxpbmdHcm91cEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJIjcKKUdldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJInkKKkdldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXNwb25zZRIxCgZsYXlvdXQYASABKAsyIS5ibHVlYXBpLmFwaS5yaXBwbGUuSW52b2ljZUxheW91dBIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJIkoKKVNldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJEhEKCWxheW91dF9pZBgCIAEoCSJjCiBDcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBIMCgRuYW1lGAEgASgJEjEKBmxheW91dBgCIAEoCzIhLmJsdWVhcGkuYXBpLnJpcHBsZS5JbnZvaWNlTGF5b3V0IjYKIUNyZWF0ZUludm9pY2VMYXlvdXRDb25maWdSZXNwb25zZRIRCglsYXlvdXRfaWQYASABKAkibwogVXBkYXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSMQoGbGF5b3V0GAIgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQSDAoEbmFtZRgDIAEoCSIgCh5SZWFkSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QibgofUmVhZEludm9pY2VMYXlvdXRDb25maWdSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEjEKBmxheW91dBgDIAEoCzIhLmJsdWVhcGkuYXBpLnJpcHBsZS5JbnZvaWNlTGF5b3V0IjoKLERlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIi4KIERlbGV0ZUludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjkKK0xpc3RJbnZvaWNlTGF5b3V0Q29uZmlnQmlsbGluZ0dyb3Vwc1JlcXVlc3QSCgoCaWQYASABKAkiSAosTGlzdEludm9pY2VMYXlvdXRDb25maWdCaWxsaW5nR3JvdXBzUmVzcG9uc2USGAoQYmlsbGluZ2dyb3VwX2lkcxgBIAMoCTLAxgEKB0JpbGxpbmcSgAEKEUxpc3RCaWxsaW5nR3JvdXBzEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiGYLT5JMCExIRL3YxL2JpbGxpbmdncm91cHMwARKwAQoaTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWQSNS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWRSZXF1ZXN0GjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVzcG9uc2UiI4LT5JMCHRIbL3YxL2JpbGxpbmdncm91cHM6cGFnaW5hdGVkEoMBChJDcmVhdGVCaWxsaW5nR3JvdXASLS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiHILT5JMCFjoBKiIRL3YxL2JpbGxpbmdncm91cHMSlgEKGENyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZBIzLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWRSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCIjgtPkkwIdOgEqIhgvdjEvYmlsbGluZ2dyb3Vwcy9tZXJnZWQSeQoRRGVsZXRlQmlsbGluR3JvdXASLS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXKhUvdjEvYmlsbGluZ2dyb3VwL3tpZH0SjAEKGEFkZEFjY291bnRUb0JpbGxpbmdHcm91cBIzLmJsdWVhcGkuYmlsbGluZy52MS5BZGRBY2NvdW50VG9CaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiOC0+STAh06ASoiGC92MS9iaWxsaW5nZ3JvdXAvYWNjb3VudBKZAQoPR2V0QmlsbGluZ0dyb3VwEiouYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cFJlcXVlc3QaKy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwUmVzcG9uc2UiLYLT5JMCJxIlL3YxL2JpbGxpbmdncm91cHMve2JpbGxpbmdJbnRlcm5hbElkfRKRAQoOR2V0QWNjZXNzR3JvdXASKS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QWNjZXNzR3JvdXBSZXF1ZXN0GiouYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFjY2Vzc0dyb3VwUmVzcG9uc2UiKILT5JMCIhIgL3YxL2FjY2Vzc2dyb3Vwcy97YWNjZXNzR3JvdXBJZH0SngEKFkxpc3RBd3NEYWlseVJ1bkhpc3RvcnkSMS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEF3c0RhaWx5UnVuSGlzdG9yeVJlcXVlc3QaJi5ibHVlYXBpLmJpbGxpbmcudjEuQXdzRGFpbHlSdW5IaXN0b3J5IieC0+STAiE6ASoiHC92MS9hd3MvZGFpbHlydW5oaXN0b3J5OnJlYWQwARKaAQoTTGlzdFVzYWdlQ29zdHNEcmlmdBIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0VXNhZ2VDb3N0c0RyaWZ0UmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5Vc2FnZUNvc3RzRHJpZnQiLILT5JMCJjoBKiIhL3YxL3t2ZW5kb3J9L3VzYWdlY29zdHNkcmlmdDpyZWFkMAESfAoNQ3JlYXRlSW52b2ljZRIoLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlUmVxdWVzdBobLmJsdWVhcGkuYXBpLkludm9pY2VNZXNzYWdlIiSC0+STAh46ASoiGS92MS9pbnZvaWNlL3tkYXRlfTpjcmVhdGUSmwEKGUNyZWF0ZUludm9pY2VXaXRoU2V0dGluZ3MSLi5ibHVlYXBpLmJpbGxpbmcudjEuU2F2ZUludm9pY2VTZXR0aW5nc1JlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIxgtPkkwIrOgEqIiYvdjEvaW52b2ljZS97ZGF0ZX06Y3JlYXRlJnNhdmVzZXR0aW5ncxKJAQoTU2F2ZUludm9pY2VTZXR0aW5ncxIuLmJsdWVhcGkuYmlsbGluZy52MS5TYXZlSW52b2ljZVNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqIh8vdjEvaW52b2ljZS97ZGF0ZX06c2F2ZXNldHRpbmdzEqIBChNDb252ZXJ0SW52b2ljZVRvUGRmEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkNvbnZlcnRJbnZvaWNlVG9QZGZSZXF1ZXN0Gi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkNvbnZlcnRJbnZvaWNlVG9QZGZSZXNwb25zZSIqgtPkkwIkOgEqIh8vdjEvaW52b2ljZS97ZGF0ZX06Y29udmVydHRvcGRmEn0KEEdldEludm9pY2VTdGF0dXMSKy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZVN0YXR1c1JlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIfgtPkkwIZEhcvdjEvaW52b2ljZS9zdGF0dXMve2lkfRKLAQoRTGlzdEludm9pY2VTdGF0dXMSLC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VTdGF0dXNSZXF1ZXN0GhsuYmx1ZWFwaS5hcGkuSW52b2ljZU1lc3NhZ2UiKYLT5JMCIzoBKiIeL3YxL2ludm9pY2Uvc3RhdHVzL3tkYXRlfTpyZWFkMAESbQoKR2V0SW52b2ljZRIlLmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlUmVxdWVzdBoULmJsdWVhcGkuYXBpLkludm9pY2UiIoLT5JMCHDoBKiIXL3YxL2ludm9pY2Uve2RhdGV9OnJlYWQSfQoLTGlzdEludm9pY2USJi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXF1ZXN0GicuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UiG4LT5JMCFToBKiIQL3YxL2ludm9pY2U6cmVhZDABEogBChVVcGRhdGVJbnZvaWNlUHJldmlld3MSMC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZVByZXZpZXdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIlgtPkkwIfOgEqGhovdjEvaW52b2ljZS97ZGF0ZX06cHJldmlldxKWAQoRRXhwb3J0SW52b2ljZUZpbGUSLC5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZUZpbGVSZXF1ZXN0Gi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEludm9pY2VGaWxlUmVzcG9uc2UiJILT5JMCHjoBKiIZL3YxL2ludm9pY2Uve2RhdGV9OmV4cG9ydBKWAQoTTGlzdEludm9pY2VUZW1wbGF0ZRIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVRlbXBsYXRlUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVRlbXBsYXRlUmVzcG9uc2UiHILT5JMCFhIUL3YxL2ludm9pY2UvdGVtcGxhdGUwARKtAQoZR2V0SW52b2ljZURpc3BsYXlTZXR0aW5ncxI0LmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVzcG9uc2UiI4LT5JMCHRIbL3YxL2ludm9pY2UvZGlzcGxheXNldHRpbmdzEpcBChxVcGRhdGVJbnZvaWNlRGlzcGxheVNldHRpbmdzEjcuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiaC0+STAiA6ASoiGy92MS9pbnZvaWNlL2Rpc3BsYXlzZXR0aW5ncxKWAQoZVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZRI0LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIrgtPkkwIlOgEqGiAvdjEvaW52b2ljZS9leGNoYW5nZXJhdGUve21vbnRofRKsAQohVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVRlbXBsYXRlEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMYLT5JMCKzoBKiImL3YxL2JpbGxpbmdncm91cHMve2lkfS9pbnZvaWNldGVtcGxhdGUSsQEKHFJlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXMSNy5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZFNlcnZpY2VEaXNjb3VudHNTZXJ2aWNlc1JlcXVlc3QaHi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuU2VydmljZSI2gtPkkwIwOgEqIisvdjEvc2VydmljZWRpc2NvdW50cy97dmVuZG9yfS9zZXJ2aWNlczpyZWFkMAESqgEKHUNyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBouLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIfgtPkkwIZOgEqIhQvdjEvc2VydmljZWRpc2NvdW50cxKvAQodVXBkYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSOC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIiSC0+STAh46ASoaGS92MS9zZXJ2aWNlZGlzY291bnRzL3tpZH0SlAEKHURlbGV0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIhgtPkkwIbKhkvdjEvc2VydmljZWRpc2NvdW50cy97aWR9EqoBChtMaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBorLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIkgtPkkwIeOgEqIhkvdjEvc2VydmljZWRpc2NvdW50czpyZWFkMAESpgEKGkdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzEjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBouLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIhgtPkkwIbEhkvdjEvc2VydmljZWRpc2NvdW50cy97aWR9EqIBChZFeHBvcnRTZXJ2aWNlRGlzY291bnRzEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydFNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi0uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLlNlcnZpY2VEaXNjb3VudHNFeHBvcnQiJoLT5JMCIDoBKiIbL3YxL3NlcnZpY2VkaXNjb3VudHM6ZXhwb3J0EvABCilDcmVhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaRS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSI2gtPkkwIwOgEqIisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEvABCilVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaRS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSI2gtPkkwIwOgEqGisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEr4BCilEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLSorL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2JpbGxpbmdncm91cBLRAQoiTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI9LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMiNoLT5JMCMDoBKiIrL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQ6cmVhZDABEtwBCiRDcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpALmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSIxgtPkkwIrOgEqIiYvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudBLcAQokVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaQC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiMYLT5JMCKzoBKhomL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQSuQEKJFJlbW92ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5SZW1vdmVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjiC0+STAjI6ASoaLS92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50OnJlbW92ZRKvAQokRGVsZXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLoLT5JMCKComL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQSzQEKJEV4cG9ydEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjQuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzRXhwb3J0Ii6C0+STAig6ASoiIy92MS9zZXJ2aWNlZGlzY291bnRzL2FjY291bnQ6ZXhwb3J0EtoBCilFeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuR3JvdXBTZXJ2aWNlRGlzY291bnRzRXhwb3J0IjOC0+STAi06ASoiKC92MS9zZXJ2aWNlZGlzY291bnRzL2JpbGxpbmdncm91cDpleHBvcnQS5AEKJkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkEuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpCLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjOC0+STAi0SKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9iaWxsaW5nZ3JvdXAScwoOQ3JlYXRlUmVzZWxsZXISKS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlUmVzZWxsZXJSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIhiC0+STAhI6ASoiDS92MS9yZXNlbGxlcnMScAoNTGlzdFJlc2VsbGVycxIoLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0UmVzZWxsZXJzUmVxdWVzdBocLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlciIVgtPkkwIPEg0vdjEvcmVzZWxsZXJzMAESbwoLR2V0UmVzZWxsZXISJi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0UmVzZWxsZXJSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIhqC0+STAhQSEi92MS9yZXNlbGxlcnMve2lkfRJ4Cg5VcGRhdGVSZXNlbGxlchIpLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVSZXNlbGxlclJlcXVlc3QaHC5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXIiHYLT5JMCFzoBKhoSL3YxL3Jlc2VsbGVycy97aWR9Em8KDkRlbGV0ZVJlc2VsbGVyEikuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZVJlc2VsbGVyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIagtPkkwIUKhIvdjEvcmVzZWxsZXJzL3tpZH0ShgEKEUdldEJpbGxpbmdTZXR0aW5nEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdTZXR0aW5nUmVxdWVzdBotLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nU2V0dGluZ1Jlc3BvbnNlIhSC0+STAg4SDC92MS9zZXR0aW5ncxKbAQoRTGlzdEV4Y2hhbmdlUmF0ZXMSLC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2hhbmdlUmF0ZXNSZXF1ZXN0Gi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL3t2ZW5kb3J9L2V4Y2hhbmdlcmF0ZS97bW9udGh9EpYBChVTZXRHbG9iYWxFeGNoYW5nZVJhdGUSMC5ibHVlYXBpLmJpbGxpbmcudjEuU2V0R2xvYmFsRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIzgtPkkwItOgEqIigvdjEvZXhjaGFuZ2VyYXRlL2dsb2JhbC97dmVuZG9yfS97bW9udGh9EooBChRTZXRQYXllckV4Y2hhbmdlUmF0ZRIvLmJsdWVhcGkuYmlsbGluZy52MS5TZXRQYXllckV4Y2hhbmdlUmF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKYLT5JMCIzoBKiIeL3YxL2V4Y2hhbmdlcmF0ZS9wYXllci97bW9udGh9Ep8BChtTZXRCaWxsaW5nR3JvdXBFeGNoYW5nZVJhdGUSNi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0QmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqIiUvdjEvZXhjaGFuZ2VyYXRlL2JpbGxpbmdncm91cC97bW9udGh9EnwKEExpc3RBY2Nlc3NHcm91cHMSKy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFjY2Vzc0dyb3Vwc1JlcXVlc3QaHy5ibHVlYXBpLmFwaS5yaXBwbGUuQWNjZXNzR3JvdXAiGILT5JMCEhIQL3YxL2FjY2Vzc2dyb3VwczABEn8KEUNyZWF0ZUFjY2Vzc0dyb3VwEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBofLmJsdWVhcGkuYXBpLnJpcHBsZS5BY2Nlc3NHcm91cCIbgtPkkwIVOgEqIhAvdjEvYWNjZXNzZ3JvdXBzEoQBChFVcGRhdGVBY2Nlc3NHcm91cBIsLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBY2Nlc3NHcm91cFJlcXVlc3QaHy5ibHVlYXBpLmFwaS5yaXBwbGUuQWNjZXNzR3JvdXAiIILT5JMCGjoBKhoVL3YxL2FjY2Vzc2dyb3Vwcy97aWR9EngKEURlbGV0ZUFjY2Vzc0dyb3VwEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFjY2Vzc0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXKhUvdjEvYWNjZXNzZ3JvdXBzL3tpZH0SnwEKFExpc3RBYmNCaWxsaW5nR3JvdXBzEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBYmNCaWxsaW5nR3JvdXBzUmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5BYmNCaWxsaW5nR3JvdXAiL4LT5JMCKRInL3YxL2JpbGxpbmdncm91cHMvYmlsbGluZ2NvbmR1Y3Rvci97aWR9MAEStgEKG0xpc3RBYmNCaWxsaW5nR3JvdXBBY2NvdW50cxI2LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWJjQmlsbGluZ0dyb3VwQWNjb3VudHNSZXF1ZXN0Gh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkFiY0FjY291bnQiPYLT5JMCNxI1L3YxL2JpbGxpbmdncm91cHMvYmlsbGluZ2NvbmR1Y3Rvci97cGF5ZXJJZH0vYWNjb3VudHMwARKcAQoWUmVhZEludm9pY2VBZGp1c3RtZW50cxIxLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkSW52b2ljZUFkanVzdG1lbnRzUmVxdWVzdBocLmJsdWVhcGkuYXBpLndhdmUuQWRqdXN0bWVudCIvgtPkkwIpOgEqIiQvdjEve3ZlbmRvcn0vaW52b2ljZWFkanVzdG1lbnRzOnJlYWQwARKjAQoVUmVhZEFkanVzdG1lbnRFbnRyaWVzEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRBZGp1c3RtZW50RW50cmllc1JlcXVlc3QaJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWRqdXN0bWVudEVudHJ5Ii6C0+STAig6ASoiIy92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllczpyZWFkMAESmAEKEkdldEFkanVzdG1lbnRFbnRyeRItLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GiYuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkFkanVzdG1lbnRFbnRyeSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfRKQAQoUQXBwbHlBZGp1c3RtZW50RW50cnkSLy5ibHVlYXBpLmJpbGxpbmcudjEuQXBwbHlBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ii+C0+STAik6ASoiJC92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllczphcHBseRKWAQoWUmVzdG9yZUFkanVzdG1lbnRFbnRyeRIxLmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIxgtPkkwIrOgEqIiYvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXM6cmVzdG9yZRKVAQoUU3BsaXRBZGp1c3RtZW50RW50cnkSLy5ibHVlYXBpLmJpbGxpbmcudjEuU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjSC0+STAi46ASoiKS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L3NwbGl0Ep4BChdBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeRIyLmJsdWVhcGkuYmlsbGluZy52MS5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiN4LT5JMCMToBKiIsL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0vYWxsb2NhdGUSqwEKG1Jlc3RvcmVTcGxpdEFkanVzdG1lbnRFbnRyeRI2LmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjyC0+STAjY6ASoiMS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L3NwbGl0OnJlc3RvcmUStAEKHlJlc3RvcmVBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeRI5LmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ij+C0+STAjk6ASoiNC92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L2FsbG9jYXRlOnJlc3RvcmUSoAEKD0NyZWF0ZUN1c3RvbUZlZRIqLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDdXN0b21GZWVSZXF1ZXN0GisuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbUZlZVJlc3BvbnNlIjSC0+STAi46ASoiKS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy9jdXN0b21mZWVzEq0BChhMaXN0QWRqdXN0bWVudEVudHJ5SXRlbXMSMy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFkanVzdG1lbnRFbnRyeUl0ZW1zUmVxdWVzdBonLmJsdWVhcGkuYmlsbGluZy52MS5BZGp1c3RtZW50RW50cnlJdGVtIjGC0+STAis6ASoiJi92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cnlpdGVtczpyZWFkMAESlwEKFExpc3RBY2NvdW50UmVzb3VyY2VzEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBY2NvdW50UmVzb3VyY2VzUmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5SZXNvdXJjZUFjY291bnQiJ4LT5JMCIRIfL3YxL3Jlc291cmNlcy9hY2NvdW50cy97dmVuZG9yfTABEosBChNHZXRBZGp1c3RtZW50Q29uZmlnEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFkanVzdG1lbnRDb25maWdSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkuQWRqdXN0bWVudENvbmZpZyIlgtPkkwIfEh0vdjEvYWRqdXN0bWVudGNvbmZpZy97dmVuZG9yfRKUAQoWQ3JlYXRlQWRqdXN0bWVudENvbmZpZxIxLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBodLmJsdWVhcGkuYXBpLkFkanVzdG1lbnRDb25maWciKILT5JMCIjoBKiIdL3YxL2FkanVzdG1lbnRjb25maWcve3ZlbmRvcn0SlAEKFlVwZGF0ZUFkanVzdG1lbnRDb25maWcSMS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QaHS5ibHVlYXBpLmFwaS5BZGp1c3RtZW50Q29uZmlnIiiC0+STAiI6ASoaHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EooBChZEZWxldGVBZGp1c3RtZW50Q29uZmlnEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiWC0+STAh8qHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EpUBChJSZWFkVW50YWdnZWRHcm91cHMSLS5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZFVudGFnZ2VkR3JvdXBzUmVxdWVzdBohLmJsdWVhcGkuYXBpLnJpcHBsZS5VbnRhZ2dlZEdyb3VwIiuC0+STAiU6ASoiIC92MS97dmVuZG9yfS91bnRhZ2dlZGdyb3VwczpyZWFkMAESuAEKHVJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiLYLT5JMCJzoBKiIiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXM6cmVhZDABEq8BChtHZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USNi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiKoLT5JMCJBIiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRKzAQoeQ3JlYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaLC5ibHVlYXBpLmFwaS5yaXBwbGUuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlIiiC0+STAiI6ASoiHS92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzErgBCh5VcGRhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USOS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiLYLT5JMCJzoBKhoiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRKfAQoeRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJCoiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRL7AQonR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwEkIuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QaQy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVzcG9uc2UiRYLT5JMCPxI9L3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMvYmlsbGluZ2dyb3VwL3tncm91cElkfS97dmVuZG9yfTABEs8BCidTZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASQi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJIgtPkkwJCOgEqIj0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy9iaWxsaW5nZ3JvdXAve2dyb3VwSWR9L3t2ZW5kb3J9EtIBCipEZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASRS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJFgtPkkwI/Kj0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy9iaWxsaW5nZ3JvdXAve2dyb3VwSWR9L3t2ZW5kb3J9El4KB0dldFRhZ3MSIi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0VGFnc1JlcXVlc3QaGy5ibHVlYXBpLmJpbGxpbmcudjEuVGFnRGF0YSIQgtPkkwIKEggvdjEvdGFnczABEn4KEUNyZWF0ZUN1c3RvbUZpZWxkEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbUZpZWxkUmVxdWVzdBofLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GaWVsZCIagtPkkwIUOgEqIg8vdjEvY3VzdG9tZmllbGQSgQEKD0xpc3RDdXN0b21GaWVsZBIqLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0Q3VzdG9tRmllbGRSZXF1ZXN0Gh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIh+C0+STAhk6ASoiFC92MS9jdXN0b21maWVsZDpyZWFkMAESlAEKGkFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkEjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIngtPkkwIhOgEqIhwvdjEvYmlsbGluZ2dyb3VwL2N1c3RvbWZpZWxkEr4BChtMaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBo3LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXNwb25zZSIsgtPkkwImOgEqIiEvdjEvYmlsbGluZ2dyb3VwL2N1c3RvbWZpZWxkOnJlYWQwARKDAQoVQWRkVGFnc1RvQmlsbGluZ0dyb3VwEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkZFRhZ3NUb0JpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGjoBKiIVL3YxL2JpbGxpbmdncm91cC90YWdzEq8BCh9VcGRhdGVOb25UYWdHcm91cFRvQmlsbGluZ0dyb3VwEjouYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZU5vblRhZ0dyb3VwVG9CaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjiC0+STAjI6ASoiLS92MS9iaWxsaW5nZ3JvdXAve2lkfS97dmVuZG9yfS91bnRhZ2dlZGdyb3VwcxKxAQodRGVsZXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSOC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ij6C0+STAjgqNi92MS9iaWxsaW5nZ3JvdXAvY3VzdG9tZmllbGQve2dyb3VwSWR9L3tjdXN0b21GaWVsZElkfRKDAQoRVXBkYXRlQ3VzdG9tRmllbGQSLC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9tRmllbGRSZXF1ZXN0Gh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIh+C0+STAhk6ASoaFC92MS9jdXN0b21maWVsZC97aWR9EncKEURlbGV0ZUN1c3RvbUZpZWxkEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbUZpZWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIcgtPkkwIWKhQvdjEvY3VzdG9tZmllbGQve2lkfRJyChBDcmVhdGVGcmVlRm9ybWF0EisuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUZyZWVGb3JtYXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhmC0+STAhM6ASoiDi92MS9mcmVlZm9ybWF0EnkKEERlbGV0ZUZyZWVGb3JtYXQSKy5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlRnJlZUZvcm1hdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGioYL3YxL2ZyZWVmb3JtYXQve2dyb3VwSWR9EogBCg1HZXRGcmVlRm9ybWF0EiguYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEZyZWVGb3JtYXRSZXF1ZXN0GikuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEZyZWVGb3JtYXRSZXNwb25zZSIggtPkkwIaEhgvdjEvZnJlZWZvcm1hdC97Z3JvdXBJZH0wARK9AQofR2V0TW9udGhseU1pc2NGZWVJbXBvcnRUZW1wbGF0ZRI6LmJsdWVhcGkuYmlsbGluZy52MS5HZXRNb250aGx5TWlzY0ZlZUltcG9ydFRlbXBsYXRlUmVxdWVzdBowLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZUltcG9ydFRlbXBsYXRlIiyC0+STAiYSJC92MS9tb250aGx5LW1pc2MtZmVlczppbXBvcnRUZW1wbGF0ZRKuAQoZQnVsa0ltcG9ydE1vbnRobHlNaXNjRmVlcxI0LmJsdWVhcGkuYmlsbGluZy52MS5CdWxrSW1wb3J0TW9udGhseU1pc2NGZWVzUmVxdWVzdBouLmJsdWVhcGkuYmlsbGluZy52MS5Nb250aGx5TWlzY0ZlZUltcG9ydFJlc3VsdCIrgtPkkwIlOgEqIiAvdjEvbW9udGhseS1taXNjLWZlZXM6YnVsa0ltcG9ydBKVAQoTTGlzdE1vbnRobHlNaXNjRmVlcxIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0TW9udGhseU1pc2NGZWVzUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0TW9udGhseU1pc2NGZWVzUmVzcG9uc2UiHYLT5JMCFxIVL3YxL21vbnRobHktbWlzYy1mZWVzEocBChREZWxldGVNb250aGx5TWlzY0ZlZRIvLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVNb250aGx5TWlzY0ZlZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJoLT5JMCICoeL3YxL21vbnRobHktbWlzYy1mZWVzL3tyb3dfaWR9EqIBChRHZXRUYWdzQWRkaW5nU2V0dGluZxIvLmJsdWVhcGkuYmlsbGluZy52MS5HZXRUYWdzQWRkaW5nU2V0dGluZ1JlcXVlc3QaJS5ibHVlYXBpLmJpbGxpbmcudjEuVGFnc0FkZGluZ1NldHRpbmciMILT5JMCKhIoL3YxL3t2ZW5kb3J9L3RhZ3NhZGRpbmdzZXR0aW5nL3tncm91cElkfTABEpoBChdVcGRhdGVUYWdzQWRkaW5nU2V0dGluZxIyLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVUYWdzQWRkaW5nU2V0dGluZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLToBKhooL3YxL3t2ZW5kb3J9L3RhZ3NhZGRpbmdzZXR0aW5nL3tncm91cElkfRKhAQoVRXhwb3J0QmlsbGluZ0dyb3VwQ3N2EjAuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEJpbGxpbmdHcm91cENzdlJlcXVlc3QaMS5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVzcG9uc2UiI4LT5JMCHRIbL3YxL2V4cG9ydGNzdi9iaWxsaW5nLWdyb3VwEqkBChdFeHBvcnRJbnZvaWNlU2V0dGluZ0NzdhIyLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRJbnZvaWNlU2V0dGluZ0NzdlJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXNwb25zZSIlgtPkkwIfEh0vdjEvZXhwb3J0Y3N2L2ludm9pY2Utc2V0dGluZxKnAQoiVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhI9LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqGh8vdjEvYmlsbGluZ2dyb3VwL3tpZH06YmFzaWNJbmZvEqIBCh5VcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHMSOS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSItgtPkkwInOgEqGiIvdjEvYmlsbGluZ2dyb3VwL3tpZH06Y3VzdG9tRmllbGRzEpwBChxVcGRhdGVCaWxsaW5nR3JvdXBGcmVlRm9ybWF0EjcuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEZyZWVGb3JtYXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiuC0+STAiU6ASoaIC92MS9iaWxsaW5nZ3JvdXAve2lkfTpmcmVlRm9ybWF0EqUBCiFVcGRhdGVCaWxsaW5nR3JvdXBMaW5rZWRSZXNvdXJjZXMSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqGh8vdjEvYmlsbGluZ2dyb3VwL3tpZH06cmVzb3VyY2VzEqsBCiFVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEvYmlsbGluZ2dyb3VwL3tpZH06aW52b2ljZVNldHRpbmdzEqsBCiFVcGRhdGVCaWxsaW5nR3JvdXBSZXNlbGxlckNoYXJnZXMSPC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwUmVzZWxsZXJDaGFyZ2VzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqGiUvdjEvYmlsbGluZ2dyb3VwL3tpZH06cmVzZWxsZXJDaGFyZ2VzErEBCiNVcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlcxI+LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMoLT5JMCLDoBKhonL3YxL2JpbGxpbmdncm91cC97aWR9OmFkZGl0aW9uYWxDaGFyZ2VzEtQBCiFHZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW4SPC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBo9LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXNwb25zZSIygtPkkwIsEiovdjEvYmlsbGluZ2dyb3VwL3tpZH0ve3ZlbmRvcn0vc3VwcG9ydHBsYW4StgEKJFVwZGF0ZUJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbhI/LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjWC0+STAi86ASoaKi92MS9iaWxsaW5nZ3JvdXAve2lkfS97dmVuZG9yfS9zdXBwb3J0cGxhbhKBAQoSQ3JlYXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJILT5JMCHjoBKiIZL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudBKSAQoSVXBkYXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiNYLT5JMCLzoBKhoqL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudC97YW5ub3VuY2VtZW50SWR9EpwBChlVcGRhdGVBbm5vdW5jZW1lbnRzU3RhdHVzEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudHNTdGF0dXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjGC0+STAis6ASoyJi92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL2J1bGsvc3RhdHVzEqABChZVcGRhdGVBbm5vdW5jZW1lbnREYXRlEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFubm91bmNlbWVudERhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjuC0+STAjU6ASoyMC92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3thbm5vdW5jZW1lbnRJZH0vZGF0ZRKPAQoSRGVsZXRlQW5ub3VuY2VtZW50Ei0uYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFubm91bmNlbWVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMoLT5JMCLCoqL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudC97YW5ub3VuY2VtZW50SWR9EqABChBHZXRBbm5vdW5jZW1lbnRzEisuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFubm91bmNlbWVudHNSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFubm91bmNlbWVudCI7gtPkkwI1EjMvYmlsbGluZy92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3thbm5vdW5jZW1lbnRJZH0wARLOAQocR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50cxI3LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVxdWVzdBo4LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzUmVzcG9uc2UiOYLT5JMCMxIxL3YxL2JpbGxpbmdncm91cC9yZXNlbGxlci9hbm5vdW5jZW1lbnRzL3tncm91cElkfTABEmYKCkdldENyZWRpdHMSJS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3JlZGl0c1JlcXVlc3QaGi5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlZGl0IhOC0+STAg0SCy92MS9jcmVkaXRzMAESdgoOR2V0Q3N2U2V0dGluZ3MSKS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3N2U2V0dGluZ3NSZXF1ZXN0Gh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkNzdlNldHRpbmciF4LT5JMCERIPL3YxL2NzdnNldHRpbmdzMAESqQEKF0NyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIiWC0+STAh86ASoiGi92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuEqoBChRHZXRDaGlsZEJpbGxpbmdHcm91cBIvLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIvgtPkkwIpEicvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0SoAEKFlJlYWRDaGlsZEJpbGxpbmdHcm91cHMSMS5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZENoaWxkQmlsbGluZ0dyb3Vwc1JlcXVlc3QaJS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXAiKoLT5JMCJDoBKiIfL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW46cmVhZDABErYBChdVcGRhdGVDaGlsZEJpbGxpbmdHcm91cBIyLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIygtPkkwIsOgEqGicvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0SswEKF0RlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIi+C0+STAikqJy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfRLzAQomVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0GkIuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVzcG9uc2UiQoLT5JMCPDoBKho3L3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L2ludm9pY2VTZXR0aW5ncxLSAQorU2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJGLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJDgtPkkwI9OgEqIjgvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cxLtAQoyU2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSTS5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlCC0+STAko6ASoiRS92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9zZXJ2aWNlRGlzY291bnRzL2FjY291bnRzOnNldBLlAQosU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USRy5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlSC0+STAk46ASoiSS92MS97dmVuZG9yfS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9jdXN0b21pemVkQmlsbGluZ1NlcnZpY2USlgIKLEdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEkcuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBpILmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlc3BvbnNlIlGC0+STAksSSS92MS97dmVuZG9yfS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9jdXN0b21pemVkQmlsbGluZ1NlcnZpY2UwARKAAgorR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJGLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpHLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiQILT5JMCOhI4L3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L3NlcnZpY2VEaXNjb3VudHMSiwIKM1JlYWRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxJOLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkQ2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cyJOgtPkkwJIEkYvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cy9hY2NvdW50czpyZWFkMAEShwEKFkJ1bGtDcmVhdGVCaWxsaW5nR3JvdXASMS5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0NyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIieC0+STAiE6ASoiHC92MS9iaWxsaW5nZ3JvdXBzOmJ1bGtDcmVhdGUShwEKFkJ1bGtVcGRhdGVCaWxsaW5nR3JvdXASMS5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa1VwZGF0ZUJpbGxpbmdHcm91cFJlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIieC0+STAiE6ASoiHC92MS9iaWxsaW5nZ3JvdXBzOmJ1bGtVcGRhdGUSvwEKGUNyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnkSNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlIjWC0+STAi86ASoiKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxK/AQoZVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeRI0LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2UiNYLT5JMCLzoBKhoqL3YxL2JpbGxpbmdncm91cHMvZXhjbHVkZS1zZXJ2aWNlLXNldHRpbmdzErwBChlEZWxldGVFeGNsdWRlU2VydmljZUVudHJ5EjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0GjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZSIygtPkkwIsKiovdjEvYmlsbGluZ2dyb3Vwcy9leGNsdWRlLXNlcnZpY2Utc2V0dGluZ3MSqgEKE0xpc3RFeGNsdWRlU2VydmljZXMSLi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2x1ZGVTZXJ2aWNlc1JlcXVlc3QaLy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2x1ZGVTZXJ2aWNlc1Jlc3BvbnNlIjKC0+STAiwSKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxKAAQoMTGlzdFNlcnZpY2VzEicuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RTZXJ2aWNlc1JlcXVlc3QaKC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdFNlcnZpY2VzUmVzcG9uc2UiHYLT5JMCFxIVL3YxL3t2ZW5kb3J9L3NlcnZpY2VzEn4KD0J1bGtMaW5rQWNjb3VudBIqLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrTGlua0FjY291bnRSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIsgtPkkwImOgEqIiEvdjEvYmlsbGluZ2dyb3VwczpidWxrTGlua0FjY291bnQSfgoTQnVsa1RhZ0JpbGxpbmdHcm91cBIuLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrVGFnQmlsbGluZ0dyb3VwUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iJILT5JMCHjoBKiIZL3YxL2JpbGxpbmdncm91cHM6YnVsa1RhZxLXAQoiR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZxI9LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBo+LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiMoLT5JMCLBIqL3YxL2JpbGxpbmdncm91cHMve2lkfS9pbnZvaWNlbGF5b3V0Y29uZmlnErIBCiJTZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnEj0uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjWC0+STAi86ASoiKi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZWxheW91dGNvbmZpZxKsAQoZQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZxI0LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiIoLT5JMCHDoBKiIXL3YxL2ludm9pY2VsYXlvdXRjb25maWcSkgEKGVVwZGF0ZUludm9pY2VMYXlvdXRDb25maWcSNC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJ4LT5JMCIToBKhocL3YxL2ludm9pY2VsYXlvdXRjb25maWcve2lkfRKtAQoXUmVhZEludm9pY2VMYXlvdXRDb25maWcSMi5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2UiJ4LT5JMCIToBKiIcL3YxL2ludm9pY2VsYXlvdXRjb25maWc6cmVhZDABErUBCiVEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnEkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjKC0+STAiwqKi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZWxheW91dGNvbmZpZxKPAQoZRGVsZXRlSW52b2ljZUxheW91dENvbmZpZxI0LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIkgtPkkwIeKhwvdjEvaW52b2ljZWxheW91dGNvbmZpZy97aWR9Et0BCiRMaXN0SW52b2ljZUxheW91dENvbmZpZ0JpbGxpbmdHcm91cHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VMYXlvdXRDb25maWdCaWxsaW5nR3JvdXBzUmVxdWVzdBpALmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZUxheW91dENvbmZpZ0JpbGxpbmdHcm91cHNSZXNwb25zZSIygtPkkwIsEiovdjEvaW52b2ljZWxheW91dGNvbmZpZy97aWR9L2JpbGxpbmdncm91cHManQGSQZkBEkYoQkVUQSkgQmlsbGluZyBBUEkuIEJhc2UgVVJMOiBodHRwczovL2FwaS5hbHBoYXVzLmNsb3VkL20vYmx1ZS9iaWxsaW5nGk8KElNlcnZpY2UgZGVmaW5pdGlvbhI5aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2JpbGxpbmcvQlEKGWNsb3VkLmFscGhhdXMuYXBpLmJpbGxpbmdCDEJpbGxpbmdQcm90b1omZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2JpbGxpbmdiBnByb3RvMw", [file_api_account, file_api_invoice, file_api_costtag, file_api_ripple_accessgroup, file_api_ripple_billinggroup, file_api_ripple_reseller, file_api_ripple_yearmonth, file_api_ripple_rounding, file_api_ripple_invoicelayout, file_api_ripple_duedate, file_api_ripple_exchangerate, file_api_ripple_untaggedgroup, file_api_ripple_customizedbillingservice, file_api_ripple_v1_invoiceservicediscounts, file_api_ripple_v1_accountsupportplan, file_api_ripple_v1_adjustmententry, file_api_adjustment, file_api_wave_adjustment, 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]);
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* @generated from message blueapi.billing.v1.BillingGroup
|
|
@@ -4828,7 +4828,7 @@ export const GetFreeFormatResponseSchema: GenMessage<GetFreeFormatResponse> = /*
|
|
|
4828
4828
|
*/
|
|
4829
4829
|
export type GetMonthlyMiscFeeImportTemplateRequest = Message<"blueapi.billing.v1.GetMonthlyMiscFeeImportTemplateRequest"> & {
|
|
4830
4830
|
/**
|
|
4831
|
-
* Optional. Template language. Supported values are "en" and "ja".
|
|
4831
|
+
* Optional. Template language. Supported values are "en" and "ja".
|
|
4832
4832
|
*
|
|
4833
4833
|
* @generated from field: string language = 1;
|
|
4834
4834
|
*/
|
|
@@ -4847,60 +4847,46 @@ export const GetMonthlyMiscFeeImportTemplateRequestSchema: GenMessage<GetMonthly
|
|
|
4847
4847
|
*/
|
|
4848
4848
|
export type MonthlyMiscFeeImportTemplate = Message<"blueapi.billing.v1.MonthlyMiscFeeImportTemplate"> & {
|
|
4849
4849
|
/**
|
|
4850
|
-
* Supported import format. Currently "csv".
|
|
4851
|
-
*
|
|
4852
4850
|
* @generated from field: string format = 1;
|
|
4853
4851
|
*/
|
|
4854
4852
|
format: string;
|
|
4855
4853
|
|
|
4856
4854
|
/**
|
|
4857
|
-
* Supported format version. Currently "misc_fee_import_v1".
|
|
4858
|
-
*
|
|
4859
4855
|
* @generated from field: string format_version = 2;
|
|
4860
4856
|
*/
|
|
4861
4857
|
formatVersion: string;
|
|
4862
4858
|
|
|
4863
4859
|
/**
|
|
4864
|
-
* CSV header columns in required order.
|
|
4860
|
+
* CSV header columns in required order. Has no "enabled" column: every item the
|
|
4861
|
+
* workflow imports is saved as enabled.
|
|
4865
4862
|
*
|
|
4866
4863
|
* @generated from field: repeated string headers = 3;
|
|
4867
4864
|
*/
|
|
4868
4865
|
headers: string[];
|
|
4869
4866
|
|
|
4870
4867
|
/**
|
|
4871
|
-
* Example CSV row matching the current format version.
|
|
4872
|
-
*
|
|
4873
4868
|
* @generated from field: repeated string sample_row = 4;
|
|
4874
4869
|
*/
|
|
4875
4870
|
sampleRow: string[];
|
|
4876
4871
|
|
|
4877
4872
|
/**
|
|
4878
|
-
* Supported
|
|
4873
|
+
* Supported values for BulkImportMonthlyMiscFeesRequest.mode: "merge" and "replace".
|
|
4874
|
+
* Preview vs. apply is controlled separately by BulkImportMonthlyMiscFeesRequest.dry_run,
|
|
4875
|
+
* not by this field.
|
|
4879
4876
|
*
|
|
4880
4877
|
* @generated from field: repeated string allowed_modes = 5;
|
|
4881
4878
|
*/
|
|
4882
4879
|
allowedModes: string[];
|
|
4883
4880
|
|
|
4884
4881
|
/**
|
|
4885
|
-
* Maximum upload size in bytes.
|
|
4886
|
-
*
|
|
4887
4882
|
* @generated from field: int64 max_file_size_bytes = 6;
|
|
4888
4883
|
*/
|
|
4889
4884
|
maxFileSizeBytes: bigint;
|
|
4890
4885
|
|
|
4891
4886
|
/**
|
|
4892
|
-
* Maximum data rows accepted per CSV file.
|
|
4893
|
-
*
|
|
4894
4887
|
* @generated from field: int32 max_rows = 7;
|
|
4895
4888
|
*/
|
|
4896
4889
|
maxRows: number;
|
|
4897
|
-
|
|
4898
|
-
/**
|
|
4899
|
-
* Field-level validation rules for UI guidance.
|
|
4900
|
-
*
|
|
4901
|
-
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeImportFieldRule field_rules = 8;
|
|
4902
|
-
*/
|
|
4903
|
-
fieldRules: MonthlyMiscFeeImportFieldRule[];
|
|
4904
4890
|
};
|
|
4905
4891
|
|
|
4906
4892
|
/**
|
|
@@ -4911,89 +4897,55 @@ export const MonthlyMiscFeeImportTemplateSchema: GenMessage<MonthlyMiscFeeImport
|
|
|
4911
4897
|
messageDesc(file_billing_v1_billing, 127);
|
|
4912
4898
|
|
|
4913
4899
|
/**
|
|
4914
|
-
*
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
/**
|
|
4918
|
-
* @generated from field: string field = 1;
|
|
4919
|
-
*/
|
|
4920
|
-
field: string;
|
|
4921
|
-
|
|
4922
|
-
/**
|
|
4923
|
-
* @generated from field: bool required = 2;
|
|
4924
|
-
*/
|
|
4925
|
-
required: boolean;
|
|
4926
|
-
|
|
4927
|
-
/**
|
|
4928
|
-
* @generated from field: string format = 3;
|
|
4929
|
-
*/
|
|
4930
|
-
format: string;
|
|
4931
|
-
|
|
4932
|
-
/**
|
|
4933
|
-
* @generated from field: string description = 4;
|
|
4934
|
-
*/
|
|
4935
|
-
description: string;
|
|
4936
|
-
};
|
|
4937
|
-
|
|
4938
|
-
/**
|
|
4939
|
-
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportFieldRule.
|
|
4940
|
-
* Use `create(MonthlyMiscFeeImportFieldRuleSchema)` to create a new message.
|
|
4941
|
-
*/
|
|
4942
|
-
export const MonthlyMiscFeeImportFieldRuleSchema: GenMessage<MonthlyMiscFeeImportFieldRule> = /*@__PURE__*/
|
|
4943
|
-
messageDesc(file_billing_v1_billing, 128);
|
|
4944
|
-
|
|
4945
|
-
/**
|
|
4900
|
+
* No billing_month or vendor field: each CSV row supplies its own, so one upload can span
|
|
4901
|
+
* any combination of billing groups, vendors, and invoice months.
|
|
4902
|
+
*
|
|
4946
4903
|
* @generated from message blueapi.billing.v1.BulkImportMonthlyMiscFeesRequest
|
|
4947
4904
|
*/
|
|
4948
4905
|
export type BulkImportMonthlyMiscFeesRequest = Message<"blueapi.billing.v1.BulkImportMonthlyMiscFeesRequest"> & {
|
|
4949
|
-
/**
|
|
4950
|
-
* Required. Selected billing cycle in YYYY-MM form; YYYYMM is accepted and normalized by the server.
|
|
4951
|
-
*
|
|
4952
|
-
* @generated from field: string billing_month = 1;
|
|
4953
|
-
*/
|
|
4954
|
-
billingMonth: string;
|
|
4955
|
-
|
|
4956
4906
|
/**
|
|
4957
4907
|
* Required. Uploaded CSV content as normalized UTF-8 text.
|
|
4958
4908
|
*
|
|
4959
|
-
* @generated from field: string csv_content =
|
|
4909
|
+
* @generated from field: string csv_content = 1;
|
|
4960
4910
|
*/
|
|
4961
4911
|
csvContent: string;
|
|
4962
4912
|
|
|
4963
4913
|
/**
|
|
4964
|
-
* Required. Original upload file name for audit
|
|
4914
|
+
* Required. Original upload file name for audit and result display.
|
|
4965
4915
|
*
|
|
4966
|
-
* @generated from field: string file_name =
|
|
4916
|
+
* @generated from field: string file_name = 2;
|
|
4967
4917
|
*/
|
|
4968
4918
|
fileName: string;
|
|
4969
4919
|
|
|
4970
4920
|
/**
|
|
4971
|
-
* Required.
|
|
4921
|
+
* Required. "merge" upserts each row's item by label, leaving every other existing item for
|
|
4922
|
+
* that billing group and vendor untouched. "replace" sets the complete additional-item list
|
|
4923
|
+
* for each (billing_month, billing_group_id, vendor) combination the CSV names to exactly
|
|
4924
|
+
* that combination's CSV rows, removing any existing item the CSV omits for it; a
|
|
4925
|
+
* "replace" CSV must contain rows for exactly one billing_month, and the request is
|
|
4926
|
+
* rejected before saving anything if it spans more than one.
|
|
4972
4927
|
*
|
|
4973
|
-
* @generated from field: string mode =
|
|
4928
|
+
* @generated from field: string mode = 3;
|
|
4974
4929
|
*/
|
|
4975
4930
|
mode: string;
|
|
4976
4931
|
|
|
4977
4932
|
/**
|
|
4978
|
-
*
|
|
4979
|
-
*
|
|
4980
|
-
* @generated from field: string format = 5;
|
|
4933
|
+
* @generated from field: string format = 4;
|
|
4981
4934
|
*/
|
|
4982
4935
|
format: string;
|
|
4983
4936
|
|
|
4984
4937
|
/**
|
|
4985
|
-
*
|
|
4986
|
-
*
|
|
4987
|
-
* @generated from field: string format_version = 6;
|
|
4938
|
+
* @generated from field: string format_version = 5;
|
|
4988
4939
|
*/
|
|
4989
4940
|
formatVersion: string;
|
|
4990
4941
|
|
|
4991
4942
|
/**
|
|
4992
|
-
* Optional.
|
|
4943
|
+
* Optional. When true, validates and returns the planned result for either mode without
|
|
4944
|
+
* saving anything.
|
|
4993
4945
|
*
|
|
4994
|
-
* @generated from field:
|
|
4946
|
+
* @generated from field: bool dry_run = 6;
|
|
4995
4947
|
*/
|
|
4996
|
-
|
|
4948
|
+
dryRun: boolean;
|
|
4997
4949
|
};
|
|
4998
4950
|
|
|
4999
4951
|
/**
|
|
@@ -5001,88 +4953,41 @@ export type BulkImportMonthlyMiscFeesRequest = Message<"blueapi.billing.v1.BulkI
|
|
|
5001
4953
|
* Use `create(BulkImportMonthlyMiscFeesRequestSchema)` to create a new message.
|
|
5002
4954
|
*/
|
|
5003
4955
|
export const BulkImportMonthlyMiscFeesRequestSchema: GenMessage<BulkImportMonthlyMiscFeesRequest> = /*@__PURE__*/
|
|
5004
|
-
messageDesc(file_billing_v1_billing,
|
|
4956
|
+
messageDesc(file_billing_v1_billing, 128);
|
|
5005
4957
|
|
|
5006
4958
|
/**
|
|
5007
4959
|
* @generated from message blueapi.billing.v1.ListMonthlyMiscFeesRequest
|
|
5008
4960
|
*/
|
|
5009
4961
|
export type ListMonthlyMiscFeesRequest = Message<"blueapi.billing.v1.ListMonthlyMiscFeesRequest"> & {
|
|
5010
4962
|
/**
|
|
5011
|
-
* Required. Billing cycle in YYYY-MM form; YYYYMM is accepted and normalized by the server.
|
|
5012
|
-
*
|
|
5013
4963
|
* @generated from field: string billing_month = 1;
|
|
5014
4964
|
*/
|
|
5015
4965
|
billingMonth: string;
|
|
5016
4966
|
|
|
5017
4967
|
/**
|
|
5018
|
-
* Optional. Exact billing group ID filter.
|
|
5019
|
-
*
|
|
5020
4968
|
* @generated from field: string billing_group_id = 2;
|
|
5021
4969
|
*/
|
|
5022
4970
|
billingGroupId: string;
|
|
5023
4971
|
|
|
5024
4972
|
/**
|
|
5025
|
-
* Optional. Case-insensitive billing group name query.
|
|
5026
|
-
*
|
|
5027
4973
|
* @generated from field: string billing_group_name_query = 3;
|
|
5028
4974
|
*/
|
|
5029
4975
|
billingGroupNameQuery: string;
|
|
5030
4976
|
|
|
5031
4977
|
/**
|
|
5032
|
-
* Optional. Case-insensitive item or fee tag query.
|
|
5033
|
-
*
|
|
5034
4978
|
* @generated from field: string item_query = 4;
|
|
5035
4979
|
*/
|
|
5036
4980
|
itemQuery: string;
|
|
5037
4981
|
|
|
5038
4982
|
/**
|
|
5039
|
-
*
|
|
5040
|
-
*
|
|
5041
|
-
* @generated from field: string source = 5;
|
|
5042
|
-
*/
|
|
5043
|
-
source: string;
|
|
5044
|
-
|
|
5045
|
-
/**
|
|
5046
|
-
* Optional. User identifier that last updated the row.
|
|
5047
|
-
*
|
|
5048
|
-
* @generated from field: string updated_by = 6;
|
|
5049
|
-
*/
|
|
5050
|
-
updatedBy: string;
|
|
5051
|
-
|
|
5052
|
-
/**
|
|
5053
|
-
* Optional. RFC3339 lower bound for updated_at.
|
|
5054
|
-
*
|
|
5055
|
-
* @generated from field: string updated_after = 7;
|
|
5056
|
-
*/
|
|
5057
|
-
updatedAfter: string;
|
|
5058
|
-
|
|
5059
|
-
/**
|
|
5060
|
-
* Optional. RFC3339 upper bound for updated_at.
|
|
5061
|
-
*
|
|
5062
|
-
* @generated from field: string updated_before = 8;
|
|
5063
|
-
*/
|
|
5064
|
-
updatedBefore: string;
|
|
5065
|
-
|
|
5066
|
-
/**
|
|
5067
|
-
* Optional. Page size for pagination. Default and maximum are server-defined.
|
|
5068
|
-
*
|
|
5069
|
-
* @generated from field: int32 page_size = 9;
|
|
4983
|
+
* @generated from field: int32 page_size = 5;
|
|
5070
4984
|
*/
|
|
5071
4985
|
pageSize: number;
|
|
5072
4986
|
|
|
5073
4987
|
/**
|
|
5074
|
-
*
|
|
5075
|
-
*
|
|
5076
|
-
* @generated from field: string page_token = 10;
|
|
4988
|
+
* @generated from field: string page_token = 6;
|
|
5077
4989
|
*/
|
|
5078
4990
|
pageToken: string;
|
|
5079
|
-
|
|
5080
|
-
/**
|
|
5081
|
-
* Optional. Stable sort expression. Defaults to billing_group_name, item_name, row_id.
|
|
5082
|
-
*
|
|
5083
|
-
* @generated from field: string sort = 11;
|
|
5084
|
-
*/
|
|
5085
|
-
sort: string;
|
|
5086
4991
|
};
|
|
5087
4992
|
|
|
5088
4993
|
/**
|
|
@@ -5090,7 +4995,7 @@ export type ListMonthlyMiscFeesRequest = Message<"blueapi.billing.v1.ListMonthly
|
|
|
5090
4995
|
* Use `create(ListMonthlyMiscFeesRequestSchema)` to create a new message.
|
|
5091
4996
|
*/
|
|
5092
4997
|
export const ListMonthlyMiscFeesRequestSchema: GenMessage<ListMonthlyMiscFeesRequest> = /*@__PURE__*/
|
|
5093
|
-
messageDesc(file_billing_v1_billing,
|
|
4998
|
+
messageDesc(file_billing_v1_billing, 129);
|
|
5094
4999
|
|
|
5095
5000
|
/**
|
|
5096
5001
|
* @generated from message blueapi.billing.v1.ListMonthlyMiscFeesResponse
|
|
@@ -5117,233 +5022,232 @@ export type ListMonthlyMiscFeesResponse = Message<"blueapi.billing.v1.ListMonthl
|
|
|
5117
5022
|
* Use `create(ListMonthlyMiscFeesResponseSchema)` to create a new message.
|
|
5118
5023
|
*/
|
|
5119
5024
|
export const ListMonthlyMiscFeesResponseSchema: GenMessage<ListMonthlyMiscFeesResponse> = /*@__PURE__*/
|
|
5120
|
-
messageDesc(file_billing_v1_billing,
|
|
5025
|
+
messageDesc(file_billing_v1_billing, 130);
|
|
5121
5026
|
|
|
5122
5027
|
/**
|
|
5123
|
-
* @generated from message blueapi.billing.v1.
|
|
5028
|
+
* @generated from message blueapi.billing.v1.DeleteMonthlyMiscFeeRequest
|
|
5124
5029
|
*/
|
|
5125
|
-
export type
|
|
5030
|
+
export type DeleteMonthlyMiscFeeRequest = Message<"blueapi.billing.v1.DeleteMonthlyMiscFeeRequest"> & {
|
|
5126
5031
|
/**
|
|
5127
|
-
*
|
|
5032
|
+
* An opaque ID returned by ListMonthlyMiscFees.
|
|
5128
5033
|
*
|
|
5129
5034
|
* @generated from field: string row_id = 1;
|
|
5130
5035
|
*/
|
|
5131
5036
|
rowId: string;
|
|
5132
5037
|
|
|
5133
5038
|
/**
|
|
5134
|
-
* Required. Billing month used to reject cross-month access or mutation mistakes.
|
|
5135
|
-
*
|
|
5136
5039
|
* @generated from field: string billing_month = 2;
|
|
5137
5040
|
*/
|
|
5138
5041
|
billingMonth: string;
|
|
5139
5042
|
};
|
|
5140
5043
|
|
|
5141
5044
|
/**
|
|
5142
|
-
* Describes the message blueapi.billing.v1.
|
|
5143
|
-
* Use `create(
|
|
5045
|
+
* Describes the message blueapi.billing.v1.DeleteMonthlyMiscFeeRequest.
|
|
5046
|
+
* Use `create(DeleteMonthlyMiscFeeRequestSchema)` to create a new message.
|
|
5144
5047
|
*/
|
|
5145
|
-
export const
|
|
5146
|
-
messageDesc(file_billing_v1_billing,
|
|
5048
|
+
export const DeleteMonthlyMiscFeeRequestSchema: GenMessage<DeleteMonthlyMiscFeeRequest> = /*@__PURE__*/
|
|
5049
|
+
messageDesc(file_billing_v1_billing, 131);
|
|
5147
5050
|
|
|
5148
5051
|
/**
|
|
5149
|
-
* @generated from message blueapi.billing.v1.
|
|
5052
|
+
* @generated from message blueapi.billing.v1.MonthlyMiscFee
|
|
5150
5053
|
*/
|
|
5151
|
-
export type
|
|
5054
|
+
export type MonthlyMiscFee = Message<"blueapi.billing.v1.MonthlyMiscFee"> & {
|
|
5152
5055
|
/**
|
|
5153
|
-
*
|
|
5154
|
-
|
|
5155
|
-
|
|
5056
|
+
* @generated from field: string row_id = 1;
|
|
5057
|
+
*/
|
|
5058
|
+
rowId: string;
|
|
5059
|
+
|
|
5060
|
+
/**
|
|
5061
|
+
* @generated from field: string billing_month = 2;
|
|
5156
5062
|
*/
|
|
5157
5063
|
billingMonth: string;
|
|
5158
5064
|
|
|
5159
5065
|
/**
|
|
5160
|
-
*
|
|
5161
|
-
*
|
|
5162
|
-
* @generated from field: string billing_group_id = 2;
|
|
5066
|
+
* @generated from field: string billing_group_id = 3;
|
|
5163
5067
|
*/
|
|
5164
5068
|
billingGroupId: string;
|
|
5165
5069
|
|
|
5166
5070
|
/**
|
|
5167
|
-
*
|
|
5168
|
-
*
|
|
5169
|
-
* @generated from field: string billing_group_name_query = 3;
|
|
5071
|
+
* @generated from field: string billing_group_name = 4;
|
|
5170
5072
|
*/
|
|
5171
|
-
|
|
5073
|
+
billingGroupName: string;
|
|
5172
5074
|
|
|
5173
5075
|
/**
|
|
5174
|
-
*
|
|
5175
|
-
*
|
|
5176
|
-
* @generated from field: string item_query = 4;
|
|
5076
|
+
* @generated from field: string vendor = 5;
|
|
5177
5077
|
*/
|
|
5178
|
-
|
|
5078
|
+
vendor: string;
|
|
5179
5079
|
|
|
5180
5080
|
/**
|
|
5181
|
-
*
|
|
5182
|
-
*
|
|
5183
|
-
* @generated from field: string source = 5;
|
|
5081
|
+
* @generated from field: string item_name = 6;
|
|
5184
5082
|
*/
|
|
5185
|
-
|
|
5083
|
+
itemName: string;
|
|
5186
5084
|
|
|
5187
5085
|
/**
|
|
5188
|
-
*
|
|
5189
|
-
*
|
|
5190
|
-
* @generated from field: string updated_by = 6;
|
|
5086
|
+
* @generated from field: uint32 quantity = 7;
|
|
5191
5087
|
*/
|
|
5192
|
-
|
|
5088
|
+
quantity: number;
|
|
5193
5089
|
|
|
5194
5090
|
/**
|
|
5195
|
-
*
|
|
5196
|
-
*
|
|
5197
|
-
* @generated from field: string updated_after = 7;
|
|
5091
|
+
* @generated from field: int64 unit_cost = 8;
|
|
5198
5092
|
*/
|
|
5199
|
-
|
|
5093
|
+
unitCost: bigint;
|
|
5200
5094
|
|
|
5201
5095
|
/**
|
|
5202
|
-
*
|
|
5203
|
-
*
|
|
5204
|
-
* @generated from field: string updated_before = 8;
|
|
5096
|
+
* @generated from field: int64 amount = 9;
|
|
5205
5097
|
*/
|
|
5206
|
-
|
|
5098
|
+
amount: bigint;
|
|
5099
|
+
|
|
5100
|
+
/**
|
|
5101
|
+
* @generated from field: bool enabled = 10;
|
|
5102
|
+
*/
|
|
5103
|
+
enabled: boolean;
|
|
5207
5104
|
|
|
5208
5105
|
/**
|
|
5209
|
-
*
|
|
5106
|
+
* One of "saved", "created", or "default".
|
|
5210
5107
|
*
|
|
5211
|
-
* @generated from field: string
|
|
5108
|
+
* @generated from field: string source = 11;
|
|
5212
5109
|
*/
|
|
5213
|
-
|
|
5110
|
+
source: string;
|
|
5214
5111
|
};
|
|
5215
5112
|
|
|
5216
5113
|
/**
|
|
5217
|
-
* Describes the message blueapi.billing.v1.
|
|
5218
|
-
* Use `create(
|
|
5114
|
+
* Describes the message blueapi.billing.v1.MonthlyMiscFee.
|
|
5115
|
+
* Use `create(MonthlyMiscFeeSchema)` to create a new message.
|
|
5219
5116
|
*/
|
|
5220
|
-
export const
|
|
5221
|
-
messageDesc(file_billing_v1_billing,
|
|
5117
|
+
export const MonthlyMiscFeeSchema: GenMessage<MonthlyMiscFee> = /*@__PURE__*/
|
|
5118
|
+
messageDesc(file_billing_v1_billing, 132);
|
|
5222
5119
|
|
|
5223
5120
|
/**
|
|
5224
|
-
*
|
|
5121
|
+
* No singular billing_month field: a result can now span multiple billing months. See
|
|
5122
|
+
* billing_months below.
|
|
5123
|
+
*
|
|
5124
|
+
* @generated from message blueapi.billing.v1.MonthlyMiscFeeImportResult
|
|
5225
5125
|
*/
|
|
5226
|
-
export type
|
|
5126
|
+
export type MonthlyMiscFeeImportResult = Message<"blueapi.billing.v1.MonthlyMiscFeeImportResult"> & {
|
|
5227
5127
|
/**
|
|
5228
|
-
*
|
|
5229
|
-
*
|
|
5230
|
-
* @generated from field: bytes csv_content = 1;
|
|
5128
|
+
* @generated from field: string status = 1;
|
|
5231
5129
|
*/
|
|
5232
|
-
|
|
5130
|
+
status: string;
|
|
5233
5131
|
|
|
5234
5132
|
/**
|
|
5235
|
-
*
|
|
5236
|
-
*
|
|
5237
|
-
* @generated from field: string export_ref = 2;
|
|
5133
|
+
* @generated from field: string file_name = 2;
|
|
5238
5134
|
*/
|
|
5239
|
-
|
|
5135
|
+
fileName: string;
|
|
5240
5136
|
|
|
5241
5137
|
/**
|
|
5242
|
-
*
|
|
5243
|
-
*
|
|
5244
|
-
* @generated from field: string file_name = 3;
|
|
5138
|
+
* @generated from field: int32 total_rows = 3;
|
|
5245
5139
|
*/
|
|
5246
|
-
|
|
5247
|
-
};
|
|
5140
|
+
totalRows: number;
|
|
5248
5141
|
|
|
5249
|
-
/**
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
export const ExportMonthlyMiscFeesResponseSchema: GenMessage<ExportMonthlyMiscFeesResponse> = /*@__PURE__*/
|
|
5254
|
-
messageDesc(file_billing_v1_billing, 134);
|
|
5142
|
+
/**
|
|
5143
|
+
* @generated from field: int32 valid_rows = 4;
|
|
5144
|
+
*/
|
|
5145
|
+
validRows: number;
|
|
5255
5146
|
|
|
5256
|
-
/**
|
|
5257
|
-
* @generated from message blueapi.billing.v1.GetMonthlyMiscFeeImportRequest
|
|
5258
|
-
*/
|
|
5259
|
-
export type GetMonthlyMiscFeeImportRequest = Message<"blueapi.billing.v1.GetMonthlyMiscFeeImportRequest"> & {
|
|
5260
5147
|
/**
|
|
5261
|
-
*
|
|
5262
|
-
*
|
|
5263
|
-
* @generated from field: string import_job_id = 1;
|
|
5148
|
+
* @generated from field: int32 inserted_rows = 5;
|
|
5264
5149
|
*/
|
|
5265
|
-
|
|
5266
|
-
};
|
|
5150
|
+
insertedRows: number;
|
|
5267
5151
|
|
|
5268
|
-
/**
|
|
5269
|
-
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
|
|
5152
|
+
/**
|
|
5153
|
+
* @generated from field: int32 updated_rows = 6;
|
|
5154
|
+
*/
|
|
5155
|
+
updatedRows: number;
|
|
5156
|
+
|
|
5157
|
+
/**
|
|
5158
|
+
* @generated from field: int32 unchanged_rows = 7;
|
|
5159
|
+
*/
|
|
5160
|
+
unchangedRows: number;
|
|
5161
|
+
|
|
5162
|
+
/**
|
|
5163
|
+
* @generated from field: int32 failed_rows = 8;
|
|
5164
|
+
*/
|
|
5165
|
+
failedRows: number;
|
|
5166
|
+
|
|
5167
|
+
/**
|
|
5168
|
+
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeImportRowResult row_results = 9;
|
|
5169
|
+
*/
|
|
5170
|
+
rowResults: MonthlyMiscFeeImportRowResult[];
|
|
5274
5171
|
|
|
5275
|
-
/**
|
|
5276
|
-
* @generated from message blueapi.billing.v1.UpsertMonthlyMiscFeeRequest
|
|
5277
|
-
*/
|
|
5278
|
-
export type UpsertMonthlyMiscFeeRequest = Message<"blueapi.billing.v1.UpsertMonthlyMiscFeeRequest"> & {
|
|
5279
5172
|
/**
|
|
5280
|
-
*
|
|
5173
|
+
* Existing items removed because a "replace"-mode CSV omitted them from a combination it
|
|
5174
|
+
* touched. Always 0 in "merge" mode.
|
|
5281
5175
|
*
|
|
5282
|
-
* @generated from field:
|
|
5176
|
+
* @generated from field: int32 removed_rows = 10;
|
|
5283
5177
|
*/
|
|
5284
|
-
|
|
5178
|
+
removedRows: number;
|
|
5179
|
+
|
|
5180
|
+
/**
|
|
5181
|
+
* Every distinct billing month, in "YYYY-MM" form, a valid row in this file touches.
|
|
5182
|
+
*
|
|
5183
|
+
* @generated from field: repeated string billing_months = 11;
|
|
5184
|
+
*/
|
|
5185
|
+
billingMonths: string[];
|
|
5285
5186
|
|
|
5286
5187
|
/**
|
|
5287
|
-
*
|
|
5188
|
+
* Every distinct vendor a valid row in this file touches.
|
|
5288
5189
|
*
|
|
5289
|
-
* @generated from field:
|
|
5190
|
+
* @generated from field: repeated string vendors = 12;
|
|
5290
5191
|
*/
|
|
5291
|
-
|
|
5192
|
+
vendors: string[];
|
|
5292
5193
|
|
|
5293
5194
|
/**
|
|
5294
|
-
*
|
|
5195
|
+
* Every distinct billing group a valid row in this file touches.
|
|
5295
5196
|
*
|
|
5296
|
-
* @generated from field:
|
|
5197
|
+
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeImportGroupSummary billing_groups = 13;
|
|
5297
5198
|
*/
|
|
5298
|
-
|
|
5199
|
+
billingGroups: MonthlyMiscFeeImportGroupSummary[];
|
|
5299
5200
|
};
|
|
5300
5201
|
|
|
5301
5202
|
/**
|
|
5302
|
-
* Describes the message blueapi.billing.v1.
|
|
5303
|
-
* Use `create(
|
|
5203
|
+
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportResult.
|
|
5204
|
+
* Use `create(MonthlyMiscFeeImportResultSchema)` to create a new message.
|
|
5304
5205
|
*/
|
|
5305
|
-
export const
|
|
5306
|
-
messageDesc(file_billing_v1_billing,
|
|
5206
|
+
export const MonthlyMiscFeeImportResultSchema: GenMessage<MonthlyMiscFeeImportResult> = /*@__PURE__*/
|
|
5207
|
+
messageDesc(file_billing_v1_billing, 133);
|
|
5307
5208
|
|
|
5308
5209
|
/**
|
|
5309
|
-
* @generated from message blueapi.billing.v1.
|
|
5210
|
+
* @generated from message blueapi.billing.v1.MonthlyMiscFeeImportGroupSummary
|
|
5310
5211
|
*/
|
|
5311
|
-
export type
|
|
5212
|
+
export type MonthlyMiscFeeImportGroupSummary = Message<"blueapi.billing.v1.MonthlyMiscFeeImportGroupSummary"> & {
|
|
5312
5213
|
/**
|
|
5313
|
-
*
|
|
5314
|
-
*
|
|
5315
|
-
* @generated from field: string row_id = 1;
|
|
5214
|
+
* @generated from field: string billing_group_id = 1;
|
|
5316
5215
|
*/
|
|
5317
|
-
|
|
5216
|
+
billingGroupId: string;
|
|
5318
5217
|
|
|
5319
5218
|
/**
|
|
5320
|
-
*
|
|
5321
|
-
*
|
|
5322
|
-
* @generated from field: string billing_month = 2;
|
|
5219
|
+
* @generated from field: string billing_group_name = 2;
|
|
5323
5220
|
*/
|
|
5324
|
-
|
|
5221
|
+
billingGroupName: string;
|
|
5325
5222
|
};
|
|
5326
5223
|
|
|
5327
5224
|
/**
|
|
5328
|
-
* Describes the message blueapi.billing.v1.
|
|
5329
|
-
* Use `create(
|
|
5225
|
+
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportGroupSummary.
|
|
5226
|
+
* Use `create(MonthlyMiscFeeImportGroupSummarySchema)` to create a new message.
|
|
5330
5227
|
*/
|
|
5331
|
-
export const
|
|
5332
|
-
messageDesc(file_billing_v1_billing,
|
|
5228
|
+
export const MonthlyMiscFeeImportGroupSummarySchema: GenMessage<MonthlyMiscFeeImportGroupSummary> = /*@__PURE__*/
|
|
5229
|
+
messageDesc(file_billing_v1_billing, 134);
|
|
5333
5230
|
|
|
5334
5231
|
/**
|
|
5335
|
-
* @generated from message blueapi.billing.v1.
|
|
5232
|
+
* @generated from message blueapi.billing.v1.MonthlyMiscFeeImportRowResult
|
|
5336
5233
|
*/
|
|
5337
|
-
export type
|
|
5234
|
+
export type MonthlyMiscFeeImportRowResult = Message<"blueapi.billing.v1.MonthlyMiscFeeImportRowResult"> & {
|
|
5338
5235
|
/**
|
|
5339
|
-
*
|
|
5236
|
+
* The 1-based CSV row this result corresponds to. 0 when action is "remove", since a
|
|
5237
|
+
* removal has no corresponding CSV row.
|
|
5238
|
+
*
|
|
5239
|
+
* @generated from field: int32 csv_row_number = 1;
|
|
5340
5240
|
*/
|
|
5341
|
-
|
|
5241
|
+
csvRowNumber: number;
|
|
5342
5242
|
|
|
5343
5243
|
/**
|
|
5344
|
-
*
|
|
5244
|
+
* One of "insert", "update", "unchanged", "invalid", or "remove". "remove" only appears in
|
|
5245
|
+
* "replace" mode, for an existing item the CSV silently drops from a combination it
|
|
5246
|
+
* otherwise touches.
|
|
5247
|
+
*
|
|
5248
|
+
* @generated from field: string action = 2;
|
|
5345
5249
|
*/
|
|
5346
|
-
|
|
5250
|
+
action: string;
|
|
5347
5251
|
|
|
5348
5252
|
/**
|
|
5349
5253
|
* @generated from field: string billing_group_id = 3;
|
|
@@ -5356,311 +5260,93 @@ export type MonthlyMiscFee = Message<"blueapi.billing.v1.MonthlyMiscFee"> & {
|
|
|
5356
5260
|
billingGroupName: string;
|
|
5357
5261
|
|
|
5358
5262
|
/**
|
|
5359
|
-
* @generated from field: string
|
|
5263
|
+
* @generated from field: string vendor = 5;
|
|
5264
|
+
*/
|
|
5265
|
+
vendor: string;
|
|
5266
|
+
|
|
5267
|
+
/**
|
|
5268
|
+
* @generated from field: string item_name = 6;
|
|
5360
5269
|
*/
|
|
5361
5270
|
itemName: string;
|
|
5362
5271
|
|
|
5363
5272
|
/**
|
|
5364
|
-
* @generated from field:
|
|
5273
|
+
* @generated from field: uint32 quantity = 7;
|
|
5365
5274
|
*/
|
|
5366
|
-
quantity:
|
|
5275
|
+
quantity: number;
|
|
5367
5276
|
|
|
5368
5277
|
/**
|
|
5369
|
-
* @generated from field:
|
|
5278
|
+
* @generated from field: int64 unit_cost = 8;
|
|
5370
5279
|
*/
|
|
5371
|
-
unitCost:
|
|
5280
|
+
unitCost: bigint;
|
|
5372
5281
|
|
|
5373
5282
|
/**
|
|
5374
|
-
* @generated from field:
|
|
5283
|
+
* @generated from field: int64 amount = 9;
|
|
5375
5284
|
*/
|
|
5376
|
-
amount:
|
|
5285
|
+
amount: bigint;
|
|
5377
5286
|
|
|
5378
5287
|
/**
|
|
5379
|
-
* @generated from field:
|
|
5288
|
+
* @generated from field: bool enabled = 10;
|
|
5380
5289
|
*/
|
|
5381
|
-
|
|
5290
|
+
enabled: boolean;
|
|
5382
5291
|
|
|
5383
5292
|
/**
|
|
5384
|
-
* @generated from field:
|
|
5293
|
+
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeValidationError validation_errors = 11;
|
|
5385
5294
|
*/
|
|
5386
|
-
|
|
5295
|
+
validationErrors: MonthlyMiscFeeValidationError[];
|
|
5387
5296
|
|
|
5388
5297
|
/**
|
|
5389
|
-
*
|
|
5298
|
+
* The row's own billing month in "YYYY-MM" form. Always populated, including for "remove"
|
|
5299
|
+
* results, since a request can span multiple months.
|
|
5300
|
+
*
|
|
5301
|
+
* @generated from field: string billing_month = 12;
|
|
5390
5302
|
*/
|
|
5391
|
-
|
|
5303
|
+
billingMonth: string;
|
|
5304
|
+
};
|
|
5305
|
+
|
|
5306
|
+
/**
|
|
5307
|
+
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportRowResult.
|
|
5308
|
+
* Use `create(MonthlyMiscFeeImportRowResultSchema)` to create a new message.
|
|
5309
|
+
*/
|
|
5310
|
+
export const MonthlyMiscFeeImportRowResultSchema: GenMessage<MonthlyMiscFeeImportRowResult> = /*@__PURE__*/
|
|
5311
|
+
messageDesc(file_billing_v1_billing, 135);
|
|
5392
5312
|
|
|
5313
|
+
/**
|
|
5314
|
+
* @generated from message blueapi.billing.v1.MonthlyMiscFeeValidationError
|
|
5315
|
+
*/
|
|
5316
|
+
export type MonthlyMiscFeeValidationError = Message<"blueapi.billing.v1.MonthlyMiscFeeValidationError"> & {
|
|
5393
5317
|
/**
|
|
5394
|
-
* @generated from field: string
|
|
5318
|
+
* @generated from field: string field = 1;
|
|
5395
5319
|
*/
|
|
5396
|
-
|
|
5320
|
+
field: string;
|
|
5397
5321
|
|
|
5398
5322
|
/**
|
|
5399
|
-
* @generated from field: string
|
|
5323
|
+
* @generated from field: string code = 2;
|
|
5400
5324
|
*/
|
|
5401
|
-
|
|
5325
|
+
code: string;
|
|
5402
5326
|
|
|
5403
5327
|
/**
|
|
5404
|
-
* @generated from field: string
|
|
5328
|
+
* @generated from field: string message = 3;
|
|
5405
5329
|
*/
|
|
5406
|
-
|
|
5330
|
+
message: string;
|
|
5407
5331
|
};
|
|
5408
5332
|
|
|
5409
5333
|
/**
|
|
5410
|
-
* Describes the message blueapi.billing.v1.
|
|
5411
|
-
* Use `create(
|
|
5334
|
+
* Describes the message blueapi.billing.v1.MonthlyMiscFeeValidationError.
|
|
5335
|
+
* Use `create(MonthlyMiscFeeValidationErrorSchema)` to create a new message.
|
|
5412
5336
|
*/
|
|
5413
|
-
export const
|
|
5414
|
-
messageDesc(file_billing_v1_billing,
|
|
5337
|
+
export const MonthlyMiscFeeValidationErrorSchema: GenMessage<MonthlyMiscFeeValidationError> = /*@__PURE__*/
|
|
5338
|
+
messageDesc(file_billing_v1_billing, 136);
|
|
5415
5339
|
|
|
5416
5340
|
/**
|
|
5417
|
-
*
|
|
5341
|
+
* BillingGroup tags adding setting
|
|
5342
|
+
*
|
|
5343
|
+
* @generated from message blueapi.billing.v1.UpdateTagsAddingSettingRequest
|
|
5418
5344
|
*/
|
|
5419
|
-
export type
|
|
5345
|
+
export type UpdateTagsAddingSettingRequest = Message<"blueapi.billing.v1.UpdateTagsAddingSettingRequest"> & {
|
|
5420
5346
|
/**
|
|
5421
|
-
* @generated from field: string
|
|
5347
|
+
* @generated from field: string vendor = 1;
|
|
5422
5348
|
*/
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
/**
|
|
5426
|
-
* @generated from field: string status = 2;
|
|
5427
|
-
*/
|
|
5428
|
-
status: string;
|
|
5429
|
-
|
|
5430
|
-
/**
|
|
5431
|
-
* @generated from field: string mode = 3;
|
|
5432
|
-
*/
|
|
5433
|
-
mode: string;
|
|
5434
|
-
|
|
5435
|
-
/**
|
|
5436
|
-
* @generated from field: string billing_month = 4;
|
|
5437
|
-
*/
|
|
5438
|
-
billingMonth: string;
|
|
5439
|
-
|
|
5440
|
-
/**
|
|
5441
|
-
* @generated from field: string file_name = 5;
|
|
5442
|
-
*/
|
|
5443
|
-
fileName: string;
|
|
5444
|
-
|
|
5445
|
-
/**
|
|
5446
|
-
* @generated from field: string file_hash = 6;
|
|
5447
|
-
*/
|
|
5448
|
-
fileHash: string;
|
|
5449
|
-
|
|
5450
|
-
/**
|
|
5451
|
-
* @generated from field: int32 total_rows = 7;
|
|
5452
|
-
*/
|
|
5453
|
-
totalRows: number;
|
|
5454
|
-
|
|
5455
|
-
/**
|
|
5456
|
-
* @generated from field: int32 valid_rows = 8;
|
|
5457
|
-
*/
|
|
5458
|
-
validRows: number;
|
|
5459
|
-
|
|
5460
|
-
/**
|
|
5461
|
-
* @generated from field: int32 inserted_rows = 9;
|
|
5462
|
-
*/
|
|
5463
|
-
insertedRows: number;
|
|
5464
|
-
|
|
5465
|
-
/**
|
|
5466
|
-
* @generated from field: int32 updated_rows = 10;
|
|
5467
|
-
*/
|
|
5468
|
-
updatedRows: number;
|
|
5469
|
-
|
|
5470
|
-
/**
|
|
5471
|
-
* @generated from field: int32 unchanged_rows = 11;
|
|
5472
|
-
*/
|
|
5473
|
-
unchangedRows: number;
|
|
5474
|
-
|
|
5475
|
-
/**
|
|
5476
|
-
* @generated from field: int32 deleted_rows = 12;
|
|
5477
|
-
*/
|
|
5478
|
-
deletedRows: number;
|
|
5479
|
-
|
|
5480
|
-
/**
|
|
5481
|
-
* @generated from field: int32 failed_rows = 13;
|
|
5482
|
-
*/
|
|
5483
|
-
failedRows: number;
|
|
5484
|
-
|
|
5485
|
-
/**
|
|
5486
|
-
* @generated from field: int32 replace_month_existing_rows = 14;
|
|
5487
|
-
*/
|
|
5488
|
-
replaceMonthExistingRows: number;
|
|
5489
|
-
|
|
5490
|
-
/**
|
|
5491
|
-
* @generated from field: string export_ref = 15;
|
|
5492
|
-
*/
|
|
5493
|
-
exportRef: string;
|
|
5494
|
-
|
|
5495
|
-
/**
|
|
5496
|
-
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeImportRowResult row_results = 16;
|
|
5497
|
-
*/
|
|
5498
|
-
rowResults: MonthlyMiscFeeImportRowResult[];
|
|
5499
|
-
|
|
5500
|
-
/**
|
|
5501
|
-
* @generated from field: string created_by = 17;
|
|
5502
|
-
*/
|
|
5503
|
-
createdBy: string;
|
|
5504
|
-
|
|
5505
|
-
/**
|
|
5506
|
-
* @generated from field: string created_at = 18;
|
|
5507
|
-
*/
|
|
5508
|
-
createdAt: string;
|
|
5509
|
-
|
|
5510
|
-
/**
|
|
5511
|
-
* @generated from field: string updated_at = 19;
|
|
5512
|
-
*/
|
|
5513
|
-
updatedAt: string;
|
|
5514
|
-
};
|
|
5515
|
-
|
|
5516
|
-
/**
|
|
5517
|
-
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportResult.
|
|
5518
|
-
* Use `create(MonthlyMiscFeeImportResultSchema)` to create a new message.
|
|
5519
|
-
*/
|
|
5520
|
-
export const MonthlyMiscFeeImportResultSchema: GenMessage<MonthlyMiscFeeImportResult> = /*@__PURE__*/
|
|
5521
|
-
messageDesc(file_billing_v1_billing, 139);
|
|
5522
|
-
|
|
5523
|
-
/**
|
|
5524
|
-
* @generated from message blueapi.billing.v1.MonthlyMiscFeeImportRowResult
|
|
5525
|
-
*/
|
|
5526
|
-
export type MonthlyMiscFeeImportRowResult = Message<"blueapi.billing.v1.MonthlyMiscFeeImportRowResult"> & {
|
|
5527
|
-
/**
|
|
5528
|
-
* @generated from field: int32 csv_row_number = 1;
|
|
5529
|
-
*/
|
|
5530
|
-
csvRowNumber: number;
|
|
5531
|
-
|
|
5532
|
-
/**
|
|
5533
|
-
* @generated from field: string action = 2;
|
|
5534
|
-
*/
|
|
5535
|
-
action: string;
|
|
5536
|
-
|
|
5537
|
-
/**
|
|
5538
|
-
* @generated from field: string row_id = 3;
|
|
5539
|
-
*/
|
|
5540
|
-
rowId: string;
|
|
5541
|
-
|
|
5542
|
-
/**
|
|
5543
|
-
* @generated from field: string billing_month = 4;
|
|
5544
|
-
*/
|
|
5545
|
-
billingMonth: string;
|
|
5546
|
-
|
|
5547
|
-
/**
|
|
5548
|
-
* @generated from field: string billing_group_id = 5;
|
|
5549
|
-
*/
|
|
5550
|
-
billingGroupId: string;
|
|
5551
|
-
|
|
5552
|
-
/**
|
|
5553
|
-
* @generated from field: string billing_group_name = 6;
|
|
5554
|
-
*/
|
|
5555
|
-
billingGroupName: string;
|
|
5556
|
-
|
|
5557
|
-
/**
|
|
5558
|
-
* @generated from field: string item_name = 7;
|
|
5559
|
-
*/
|
|
5560
|
-
itemName: string;
|
|
5561
|
-
|
|
5562
|
-
/**
|
|
5563
|
-
* @generated from field: string quantity = 8;
|
|
5564
|
-
*/
|
|
5565
|
-
quantity: string;
|
|
5566
|
-
|
|
5567
|
-
/**
|
|
5568
|
-
* @generated from field: string unit_cost = 9;
|
|
5569
|
-
*/
|
|
5570
|
-
unitCost: string;
|
|
5571
|
-
|
|
5572
|
-
/**
|
|
5573
|
-
* @generated from field: string amount = 10;
|
|
5574
|
-
*/
|
|
5575
|
-
amount: string;
|
|
5576
|
-
|
|
5577
|
-
/**
|
|
5578
|
-
* @generated from field: blueapi.billing.v1.MonthlyMiscFeeImportPreviousValue previous_value = 11;
|
|
5579
|
-
*/
|
|
5580
|
-
previousValue?: MonthlyMiscFeeImportPreviousValue;
|
|
5581
|
-
|
|
5582
|
-
/**
|
|
5583
|
-
* @generated from field: repeated blueapi.billing.v1.MonthlyMiscFeeValidationError validation_errors = 12;
|
|
5584
|
-
*/
|
|
5585
|
-
validationErrors: MonthlyMiscFeeValidationError[];
|
|
5586
|
-
|
|
5587
|
-
/**
|
|
5588
|
-
* @generated from field: string note = 13;
|
|
5589
|
-
*/
|
|
5590
|
-
note: string;
|
|
5591
|
-
};
|
|
5592
|
-
|
|
5593
|
-
/**
|
|
5594
|
-
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportRowResult.
|
|
5595
|
-
* Use `create(MonthlyMiscFeeImportRowResultSchema)` to create a new message.
|
|
5596
|
-
*/
|
|
5597
|
-
export const MonthlyMiscFeeImportRowResultSchema: GenMessage<MonthlyMiscFeeImportRowResult> = /*@__PURE__*/
|
|
5598
|
-
messageDesc(file_billing_v1_billing, 140);
|
|
5599
|
-
|
|
5600
|
-
/**
|
|
5601
|
-
* @generated from message blueapi.billing.v1.MonthlyMiscFeeImportPreviousValue
|
|
5602
|
-
*/
|
|
5603
|
-
export type MonthlyMiscFeeImportPreviousValue = Message<"blueapi.billing.v1.MonthlyMiscFeeImportPreviousValue"> & {
|
|
5604
|
-
/**
|
|
5605
|
-
* @generated from field: string quantity = 1;
|
|
5606
|
-
*/
|
|
5607
|
-
quantity: string;
|
|
5608
|
-
|
|
5609
|
-
/**
|
|
5610
|
-
* @generated from field: string unit_cost = 2;
|
|
5611
|
-
*/
|
|
5612
|
-
unitCost: string;
|
|
5613
|
-
|
|
5614
|
-
/**
|
|
5615
|
-
* @generated from field: string amount = 3;
|
|
5616
|
-
*/
|
|
5617
|
-
amount: string;
|
|
5618
|
-
};
|
|
5619
|
-
|
|
5620
|
-
/**
|
|
5621
|
-
* Describes the message blueapi.billing.v1.MonthlyMiscFeeImportPreviousValue.
|
|
5622
|
-
* Use `create(MonthlyMiscFeeImportPreviousValueSchema)` to create a new message.
|
|
5623
|
-
*/
|
|
5624
|
-
export const MonthlyMiscFeeImportPreviousValueSchema: GenMessage<MonthlyMiscFeeImportPreviousValue> = /*@__PURE__*/
|
|
5625
|
-
messageDesc(file_billing_v1_billing, 141);
|
|
5626
|
-
|
|
5627
|
-
/**
|
|
5628
|
-
* @generated from message blueapi.billing.v1.MonthlyMiscFeeValidationError
|
|
5629
|
-
*/
|
|
5630
|
-
export type MonthlyMiscFeeValidationError = Message<"blueapi.billing.v1.MonthlyMiscFeeValidationError"> & {
|
|
5631
|
-
/**
|
|
5632
|
-
* @generated from field: string field = 1;
|
|
5633
|
-
*/
|
|
5634
|
-
field: string;
|
|
5635
|
-
|
|
5636
|
-
/**
|
|
5637
|
-
* @generated from field: string code = 2;
|
|
5638
|
-
*/
|
|
5639
|
-
code: string;
|
|
5640
|
-
|
|
5641
|
-
/**
|
|
5642
|
-
* @generated from field: string message = 3;
|
|
5643
|
-
*/
|
|
5644
|
-
message: string;
|
|
5645
|
-
};
|
|
5646
|
-
|
|
5647
|
-
/**
|
|
5648
|
-
* Describes the message blueapi.billing.v1.MonthlyMiscFeeValidationError.
|
|
5649
|
-
* Use `create(MonthlyMiscFeeValidationErrorSchema)` to create a new message.
|
|
5650
|
-
*/
|
|
5651
|
-
export const MonthlyMiscFeeValidationErrorSchema: GenMessage<MonthlyMiscFeeValidationError> = /*@__PURE__*/
|
|
5652
|
-
messageDesc(file_billing_v1_billing, 142);
|
|
5653
|
-
|
|
5654
|
-
/**
|
|
5655
|
-
* BillingGroup tags adding setting
|
|
5656
|
-
*
|
|
5657
|
-
* @generated from message blueapi.billing.v1.UpdateTagsAddingSettingRequest
|
|
5658
|
-
*/
|
|
5659
|
-
export type UpdateTagsAddingSettingRequest = Message<"blueapi.billing.v1.UpdateTagsAddingSettingRequest"> & {
|
|
5660
|
-
/**
|
|
5661
|
-
* @generated from field: string vendor = 1;
|
|
5662
|
-
*/
|
|
5663
|
-
vendor: string;
|
|
5349
|
+
vendor: string;
|
|
5664
5350
|
|
|
5665
5351
|
/**
|
|
5666
5352
|
* @generated from field: string groupId = 2;
|
|
@@ -5678,7 +5364,7 @@ export type UpdateTagsAddingSettingRequest = Message<"blueapi.billing.v1.UpdateT
|
|
|
5678
5364
|
* Use `create(UpdateTagsAddingSettingRequestSchema)` to create a new message.
|
|
5679
5365
|
*/
|
|
5680
5366
|
export const UpdateTagsAddingSettingRequestSchema: GenMessage<UpdateTagsAddingSettingRequest> = /*@__PURE__*/
|
|
5681
|
-
messageDesc(file_billing_v1_billing,
|
|
5367
|
+
messageDesc(file_billing_v1_billing, 137);
|
|
5682
5368
|
|
|
5683
5369
|
/**
|
|
5684
5370
|
* @generated from message blueapi.billing.v1.GetTagsAddingSettingRequest
|
|
@@ -5700,7 +5386,7 @@ export type GetTagsAddingSettingRequest = Message<"blueapi.billing.v1.GetTagsAdd
|
|
|
5700
5386
|
* Use `create(GetTagsAddingSettingRequestSchema)` to create a new message.
|
|
5701
5387
|
*/
|
|
5702
5388
|
export const GetTagsAddingSettingRequestSchema: GenMessage<GetTagsAddingSettingRequest> = /*@__PURE__*/
|
|
5703
|
-
messageDesc(file_billing_v1_billing,
|
|
5389
|
+
messageDesc(file_billing_v1_billing, 138);
|
|
5704
5390
|
|
|
5705
5391
|
/**
|
|
5706
5392
|
* @generated from message blueapi.billing.v1.TagsAddingSetting
|
|
@@ -5727,7 +5413,7 @@ export type TagsAddingSetting = Message<"blueapi.billing.v1.TagsAddingSetting">
|
|
|
5727
5413
|
* Use `create(TagsAddingSettingSchema)` to create a new message.
|
|
5728
5414
|
*/
|
|
5729
5415
|
export const TagsAddingSettingSchema: GenMessage<TagsAddingSetting> = /*@__PURE__*/
|
|
5730
|
-
messageDesc(file_billing_v1_billing,
|
|
5416
|
+
messageDesc(file_billing_v1_billing, 139);
|
|
5731
5417
|
|
|
5732
5418
|
/**
|
|
5733
5419
|
* Request message for the ExportServiceDiscounts rpc.
|
|
@@ -5759,7 +5445,7 @@ export type ExportServiceDiscountsRequest = Message<"blueapi.billing.v1.ExportSe
|
|
|
5759
5445
|
* Use `create(ExportServiceDiscountsRequestSchema)` to create a new message.
|
|
5760
5446
|
*/
|
|
5761
5447
|
export const ExportServiceDiscountsRequestSchema: GenMessage<ExportServiceDiscountsRequest> = /*@__PURE__*/
|
|
5762
|
-
messageDesc(file_billing_v1_billing,
|
|
5448
|
+
messageDesc(file_billing_v1_billing, 140);
|
|
5763
5449
|
|
|
5764
5450
|
/**
|
|
5765
5451
|
* Request message for the ExportAccountInvoiceServiceDiscounts rpc.
|
|
@@ -5798,7 +5484,7 @@ export type ExportAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billi
|
|
|
5798
5484
|
* Use `create(ExportAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
5799
5485
|
*/
|
|
5800
5486
|
export const ExportAccountInvoiceServiceDiscountsRequestSchema: GenMessage<ExportAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
5801
|
-
messageDesc(file_billing_v1_billing,
|
|
5487
|
+
messageDesc(file_billing_v1_billing, 141);
|
|
5802
5488
|
|
|
5803
5489
|
/**
|
|
5804
5490
|
* Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.
|
|
@@ -5837,7 +5523,7 @@ export type ExportBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.
|
|
|
5837
5523
|
* Use `create(ExportBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
5838
5524
|
*/
|
|
5839
5525
|
export const ExportBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<ExportBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
5840
|
-
messageDesc(file_billing_v1_billing,
|
|
5526
|
+
messageDesc(file_billing_v1_billing, 142);
|
|
5841
5527
|
|
|
5842
5528
|
/**
|
|
5843
5529
|
* Request message for the ExportBillingGroupCsv rpc.
|
|
@@ -5861,7 +5547,7 @@ export type ExportBillingGroupCsvRequest = Message<"blueapi.billing.v1.ExportBil
|
|
|
5861
5547
|
* Use `create(ExportBillingGroupCsvRequestSchema)` to create a new message.
|
|
5862
5548
|
*/
|
|
5863
5549
|
export const ExportBillingGroupCsvRequestSchema: GenMessage<ExportBillingGroupCsvRequest> = /*@__PURE__*/
|
|
5864
|
-
messageDesc(file_billing_v1_billing,
|
|
5550
|
+
messageDesc(file_billing_v1_billing, 143);
|
|
5865
5551
|
|
|
5866
5552
|
/**
|
|
5867
5553
|
* Response message for the ExportBillingGroupCsv rpc.
|
|
@@ -5883,7 +5569,7 @@ export type ExportBillingGroupCsvResponse = Message<"blueapi.billing.v1.ExportBi
|
|
|
5883
5569
|
* Use `create(ExportBillingGroupCsvResponseSchema)` to create a new message.
|
|
5884
5570
|
*/
|
|
5885
5571
|
export const ExportBillingGroupCsvResponseSchema: GenMessage<ExportBillingGroupCsvResponse> = /*@__PURE__*/
|
|
5886
|
-
messageDesc(file_billing_v1_billing,
|
|
5572
|
+
messageDesc(file_billing_v1_billing, 144);
|
|
5887
5573
|
|
|
5888
5574
|
/**
|
|
5889
5575
|
* port from m/ripple/exportcsv/billing-group-setting
|
|
@@ -5913,7 +5599,7 @@ export type ExportInvoiceSettingCsvRequest = Message<"blueapi.billing.v1.ExportI
|
|
|
5913
5599
|
* Use `create(ExportInvoiceSettingCsvRequestSchema)` to create a new message.
|
|
5914
5600
|
*/
|
|
5915
5601
|
export const ExportInvoiceSettingCsvRequestSchema: GenMessage<ExportInvoiceSettingCsvRequest> = /*@__PURE__*/
|
|
5916
|
-
messageDesc(file_billing_v1_billing,
|
|
5602
|
+
messageDesc(file_billing_v1_billing, 145);
|
|
5917
5603
|
|
|
5918
5604
|
/**
|
|
5919
5605
|
* Response message for the ExportBillingGroupCsv rpc.
|
|
@@ -5935,7 +5621,7 @@ export type ExportInvoiceSettingCsvResponse = Message<"blueapi.billing.v1.Export
|
|
|
5935
5621
|
* Use `create(ExportInvoiceSettingCsvResponseSchema)` to create a new message.
|
|
5936
5622
|
*/
|
|
5937
5623
|
export const ExportInvoiceSettingCsvResponseSchema: GenMessage<ExportInvoiceSettingCsvResponse> = /*@__PURE__*/
|
|
5938
|
-
messageDesc(file_billing_v1_billing,
|
|
5624
|
+
messageDesc(file_billing_v1_billing, 146);
|
|
5939
5625
|
|
|
5940
5626
|
/**
|
|
5941
5627
|
* @generated from message blueapi.billing.v1.GetBillingGroupInvoiceServiceDiscountsRequest
|
|
@@ -5952,7 +5638,7 @@ export type GetBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.bil
|
|
|
5952
5638
|
* Use `create(GetBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
5953
5639
|
*/
|
|
5954
5640
|
export const GetBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<GetBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
5955
|
-
messageDesc(file_billing_v1_billing,
|
|
5641
|
+
messageDesc(file_billing_v1_billing, 147);
|
|
5956
5642
|
|
|
5957
5643
|
/**
|
|
5958
5644
|
* @generated from message blueapi.billing.v1.GetBillingGroupInvoiceServiceDiscountsResponse
|
|
@@ -5971,7 +5657,7 @@ export type GetBillingGroupInvoiceServiceDiscountsResponse = Message<"blueapi.bi
|
|
|
5971
5657
|
* Use `create(GetBillingGroupInvoiceServiceDiscountsResponseSchema)` to create a new message.
|
|
5972
5658
|
*/
|
|
5973
5659
|
export const GetBillingGroupInvoiceServiceDiscountsResponseSchema: GenMessage<GetBillingGroupInvoiceServiceDiscountsResponse> = /*@__PURE__*/
|
|
5974
|
-
messageDesc(file_billing_v1_billing,
|
|
5660
|
+
messageDesc(file_billing_v1_billing, 148);
|
|
5975
5661
|
|
|
5976
5662
|
/**
|
|
5977
5663
|
* @generated from message blueapi.billing.v1.AddBillingGroupCustomFieldRequest
|
|
@@ -5997,7 +5683,7 @@ export type AddBillingGroupCustomFieldRequest = Message<"blueapi.billing.v1.AddB
|
|
|
5997
5683
|
* Use `create(AddBillingGroupCustomFieldRequestSchema)` to create a new message.
|
|
5998
5684
|
*/
|
|
5999
5685
|
export const AddBillingGroupCustomFieldRequestSchema: GenMessage<AddBillingGroupCustomFieldRequest> = /*@__PURE__*/
|
|
6000
|
-
messageDesc(file_billing_v1_billing,
|
|
5686
|
+
messageDesc(file_billing_v1_billing, 149);
|
|
6001
5687
|
|
|
6002
5688
|
/**
|
|
6003
5689
|
* @generated from message blueapi.billing.v1.DeleteBillingGroupCustomFieldRequest
|
|
@@ -6023,7 +5709,7 @@ export type DeleteBillingGroupCustomFieldRequest = Message<"blueapi.billing.v1.D
|
|
|
6023
5709
|
* Use `create(DeleteBillingGroupCustomFieldRequestSchema)` to create a new message.
|
|
6024
5710
|
*/
|
|
6025
5711
|
export const DeleteBillingGroupCustomFieldRequestSchema: GenMessage<DeleteBillingGroupCustomFieldRequest> = /*@__PURE__*/
|
|
6026
|
-
messageDesc(file_billing_v1_billing,
|
|
5712
|
+
messageDesc(file_billing_v1_billing, 150);
|
|
6027
5713
|
|
|
6028
5714
|
/**
|
|
6029
5715
|
* @generated from message blueapi.billing.v1.AddAccountToBillingGroupRequest
|
|
@@ -6056,7 +5742,7 @@ export type AddAccountToBillingGroupRequest = Message<"blueapi.billing.v1.AddAcc
|
|
|
6056
5742
|
* Use `create(AddAccountToBillingGroupRequestSchema)` to create a new message.
|
|
6057
5743
|
*/
|
|
6058
5744
|
export const AddAccountToBillingGroupRequestSchema: GenMessage<AddAccountToBillingGroupRequest> = /*@__PURE__*/
|
|
6059
|
-
messageDesc(file_billing_v1_billing,
|
|
5745
|
+
messageDesc(file_billing_v1_billing, 151);
|
|
6060
5746
|
|
|
6061
5747
|
/**
|
|
6062
5748
|
* New message for account details
|
|
@@ -6098,7 +5784,7 @@ export type AccountToAdd = Message<"blueapi.billing.v1.AccountToAdd"> & {
|
|
|
6098
5784
|
* Use `create(AccountToAddSchema)` to create a new message.
|
|
6099
5785
|
*/
|
|
6100
5786
|
export const AccountToAddSchema: GenMessage<AccountToAdd> = /*@__PURE__*/
|
|
6101
|
-
messageDesc(file_billing_v1_billing,
|
|
5787
|
+
messageDesc(file_billing_v1_billing, 152);
|
|
6102
5788
|
|
|
6103
5789
|
/**
|
|
6104
5790
|
* @generated from message blueapi.billing.v1.AddTagsToBillingGroupRequest
|
|
@@ -6138,7 +5824,7 @@ export type AddTagsToBillingGroupRequest = Message<"blueapi.billing.v1.AddTagsTo
|
|
|
6138
5824
|
* Use `create(AddTagsToBillingGroupRequestSchema)` to create a new message.
|
|
6139
5825
|
*/
|
|
6140
5826
|
export const AddTagsToBillingGroupRequestSchema: GenMessage<AddTagsToBillingGroupRequest> = /*@__PURE__*/
|
|
6141
|
-
messageDesc(file_billing_v1_billing,
|
|
5827
|
+
messageDesc(file_billing_v1_billing, 153);
|
|
6142
5828
|
|
|
6143
5829
|
/**
|
|
6144
5830
|
* Settings for a specific customer account for AddTagsToBillingGroup
|
|
@@ -6166,7 +5852,7 @@ export type TagSetting = Message<"blueapi.billing.v1.TagSetting"> & {
|
|
|
6166
5852
|
* Use `create(TagSettingSchema)` to create a new message.
|
|
6167
5853
|
*/
|
|
6168
5854
|
export const TagSettingSchema: GenMessage<TagSetting> = /*@__PURE__*/
|
|
6169
|
-
messageDesc(file_billing_v1_billing,
|
|
5855
|
+
messageDesc(file_billing_v1_billing, 154);
|
|
6170
5856
|
|
|
6171
5857
|
/**
|
|
6172
5858
|
* Individual tag definition for AddTagsToBillingGroup
|
|
@@ -6201,7 +5887,7 @@ export type Tag = Message<"blueapi.billing.v1.Tag"> & {
|
|
|
6201
5887
|
* Use `create(TagSchema)` to create a new message.
|
|
6202
5888
|
*/
|
|
6203
5889
|
export const TagSchema: GenMessage<Tag> = /*@__PURE__*/
|
|
6204
|
-
messageDesc(file_billing_v1_billing,
|
|
5890
|
+
messageDesc(file_billing_v1_billing, 155);
|
|
6205
5891
|
|
|
6206
5892
|
/**
|
|
6207
5893
|
* Non-tag settings for a billing group for AddTagsToBillingGroup
|
|
@@ -6236,7 +5922,7 @@ export type NonTagSetting = Message<"blueapi.billing.v1.NonTagSetting"> & {
|
|
|
6236
5922
|
* Use `create(NonTagSettingSchema)` to create a new message.
|
|
6237
5923
|
*/
|
|
6238
5924
|
export const NonTagSettingSchema: GenMessage<NonTagSetting> = /*@__PURE__*/
|
|
6239
|
-
messageDesc(file_billing_v1_billing,
|
|
5925
|
+
messageDesc(file_billing_v1_billing, 156);
|
|
6240
5926
|
|
|
6241
5927
|
/**
|
|
6242
5928
|
* Response message for tag invoice setting operation for AddTagsToBillingGroup
|
|
@@ -6264,7 +5950,7 @@ export type SaveTagInvoiceSettingResponse = Message<"blueapi.billing.v1.SaveTagI
|
|
|
6264
5950
|
* Use `create(SaveTagInvoiceSettingResponseSchema)` to create a new message.
|
|
6265
5951
|
*/
|
|
6266
5952
|
export const SaveTagInvoiceSettingResponseSchema: GenMessage<SaveTagInvoiceSettingResponse> = /*@__PURE__*/
|
|
6267
|
-
messageDesc(file_billing_v1_billing,
|
|
5953
|
+
messageDesc(file_billing_v1_billing, 157);
|
|
6268
5954
|
|
|
6269
5955
|
/**
|
|
6270
5956
|
* Request message for updating non-tag group settings for a billing group for UpdateNonTagGroupToBillingGroup
|
|
@@ -6299,7 +5985,7 @@ export type UpdateNonTagGroupToBillingGroupRequest = Message<"blueapi.billing.v1
|
|
|
6299
5985
|
* Use `create(UpdateNonTagGroupToBillingGroupRequestSchema)` to create a new message.
|
|
6300
5986
|
*/
|
|
6301
5987
|
export const UpdateNonTagGroupToBillingGroupRequestSchema: GenMessage<UpdateNonTagGroupToBillingGroupRequest> = /*@__PURE__*/
|
|
6302
|
-
messageDesc(file_billing_v1_billing,
|
|
5988
|
+
messageDesc(file_billing_v1_billing, 158);
|
|
6303
5989
|
|
|
6304
5990
|
/**
|
|
6305
5991
|
* Individual non-tag group setting for UpdateNonTagGroupToBillingGroup
|
|
@@ -6334,7 +6020,7 @@ export type NonTagGroupSetting = Message<"blueapi.billing.v1.NonTagGroupSetting"
|
|
|
6334
6020
|
* Use `create(NonTagGroupSettingSchema)` to create a new message.
|
|
6335
6021
|
*/
|
|
6336
6022
|
export const NonTagGroupSettingSchema: GenMessage<NonTagGroupSetting> = /*@__PURE__*/
|
|
6337
|
-
messageDesc(file_billing_v1_billing,
|
|
6023
|
+
messageDesc(file_billing_v1_billing, 159);
|
|
6338
6024
|
|
|
6339
6025
|
/**
|
|
6340
6026
|
* @generated from message blueapi.billing.v1.SaveInvoiceSettingsRequest
|
|
@@ -6384,7 +6070,7 @@ export type SaveInvoiceSettingsRequest = Message<"blueapi.billing.v1.SaveInvoice
|
|
|
6384
6070
|
* Use `create(SaveInvoiceSettingsRequestSchema)` to create a new message.
|
|
6385
6071
|
*/
|
|
6386
6072
|
export const SaveInvoiceSettingsRequestSchema: GenMessage<SaveInvoiceSettingsRequest> = /*@__PURE__*/
|
|
6387
|
-
messageDesc(file_billing_v1_billing,
|
|
6073
|
+
messageDesc(file_billing_v1_billing, 160);
|
|
6388
6074
|
|
|
6389
6075
|
/**
|
|
6390
6076
|
* @generated from message blueapi.billing.v1.InvoiceSettings
|
|
@@ -6524,7 +6210,7 @@ export type InvoiceSettings = Message<"blueapi.billing.v1.InvoiceSettings"> & {
|
|
|
6524
6210
|
* Use `create(InvoiceSettingsSchema)` to create a new message.
|
|
6525
6211
|
*/
|
|
6526
6212
|
export const InvoiceSettingsSchema: GenMessage<InvoiceSettings> = /*@__PURE__*/
|
|
6527
|
-
messageDesc(file_billing_v1_billing,
|
|
6213
|
+
messageDesc(file_billing_v1_billing, 161);
|
|
6528
6214
|
|
|
6529
6215
|
/**
|
|
6530
6216
|
* @generated from message blueapi.billing.v1.BasicInformation
|
|
@@ -6596,7 +6282,7 @@ export type BasicInformation = Message<"blueapi.billing.v1.BasicInformation"> &
|
|
|
6596
6282
|
* Use `create(BasicInformationSchema)` to create a new message.
|
|
6597
6283
|
*/
|
|
6598
6284
|
export const BasicInformationSchema: GenMessage<BasicInformation> = /*@__PURE__*/
|
|
6599
|
-
messageDesc(file_billing_v1_billing,
|
|
6285
|
+
messageDesc(file_billing_v1_billing, 162);
|
|
6600
6286
|
|
|
6601
6287
|
/**
|
|
6602
6288
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupBasicInformationRequest
|
|
@@ -6618,7 +6304,7 @@ export type UpdateBillingGroupBasicInformationRequest = Message<"blueapi.billing
|
|
|
6618
6304
|
* Use `create(UpdateBillingGroupBasicInformationRequestSchema)` to create a new message.
|
|
6619
6305
|
*/
|
|
6620
6306
|
export const UpdateBillingGroupBasicInformationRequestSchema: GenMessage<UpdateBillingGroupBasicInformationRequest> = /*@__PURE__*/
|
|
6621
|
-
messageDesc(file_billing_v1_billing,
|
|
6307
|
+
messageDesc(file_billing_v1_billing, 163);
|
|
6622
6308
|
|
|
6623
6309
|
/**
|
|
6624
6310
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupCustomFieldsRequest
|
|
@@ -6640,7 +6326,7 @@ export type UpdateBillingGroupCustomFieldsRequest = Message<"blueapi.billing.v1.
|
|
|
6640
6326
|
* Use `create(UpdateBillingGroupCustomFieldsRequestSchema)` to create a new message.
|
|
6641
6327
|
*/
|
|
6642
6328
|
export const UpdateBillingGroupCustomFieldsRequestSchema: GenMessage<UpdateBillingGroupCustomFieldsRequest> = /*@__PURE__*/
|
|
6643
|
-
messageDesc(file_billing_v1_billing,
|
|
6329
|
+
messageDesc(file_billing_v1_billing, 164);
|
|
6644
6330
|
|
|
6645
6331
|
/**
|
|
6646
6332
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupFreeFormatRequest
|
|
@@ -6667,7 +6353,7 @@ export type UpdateBillingGroupFreeFormatRequest = Message<"blueapi.billing.v1.Up
|
|
|
6667
6353
|
* Use `create(UpdateBillingGroupFreeFormatRequestSchema)` to create a new message.
|
|
6668
6354
|
*/
|
|
6669
6355
|
export const UpdateBillingGroupFreeFormatRequestSchema: GenMessage<UpdateBillingGroupFreeFormatRequest> = /*@__PURE__*/
|
|
6670
|
-
messageDesc(file_billing_v1_billing,
|
|
6356
|
+
messageDesc(file_billing_v1_billing, 165);
|
|
6671
6357
|
|
|
6672
6358
|
/**
|
|
6673
6359
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupLinkedResourcesRequest
|
|
@@ -6720,7 +6406,7 @@ export type UpdateBillingGroupLinkedResourcesRequest = Message<"blueapi.billing.
|
|
|
6720
6406
|
* Use `create(UpdateBillingGroupLinkedResourcesRequestSchema)` to create a new message.
|
|
6721
6407
|
*/
|
|
6722
6408
|
export const UpdateBillingGroupLinkedResourcesRequestSchema: GenMessage<UpdateBillingGroupLinkedResourcesRequest> = /*@__PURE__*/
|
|
6723
|
-
messageDesc(file_billing_v1_billing,
|
|
6409
|
+
messageDesc(file_billing_v1_billing, 166);
|
|
6724
6410
|
|
|
6725
6411
|
/**
|
|
6726
6412
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupInvoiceSettingsRequest
|
|
@@ -6759,7 +6445,7 @@ export type UpdateBillingGroupInvoiceSettingsRequest = Message<"blueapi.billing.
|
|
|
6759
6445
|
* Use `create(UpdateBillingGroupInvoiceSettingsRequestSchema)` to create a new message.
|
|
6760
6446
|
*/
|
|
6761
6447
|
export const UpdateBillingGroupInvoiceSettingsRequestSchema: GenMessage<UpdateBillingGroupInvoiceSettingsRequest> = /*@__PURE__*/
|
|
6762
|
-
messageDesc(file_billing_v1_billing,
|
|
6448
|
+
messageDesc(file_billing_v1_billing, 167);
|
|
6763
6449
|
|
|
6764
6450
|
/**
|
|
6765
6451
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupResellerChargesRequest
|
|
@@ -6786,7 +6472,7 @@ export type UpdateBillingGroupResellerChargesRequest = Message<"blueapi.billing.
|
|
|
6786
6472
|
* Use `create(UpdateBillingGroupResellerChargesRequestSchema)` to create a new message.
|
|
6787
6473
|
*/
|
|
6788
6474
|
export const UpdateBillingGroupResellerChargesRequestSchema: GenMessage<UpdateBillingGroupResellerChargesRequest> = /*@__PURE__*/
|
|
6789
|
-
messageDesc(file_billing_v1_billing,
|
|
6475
|
+
messageDesc(file_billing_v1_billing, 168);
|
|
6790
6476
|
|
|
6791
6477
|
/**
|
|
6792
6478
|
* @generated from message blueapi.billing.v1.UpdateBillingGroupAdditionalChargesRequest
|
|
@@ -6820,7 +6506,7 @@ export type UpdateBillingGroupAdditionalChargesRequest = Message<"blueapi.billin
|
|
|
6820
6506
|
* Use `create(UpdateBillingGroupAdditionalChargesRequestSchema)` to create a new message.
|
|
6821
6507
|
*/
|
|
6822
6508
|
export const UpdateBillingGroupAdditionalChargesRequestSchema: GenMessage<UpdateBillingGroupAdditionalChargesRequest> = /*@__PURE__*/
|
|
6823
|
-
messageDesc(file_billing_v1_billing,
|
|
6509
|
+
messageDesc(file_billing_v1_billing, 169);
|
|
6824
6510
|
|
|
6825
6511
|
/**
|
|
6826
6512
|
* CustomizedBillingServiceBillingSetting
|
|
@@ -6857,7 +6543,7 @@ export type UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceB
|
|
|
6857
6543
|
* Use `create(UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSettingSchema)` to create a new message.
|
|
6858
6544
|
*/
|
|
6859
6545
|
export const UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
|
|
6860
|
-
messageDesc(file_billing_v1_billing,
|
|
6546
|
+
messageDesc(file_billing_v1_billing, 169, 0);
|
|
6861
6547
|
|
|
6862
6548
|
/**
|
|
6863
6549
|
* @generated from message blueapi.billing.v1.DeleteBillingGroupRequest
|
|
@@ -6874,7 +6560,7 @@ export type DeleteBillingGroupRequest = Message<"blueapi.billing.v1.DeleteBillin
|
|
|
6874
6560
|
* Use `create(DeleteBillingGroupRequestSchema)` to create a new message.
|
|
6875
6561
|
*/
|
|
6876
6562
|
export const DeleteBillingGroupRequestSchema: GenMessage<DeleteBillingGroupRequest> = /*@__PURE__*/
|
|
6877
|
-
messageDesc(file_billing_v1_billing,
|
|
6563
|
+
messageDesc(file_billing_v1_billing, 170);
|
|
6878
6564
|
|
|
6879
6565
|
/**
|
|
6880
6566
|
* Request message for the GetBillingGroupAccountSupportPlan rpc.
|
|
@@ -6902,7 +6588,7 @@ export type GetBillingGroupAccountSupportPlanRequest = Message<"blueapi.billing.
|
|
|
6902
6588
|
* Use `create(GetBillingGroupAccountSupportPlanRequestSchema)` to create a new message.
|
|
6903
6589
|
*/
|
|
6904
6590
|
export const GetBillingGroupAccountSupportPlanRequestSchema: GenMessage<GetBillingGroupAccountSupportPlanRequest> = /*@__PURE__*/
|
|
6905
|
-
messageDesc(file_billing_v1_billing,
|
|
6591
|
+
messageDesc(file_billing_v1_billing, 171);
|
|
6906
6592
|
|
|
6907
6593
|
/**
|
|
6908
6594
|
* Response message for the GetBillingGroupAccountSupportPlan rpc.
|
|
@@ -6944,7 +6630,7 @@ export type GetBillingGroupAccountSupportPlanResponse = Message<"blueapi.billing
|
|
|
6944
6630
|
* Use `create(GetBillingGroupAccountSupportPlanResponseSchema)` to create a new message.
|
|
6945
6631
|
*/
|
|
6946
6632
|
export const GetBillingGroupAccountSupportPlanResponseSchema: GenMessage<GetBillingGroupAccountSupportPlanResponse> = /*@__PURE__*/
|
|
6947
|
-
messageDesc(file_billing_v1_billing,
|
|
6633
|
+
messageDesc(file_billing_v1_billing, 172);
|
|
6948
6634
|
|
|
6949
6635
|
/**
|
|
6950
6636
|
* Request message for the UpdateBillingGroupAccountSupportPlan rpc.
|
|
@@ -6994,7 +6680,7 @@ export type UpdateBillingGroupAccountSupportPlanRequest = Message<"blueapi.billi
|
|
|
6994
6680
|
* Use `create(UpdateBillingGroupAccountSupportPlanRequestSchema)` to create a new message.
|
|
6995
6681
|
*/
|
|
6996
6682
|
export const UpdateBillingGroupAccountSupportPlanRequestSchema: GenMessage<UpdateBillingGroupAccountSupportPlanRequest> = /*@__PURE__*/
|
|
6997
|
-
messageDesc(file_billing_v1_billing,
|
|
6683
|
+
messageDesc(file_billing_v1_billing, 173);
|
|
6998
6684
|
|
|
6999
6685
|
/**
|
|
7000
6686
|
* @generated from message blueapi.billing.v1.GetAnnouncementsRequest
|
|
@@ -7013,7 +6699,7 @@ export type GetAnnouncementsRequest = Message<"blueapi.billing.v1.GetAnnouncemen
|
|
|
7013
6699
|
* Use `create(GetAnnouncementsRequestSchema)` to create a new message.
|
|
7014
6700
|
*/
|
|
7015
6701
|
export const GetAnnouncementsRequestSchema: GenMessage<GetAnnouncementsRequest> = /*@__PURE__*/
|
|
7016
|
-
messageDesc(file_billing_v1_billing,
|
|
6702
|
+
messageDesc(file_billing_v1_billing, 174);
|
|
7017
6703
|
|
|
7018
6704
|
/**
|
|
7019
6705
|
* @generated from message blueapi.billing.v1.CreateAnnouncementRequest
|
|
@@ -7081,7 +6767,7 @@ export type CreateAnnouncementRequest = Message<"blueapi.billing.v1.CreateAnnoun
|
|
|
7081
6767
|
* Use `create(CreateAnnouncementRequestSchema)` to create a new message.
|
|
7082
6768
|
*/
|
|
7083
6769
|
export const CreateAnnouncementRequestSchema: GenMessage<CreateAnnouncementRequest> = /*@__PURE__*/
|
|
7084
|
-
messageDesc(file_billing_v1_billing,
|
|
6770
|
+
messageDesc(file_billing_v1_billing, 175);
|
|
7085
6771
|
|
|
7086
6772
|
/**
|
|
7087
6773
|
* @generated from message blueapi.billing.v1.UpdateAnnouncementRequest
|
|
@@ -7105,7 +6791,7 @@ export type UpdateAnnouncementRequest = Message<"blueapi.billing.v1.UpdateAnnoun
|
|
|
7105
6791
|
* Use `create(UpdateAnnouncementRequestSchema)` to create a new message.
|
|
7106
6792
|
*/
|
|
7107
6793
|
export const UpdateAnnouncementRequestSchema: GenMessage<UpdateAnnouncementRequest> = /*@__PURE__*/
|
|
7108
|
-
messageDesc(file_billing_v1_billing,
|
|
6794
|
+
messageDesc(file_billing_v1_billing, 176);
|
|
7109
6795
|
|
|
7110
6796
|
/**
|
|
7111
6797
|
* @generated from message blueapi.billing.v1.UpdateAnnouncementsStatusRequest
|
|
@@ -7127,7 +6813,7 @@ export type UpdateAnnouncementsStatusRequest = Message<"blueapi.billing.v1.Updat
|
|
|
7127
6813
|
* Use `create(UpdateAnnouncementsStatusRequestSchema)` to create a new message.
|
|
7128
6814
|
*/
|
|
7129
6815
|
export const UpdateAnnouncementsStatusRequestSchema: GenMessage<UpdateAnnouncementsStatusRequest> = /*@__PURE__*/
|
|
7130
|
-
messageDesc(file_billing_v1_billing,
|
|
6816
|
+
messageDesc(file_billing_v1_billing, 177);
|
|
7131
6817
|
|
|
7132
6818
|
/**
|
|
7133
6819
|
* @generated from message blueapi.billing.v1.UpdateAnnouncementDateRequest
|
|
@@ -7151,7 +6837,7 @@ export type UpdateAnnouncementDateRequest = Message<"blueapi.billing.v1.UpdateAn
|
|
|
7151
6837
|
* Use `create(UpdateAnnouncementDateRequestSchema)` to create a new message.
|
|
7152
6838
|
*/
|
|
7153
6839
|
export const UpdateAnnouncementDateRequestSchema: GenMessage<UpdateAnnouncementDateRequest> = /*@__PURE__*/
|
|
7154
|
-
messageDesc(file_billing_v1_billing,
|
|
6840
|
+
messageDesc(file_billing_v1_billing, 178);
|
|
7155
6841
|
|
|
7156
6842
|
/**
|
|
7157
6843
|
* @generated from message blueapi.billing.v1.DeleteAnnouncementRequest
|
|
@@ -7170,7 +6856,7 @@ export type DeleteAnnouncementRequest = Message<"blueapi.billing.v1.DeleteAnnoun
|
|
|
7170
6856
|
* Use `create(DeleteAnnouncementRequestSchema)` to create a new message.
|
|
7171
6857
|
*/
|
|
7172
6858
|
export const DeleteAnnouncementRequestSchema: GenMessage<DeleteAnnouncementRequest> = /*@__PURE__*/
|
|
7173
|
-
messageDesc(file_billing_v1_billing,
|
|
6859
|
+
messageDesc(file_billing_v1_billing, 179);
|
|
7174
6860
|
|
|
7175
6861
|
/**
|
|
7176
6862
|
* @generated from message blueapi.billing.v1.Announcement
|
|
@@ -7247,7 +6933,7 @@ export type Announcement = Message<"blueapi.billing.v1.Announcement"> & {
|
|
|
7247
6933
|
* Use `create(AnnouncementSchema)` to create a new message.
|
|
7248
6934
|
*/
|
|
7249
6935
|
export const AnnouncementSchema: GenMessage<Announcement> = /*@__PURE__*/
|
|
7250
|
-
messageDesc(file_billing_v1_billing,
|
|
6936
|
+
messageDesc(file_billing_v1_billing, 180);
|
|
7251
6937
|
|
|
7252
6938
|
/**
|
|
7253
6939
|
* @generated from message blueapi.billing.v1.GetBillingGroupAnnouncementsRequest
|
|
@@ -7266,7 +6952,7 @@ export type GetBillingGroupAnnouncementsRequest = Message<"blueapi.billing.v1.Ge
|
|
|
7266
6952
|
* Use `create(GetBillingGroupAnnouncementsRequestSchema)` to create a new message.
|
|
7267
6953
|
*/
|
|
7268
6954
|
export const GetBillingGroupAnnouncementsRequestSchema: GenMessage<GetBillingGroupAnnouncementsRequest> = /*@__PURE__*/
|
|
7269
|
-
messageDesc(file_billing_v1_billing,
|
|
6955
|
+
messageDesc(file_billing_v1_billing, 181);
|
|
7270
6956
|
|
|
7271
6957
|
/**
|
|
7272
6958
|
* @generated from message blueapi.billing.v1.GetBillingGroupAnnouncementsResponse
|
|
@@ -7298,7 +6984,7 @@ export type GetBillingGroupAnnouncementsResponse = Message<"blueapi.billing.v1.G
|
|
|
7298
6984
|
* Use `create(GetBillingGroupAnnouncementsResponseSchema)` to create a new message.
|
|
7299
6985
|
*/
|
|
7300
6986
|
export const GetBillingGroupAnnouncementsResponseSchema: GenMessage<GetBillingGroupAnnouncementsResponse> = /*@__PURE__*/
|
|
7301
|
-
messageDesc(file_billing_v1_billing,
|
|
6987
|
+
messageDesc(file_billing_v1_billing, 182);
|
|
7302
6988
|
|
|
7303
6989
|
/**
|
|
7304
6990
|
* @generated from message blueapi.billing.v1.GetCreditsRequest
|
|
@@ -7311,7 +6997,7 @@ export type GetCreditsRequest = Message<"blueapi.billing.v1.GetCreditsRequest">
|
|
|
7311
6997
|
* Use `create(GetCreditsRequestSchema)` to create a new message.
|
|
7312
6998
|
*/
|
|
7313
6999
|
export const GetCreditsRequestSchema: GenMessage<GetCreditsRequest> = /*@__PURE__*/
|
|
7314
|
-
messageDesc(file_billing_v1_billing,
|
|
7000
|
+
messageDesc(file_billing_v1_billing, 183);
|
|
7315
7001
|
|
|
7316
7002
|
/**
|
|
7317
7003
|
* @generated from message blueapi.billing.v1.Credit
|
|
@@ -7373,7 +7059,7 @@ export type Credit = Message<"blueapi.billing.v1.Credit"> & {
|
|
|
7373
7059
|
* Use `create(CreditSchema)` to create a new message.
|
|
7374
7060
|
*/
|
|
7375
7061
|
export const CreditSchema: GenMessage<Credit> = /*@__PURE__*/
|
|
7376
|
-
messageDesc(file_billing_v1_billing,
|
|
7062
|
+
messageDesc(file_billing_v1_billing, 184);
|
|
7377
7063
|
|
|
7378
7064
|
/**
|
|
7379
7065
|
* @generated from message blueapi.billing.v1.GetCsvSettingsRequest
|
|
@@ -7386,7 +7072,7 @@ export type GetCsvSettingsRequest = Message<"blueapi.billing.v1.GetCsvSettingsRe
|
|
|
7386
7072
|
* Use `create(GetCsvSettingsRequestSchema)` to create a new message.
|
|
7387
7073
|
*/
|
|
7388
7074
|
export const GetCsvSettingsRequestSchema: GenMessage<GetCsvSettingsRequest> = /*@__PURE__*/
|
|
7389
|
-
messageDesc(file_billing_v1_billing,
|
|
7075
|
+
messageDesc(file_billing_v1_billing, 185);
|
|
7390
7076
|
|
|
7391
7077
|
/**
|
|
7392
7078
|
* @generated from message blueapi.billing.v1.CsvSetting
|
|
@@ -7413,7 +7099,7 @@ export type CsvSetting = Message<"blueapi.billing.v1.CsvSetting"> & {
|
|
|
7413
7099
|
* Use `create(CsvSettingSchema)` to create a new message.
|
|
7414
7100
|
*/
|
|
7415
7101
|
export const CsvSettingSchema: GenMessage<CsvSetting> = /*@__PURE__*/
|
|
7416
|
-
messageDesc(file_billing_v1_billing,
|
|
7102
|
+
messageDesc(file_billing_v1_billing, 186);
|
|
7417
7103
|
|
|
7418
7104
|
/**
|
|
7419
7105
|
* @generated from message blueapi.billing.v1.CsvSetting.Column
|
|
@@ -7445,7 +7131,7 @@ export type CsvSetting_Column = Message<"blueapi.billing.v1.CsvSetting.Column">
|
|
|
7445
7131
|
* Use `create(CsvSetting_ColumnSchema)` to create a new message.
|
|
7446
7132
|
*/
|
|
7447
7133
|
export const CsvSetting_ColumnSchema: GenMessage<CsvSetting_Column> = /*@__PURE__*/
|
|
7448
|
-
messageDesc(file_billing_v1_billing,
|
|
7134
|
+
messageDesc(file_billing_v1_billing, 186, 0);
|
|
7449
7135
|
|
|
7450
7136
|
/**
|
|
7451
7137
|
* @generated from message blueapi.billing.v1.UpdateInvoiceExchangeRateRequest
|
|
@@ -7486,7 +7172,7 @@ export type UpdateInvoiceExchangeRateRequest = Message<"blueapi.billing.v1.Updat
|
|
|
7486
7172
|
* Use `create(UpdateInvoiceExchangeRateRequestSchema)` to create a new message.
|
|
7487
7173
|
*/
|
|
7488
7174
|
export const UpdateInvoiceExchangeRateRequestSchema: GenMessage<UpdateInvoiceExchangeRateRequest> = /*@__PURE__*/
|
|
7489
|
-
messageDesc(file_billing_v1_billing,
|
|
7175
|
+
messageDesc(file_billing_v1_billing, 187);
|
|
7490
7176
|
|
|
7491
7177
|
/**
|
|
7492
7178
|
* @generated from message blueapi.billing.v1.ConvertInvoiceToPdfRequest
|
|
@@ -7520,7 +7206,7 @@ export type ConvertInvoiceToPdfRequest = Message<"blueapi.billing.v1.ConvertInvo
|
|
|
7520
7206
|
* Use `create(ConvertInvoiceToPdfRequestSchema)` to create a new message.
|
|
7521
7207
|
*/
|
|
7522
7208
|
export const ConvertInvoiceToPdfRequestSchema: GenMessage<ConvertInvoiceToPdfRequest> = /*@__PURE__*/
|
|
7523
|
-
messageDesc(file_billing_v1_billing,
|
|
7209
|
+
messageDesc(file_billing_v1_billing, 188);
|
|
7524
7210
|
|
|
7525
7211
|
/**
|
|
7526
7212
|
* @generated from message blueapi.billing.v1.ConvertInvoiceToPdfResponse
|
|
@@ -7545,7 +7231,7 @@ export type ConvertInvoiceToPdfResponse = Message<"blueapi.billing.v1.ConvertInv
|
|
|
7545
7231
|
* Use `create(ConvertInvoiceToPdfResponseSchema)` to create a new message.
|
|
7546
7232
|
*/
|
|
7547
7233
|
export const ConvertInvoiceToPdfResponseSchema: GenMessage<ConvertInvoiceToPdfResponse> = /*@__PURE__*/
|
|
7548
|
-
messageDesc(file_billing_v1_billing,
|
|
7234
|
+
messageDesc(file_billing_v1_billing, 189);
|
|
7549
7235
|
|
|
7550
7236
|
/**
|
|
7551
7237
|
* Request message for the Billing.ListBillingGroupsPaginated rpc.
|
|
@@ -7636,7 +7322,7 @@ export type ListBillingGroupsPaginatedRequest = Message<"blueapi.billing.v1.List
|
|
|
7636
7322
|
* Use `create(ListBillingGroupsPaginatedRequestSchema)` to create a new message.
|
|
7637
7323
|
*/
|
|
7638
7324
|
export const ListBillingGroupsPaginatedRequestSchema: GenMessage<ListBillingGroupsPaginatedRequest> = /*@__PURE__*/
|
|
7639
|
-
messageDesc(file_billing_v1_billing,
|
|
7325
|
+
messageDesc(file_billing_v1_billing, 190);
|
|
7640
7326
|
|
|
7641
7327
|
/**
|
|
7642
7328
|
* Response row for paginated billing groups table.
|
|
@@ -7692,7 +7378,7 @@ export type BillingGroupListItem = Message<"blueapi.billing.v1.BillingGroupListI
|
|
|
7692
7378
|
* Use `create(BillingGroupListItemSchema)` to create a new message.
|
|
7693
7379
|
*/
|
|
7694
7380
|
export const BillingGroupListItemSchema: GenMessage<BillingGroupListItem> = /*@__PURE__*/
|
|
7695
|
-
messageDesc(file_billing_v1_billing,
|
|
7381
|
+
messageDesc(file_billing_v1_billing, 191);
|
|
7696
7382
|
|
|
7697
7383
|
/**
|
|
7698
7384
|
* Vendor availability entries.
|
|
@@ -7720,7 +7406,7 @@ export type BillingGroupListItem_BillingGroupVendor = Message<"blueapi.billing.v
|
|
|
7720
7406
|
* Use `create(BillingGroupListItem_BillingGroupVendorSchema)` to create a new message.
|
|
7721
7407
|
*/
|
|
7722
7408
|
export const BillingGroupListItem_BillingGroupVendorSchema: GenMessage<BillingGroupListItem_BillingGroupVendor> = /*@__PURE__*/
|
|
7723
|
-
messageDesc(file_billing_v1_billing,
|
|
7409
|
+
messageDesc(file_billing_v1_billing, 191, 0);
|
|
7724
7410
|
|
|
7725
7411
|
/**
|
|
7726
7412
|
* Response message for the Billing.ListBillingGroupsPaginated rpc.
|
|
@@ -7769,7 +7455,7 @@ export type ListBillingGroupsPaginatedResponse = Message<"blueapi.billing.v1.Lis
|
|
|
7769
7455
|
* Use `create(ListBillingGroupsPaginatedResponseSchema)` to create a new message.
|
|
7770
7456
|
*/
|
|
7771
7457
|
export const ListBillingGroupsPaginatedResponseSchema: GenMessage<ListBillingGroupsPaginatedResponse> = /*@__PURE__*/
|
|
7772
|
-
messageDesc(file_billing_v1_billing,
|
|
7458
|
+
messageDesc(file_billing_v1_billing, 192);
|
|
7773
7459
|
|
|
7774
7460
|
/**
|
|
7775
7461
|
* @generated from message blueapi.billing.v1.ChildBillingGroupBasicInformation
|
|
@@ -7823,7 +7509,7 @@ export type ChildBillingGroupBasicInformation = Message<"blueapi.billing.v1.Chil
|
|
|
7823
7509
|
* Use `create(ChildBillingGroupBasicInformationSchema)` to create a new message.
|
|
7824
7510
|
*/
|
|
7825
7511
|
export const ChildBillingGroupBasicInformationSchema: GenMessage<ChildBillingGroupBasicInformation> = /*@__PURE__*/
|
|
7826
|
-
messageDesc(file_billing_v1_billing,
|
|
7512
|
+
messageDesc(file_billing_v1_billing, 193);
|
|
7827
7513
|
|
|
7828
7514
|
/**
|
|
7829
7515
|
* @generated from message blueapi.billing.v1.CustomizedBillingServiceBillingGroup
|
|
@@ -7863,7 +7549,7 @@ export type CustomizedBillingServiceBillingGroup = Message<"blueapi.billing.v1.C
|
|
|
7863
7549
|
* Use `create(CustomizedBillingServiceBillingGroupSchema)` to create a new message.
|
|
7864
7550
|
*/
|
|
7865
7551
|
export const CustomizedBillingServiceBillingGroupSchema: GenMessage<CustomizedBillingServiceBillingGroup> = /*@__PURE__*/
|
|
7866
|
-
messageDesc(file_billing_v1_billing,
|
|
7552
|
+
messageDesc(file_billing_v1_billing, 194);
|
|
7867
7553
|
|
|
7868
7554
|
/**
|
|
7869
7555
|
* Contains basic information and invoice settings related data.
|
|
@@ -7907,7 +7593,7 @@ export type ChildBillingGroup = Message<"blueapi.billing.v1.ChildBillingGroup">
|
|
|
7907
7593
|
* Use `create(ChildBillingGroupSchema)` to create a new message.
|
|
7908
7594
|
*/
|
|
7909
7595
|
export const ChildBillingGroupSchema: GenMessage<ChildBillingGroup> = /*@__PURE__*/
|
|
7910
|
-
messageDesc(file_billing_v1_billing,
|
|
7596
|
+
messageDesc(file_billing_v1_billing, 195);
|
|
7911
7597
|
|
|
7912
7598
|
/**
|
|
7913
7599
|
* @generated from message blueapi.billing.v1.ChildBillingGroupInvoiceSettings
|
|
@@ -7945,7 +7631,7 @@ export type ChildBillingGroupInvoiceSettings = Message<"blueapi.billing.v1.Child
|
|
|
7945
7631
|
* Use `create(ChildBillingGroupInvoiceSettingsSchema)` to create a new message.
|
|
7946
7632
|
*/
|
|
7947
7633
|
export const ChildBillingGroupInvoiceSettingsSchema: GenMessage<ChildBillingGroupInvoiceSettings> = /*@__PURE__*/
|
|
7948
|
-
messageDesc(file_billing_v1_billing,
|
|
7634
|
+
messageDesc(file_billing_v1_billing, 196);
|
|
7949
7635
|
|
|
7950
7636
|
/**
|
|
7951
7637
|
* @generated from message blueapi.billing.v1.CreateChildBillingGroupRequest
|
|
@@ -7985,7 +7671,7 @@ export type CreateChildBillingGroupRequest = Message<"blueapi.billing.v1.CreateC
|
|
|
7985
7671
|
* Use `create(CreateChildBillingGroupRequestSchema)` to create a new message.
|
|
7986
7672
|
*/
|
|
7987
7673
|
export const CreateChildBillingGroupRequestSchema: GenMessage<CreateChildBillingGroupRequest> = /*@__PURE__*/
|
|
7988
|
-
messageDesc(file_billing_v1_billing,
|
|
7674
|
+
messageDesc(file_billing_v1_billing, 197);
|
|
7989
7675
|
|
|
7990
7676
|
/**
|
|
7991
7677
|
* @generated from message blueapi.billing.v1.CreateChildBillingGroupResponse
|
|
@@ -7998,7 +7684,7 @@ export type CreateChildBillingGroupResponse = Message<"blueapi.billing.v1.Create
|
|
|
7998
7684
|
* Use `create(CreateChildBillingGroupResponseSchema)` to create a new message.
|
|
7999
7685
|
*/
|
|
8000
7686
|
export const CreateChildBillingGroupResponseSchema: GenMessage<CreateChildBillingGroupResponse> = /*@__PURE__*/
|
|
8001
|
-
messageDesc(file_billing_v1_billing,
|
|
7687
|
+
messageDesc(file_billing_v1_billing, 198);
|
|
8002
7688
|
|
|
8003
7689
|
/**
|
|
8004
7690
|
* @generated from message blueapi.billing.v1.GetChildBillingGroupRequest
|
|
@@ -8017,7 +7703,7 @@ export type GetChildBillingGroupRequest = Message<"blueapi.billing.v1.GetChildBi
|
|
|
8017
7703
|
* Use `create(GetChildBillingGroupRequestSchema)` to create a new message.
|
|
8018
7704
|
*/
|
|
8019
7705
|
export const GetChildBillingGroupRequestSchema: GenMessage<GetChildBillingGroupRequest> = /*@__PURE__*/
|
|
8020
|
-
messageDesc(file_billing_v1_billing,
|
|
7706
|
+
messageDesc(file_billing_v1_billing, 199);
|
|
8021
7707
|
|
|
8022
7708
|
/**
|
|
8023
7709
|
* @generated from message blueapi.billing.v1.GetChildBillingGroupResponse
|
|
@@ -8034,7 +7720,7 @@ export type GetChildBillingGroupResponse = Message<"blueapi.billing.v1.GetChildB
|
|
|
8034
7720
|
* Use `create(GetChildBillingGroupResponseSchema)` to create a new message.
|
|
8035
7721
|
*/
|
|
8036
7722
|
export const GetChildBillingGroupResponseSchema: GenMessage<GetChildBillingGroupResponse> = /*@__PURE__*/
|
|
8037
|
-
messageDesc(file_billing_v1_billing,
|
|
7723
|
+
messageDesc(file_billing_v1_billing, 200);
|
|
8038
7724
|
|
|
8039
7725
|
/**
|
|
8040
7726
|
* @generated from message blueapi.billing.v1.ReadChildBillingGroupsRequest
|
|
@@ -8062,7 +7748,7 @@ export type ReadChildBillingGroupsRequest = Message<"blueapi.billing.v1.ReadChil
|
|
|
8062
7748
|
* Use `create(ReadChildBillingGroupsRequestSchema)` to create a new message.
|
|
8063
7749
|
*/
|
|
8064
7750
|
export const ReadChildBillingGroupsRequestSchema: GenMessage<ReadChildBillingGroupsRequest> = /*@__PURE__*/
|
|
8065
|
-
messageDesc(file_billing_v1_billing,
|
|
7751
|
+
messageDesc(file_billing_v1_billing, 201);
|
|
8066
7752
|
|
|
8067
7753
|
/**
|
|
8068
7754
|
* @generated from message blueapi.billing.v1.UpdateChildBillingGroupRequest
|
|
@@ -8095,7 +7781,7 @@ export type UpdateChildBillingGroupRequest = Message<"blueapi.billing.v1.UpdateC
|
|
|
8095
7781
|
* Use `create(UpdateChildBillingGroupRequestSchema)` to create a new message.
|
|
8096
7782
|
*/
|
|
8097
7783
|
export const UpdateChildBillingGroupRequestSchema: GenMessage<UpdateChildBillingGroupRequest> = /*@__PURE__*/
|
|
8098
|
-
messageDesc(file_billing_v1_billing,
|
|
7784
|
+
messageDesc(file_billing_v1_billing, 202);
|
|
8099
7785
|
|
|
8100
7786
|
/**
|
|
8101
7787
|
* @generated from message blueapi.billing.v1.UpdateChildBillingGroupResponse
|
|
@@ -8108,7 +7794,7 @@ export type UpdateChildBillingGroupResponse = Message<"blueapi.billing.v1.Update
|
|
|
8108
7794
|
* Use `create(UpdateChildBillingGroupResponseSchema)` to create a new message.
|
|
8109
7795
|
*/
|
|
8110
7796
|
export const UpdateChildBillingGroupResponseSchema: GenMessage<UpdateChildBillingGroupResponse> = /*@__PURE__*/
|
|
8111
|
-
messageDesc(file_billing_v1_billing,
|
|
7797
|
+
messageDesc(file_billing_v1_billing, 203);
|
|
8112
7798
|
|
|
8113
7799
|
/**
|
|
8114
7800
|
* @generated from message blueapi.billing.v1.DeleteChildBillingGroupRequest
|
|
@@ -8127,7 +7813,7 @@ export type DeleteChildBillingGroupRequest = Message<"blueapi.billing.v1.DeleteC
|
|
|
8127
7813
|
* Use `create(DeleteChildBillingGroupRequestSchema)` to create a new message.
|
|
8128
7814
|
*/
|
|
8129
7815
|
export const DeleteChildBillingGroupRequestSchema: GenMessage<DeleteChildBillingGroupRequest> = /*@__PURE__*/
|
|
8130
|
-
messageDesc(file_billing_v1_billing,
|
|
7816
|
+
messageDesc(file_billing_v1_billing, 204);
|
|
8131
7817
|
|
|
8132
7818
|
/**
|
|
8133
7819
|
* @generated from message blueapi.billing.v1.DeleteChildBillingGroupResponse
|
|
@@ -8140,7 +7826,7 @@ export type DeleteChildBillingGroupResponse = Message<"blueapi.billing.v1.Delete
|
|
|
8140
7826
|
* Use `create(DeleteChildBillingGroupResponseSchema)` to create a new message.
|
|
8141
7827
|
*/
|
|
8142
7828
|
export const DeleteChildBillingGroupResponseSchema: GenMessage<DeleteChildBillingGroupResponse> = /*@__PURE__*/
|
|
8143
|
-
messageDesc(file_billing_v1_billing,
|
|
7829
|
+
messageDesc(file_billing_v1_billing, 205);
|
|
8144
7830
|
|
|
8145
7831
|
/**
|
|
8146
7832
|
* @generated from message blueapi.billing.v1.UpdateChildBillingGroupInvoiceSettingsRequest
|
|
@@ -8173,7 +7859,7 @@ export type UpdateChildBillingGroupInvoiceSettingsRequest = Message<"blueapi.bil
|
|
|
8173
7859
|
* Use `create(UpdateChildBillingGroupInvoiceSettingsRequestSchema)` to create a new message.
|
|
8174
7860
|
*/
|
|
8175
7861
|
export const UpdateChildBillingGroupInvoiceSettingsRequestSchema: GenMessage<UpdateChildBillingGroupInvoiceSettingsRequest> = /*@__PURE__*/
|
|
8176
|
-
messageDesc(file_billing_v1_billing,
|
|
7862
|
+
messageDesc(file_billing_v1_billing, 206);
|
|
8177
7863
|
|
|
8178
7864
|
/**
|
|
8179
7865
|
* @generated from message blueapi.billing.v1.UpdateChildBillingGroupInvoiceSettingsResponse
|
|
@@ -8186,266 +7872,667 @@ export type UpdateChildBillingGroupInvoiceSettingsResponse = Message<"blueapi.bi
|
|
|
8186
7872
|
* Use `create(UpdateChildBillingGroupInvoiceSettingsResponseSchema)` to create a new message.
|
|
8187
7873
|
*/
|
|
8188
7874
|
export const UpdateChildBillingGroupInvoiceSettingsResponseSchema: GenMessage<UpdateChildBillingGroupInvoiceSettingsResponse> = /*@__PURE__*/
|
|
8189
|
-
messageDesc(file_billing_v1_billing,
|
|
7875
|
+
messageDesc(file_billing_v1_billing, 207);
|
|
7876
|
+
|
|
7877
|
+
/**
|
|
7878
|
+
* @generated from message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest
|
|
7879
|
+
*/
|
|
7880
|
+
export type SetChildBillingGroupCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest"> & {
|
|
7881
|
+
/**
|
|
7882
|
+
* Required. internal id of the child billing group.
|
|
7883
|
+
*
|
|
7884
|
+
* @generated from field: string internalId = 1;
|
|
7885
|
+
*/
|
|
7886
|
+
internalId: string;
|
|
7887
|
+
|
|
7888
|
+
/**
|
|
7889
|
+
* Required. At the moment, `aws` is supported.
|
|
7890
|
+
*
|
|
7891
|
+
* @generated from field: string vendor = 2;
|
|
7892
|
+
*/
|
|
7893
|
+
vendor: string;
|
|
7894
|
+
|
|
7895
|
+
/**
|
|
7896
|
+
* Required. Root parent Id.
|
|
7897
|
+
*
|
|
7898
|
+
* @generated from field: string rootId = 3;
|
|
7899
|
+
*/
|
|
7900
|
+
rootId: string;
|
|
7901
|
+
|
|
7902
|
+
/**
|
|
7903
|
+
* Required. customized billing service setting.
|
|
7904
|
+
*
|
|
7905
|
+
* @generated from field: repeated blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting setting = 4;
|
|
7906
|
+
*/
|
|
7907
|
+
setting: SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting[];
|
|
7908
|
+
};
|
|
7909
|
+
|
|
7910
|
+
/**
|
|
7911
|
+
* Describes the message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.
|
|
7912
|
+
* Use `create(SetChildBillingGroupCustomizedBillingServiceRequestSchema)` to create a new message.
|
|
7913
|
+
*/
|
|
7914
|
+
export const SetChildBillingGroupCustomizedBillingServiceRequestSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest> = /*@__PURE__*/
|
|
7915
|
+
messageDesc(file_billing_v1_billing, 208);
|
|
7916
|
+
|
|
7917
|
+
/**
|
|
7918
|
+
* CustomizedBillingServiceBillingSetting
|
|
7919
|
+
*
|
|
7920
|
+
* @generated from message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting
|
|
7921
|
+
*/
|
|
7922
|
+
export type SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting = Message<"blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting"> & {
|
|
7923
|
+
/**
|
|
7924
|
+
* Required. [blueapi.api.ripple.CustomizedBillingService.id]
|
|
7925
|
+
*
|
|
7926
|
+
* @generated from field: string id = 1;
|
|
7927
|
+
*/
|
|
7928
|
+
id: string;
|
|
7929
|
+
|
|
7930
|
+
/**
|
|
7931
|
+
* Required. [blueapi.api.ripple.ChargingTarget]
|
|
7932
|
+
*
|
|
7933
|
+
* @generated from field: blueapi.api.ripple.ChargingTarget chargingTarget = 2;
|
|
7934
|
+
*/
|
|
7935
|
+
chargingTarget: ChargingTarget;
|
|
7936
|
+
|
|
7937
|
+
/**
|
|
7938
|
+
* Optional. if chargingTarget is BILLINGGROUP, `accounts` is set emptty.
|
|
7939
|
+
*
|
|
7940
|
+
* Specify the accountIds. For example: [`accountId1`,`accountId2`,`accountId3`]
|
|
7941
|
+
*
|
|
7942
|
+
* @generated from field: repeated string accounts = 3;
|
|
7943
|
+
*/
|
|
7944
|
+
accounts: string[];
|
|
7945
|
+
};
|
|
7946
|
+
|
|
7947
|
+
/**
|
|
7948
|
+
* Describes the message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting.
|
|
7949
|
+
* Use `create(SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSettingSchema)` to create a new message.
|
|
7950
|
+
*/
|
|
7951
|
+
export const SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
|
|
7952
|
+
messageDesc(file_billing_v1_billing, 208, 0);
|
|
7953
|
+
|
|
7954
|
+
/**
|
|
7955
|
+
* @generated from message blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest
|
|
7956
|
+
*/
|
|
7957
|
+
export type SetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest"> & {
|
|
7958
|
+
/**
|
|
7959
|
+
* Required. Internal Id of the child billing group.
|
|
7960
|
+
*
|
|
7961
|
+
* @generated from field: string internalId = 1;
|
|
7962
|
+
*/
|
|
7963
|
+
internalId: string;
|
|
7964
|
+
|
|
7965
|
+
/**
|
|
7966
|
+
* Required.
|
|
7967
|
+
*
|
|
7968
|
+
* Service discount id.
|
|
7969
|
+
*
|
|
7970
|
+
* @generated from field: string id = 2;
|
|
7971
|
+
*/
|
|
7972
|
+
id: string;
|
|
7973
|
+
};
|
|
7974
|
+
|
|
7975
|
+
/**
|
|
7976
|
+
* Describes the message blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest.
|
|
7977
|
+
* Use `create(SetChildBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
7978
|
+
*/
|
|
7979
|
+
export const SetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
7980
|
+
messageDesc(file_billing_v1_billing, 209);
|
|
7981
|
+
|
|
7982
|
+
/**
|
|
7983
|
+
* @generated from message blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest
|
|
7984
|
+
*/
|
|
7985
|
+
export type SetChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest"> & {
|
|
7986
|
+
/**
|
|
7987
|
+
* Required. child billing group's internal Id.
|
|
7988
|
+
*
|
|
7989
|
+
* @generated from field: string internalId = 1;
|
|
7990
|
+
*/
|
|
7991
|
+
internalId: string;
|
|
7992
|
+
|
|
7993
|
+
/**
|
|
7994
|
+
* Required.
|
|
7995
|
+
*
|
|
7996
|
+
* @generated from field: repeated blueapi.billing.v1.AccountServiceDiscounts accounts = 2;
|
|
7997
|
+
*/
|
|
7998
|
+
accounts: AccountServiceDiscounts[];
|
|
7999
|
+
};
|
|
8000
|
+
|
|
8001
|
+
/**
|
|
8002
|
+
* Describes the message blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest.
|
|
8003
|
+
* Use `create(SetChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
8004
|
+
*/
|
|
8005
|
+
export const SetChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8006
|
+
messageDesc(file_billing_v1_billing, 210);
|
|
8007
|
+
|
|
8008
|
+
/**
|
|
8009
|
+
* @generated from message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest
|
|
8010
|
+
*/
|
|
8011
|
+
export type GetChildBillingGroupCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest"> & {
|
|
8012
|
+
/**
|
|
8013
|
+
* Required. Internal Id
|
|
8014
|
+
*
|
|
8015
|
+
* @generated from field: string internalId = 1;
|
|
8016
|
+
*/
|
|
8017
|
+
internalId: string;
|
|
8018
|
+
|
|
8019
|
+
/**
|
|
8020
|
+
* Required. At the moment, `aws` is supported.
|
|
8021
|
+
*
|
|
8022
|
+
* @generated from field: string vendor = 2;
|
|
8023
|
+
*/
|
|
8024
|
+
vendor: string;
|
|
8025
|
+
};
|
|
8026
|
+
|
|
8027
|
+
/**
|
|
8028
|
+
* Describes the message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest.
|
|
8029
|
+
* Use `create(GetChildBillingGroupCustomizedBillingServiceRequestSchema)` to create a new message.
|
|
8030
|
+
*/
|
|
8031
|
+
export const GetChildBillingGroupCustomizedBillingServiceRequestSchema: GenMessage<GetChildBillingGroupCustomizedBillingServiceRequest> = /*@__PURE__*/
|
|
8032
|
+
messageDesc(file_billing_v1_billing, 211);
|
|
8033
|
+
|
|
8034
|
+
/**
|
|
8035
|
+
* @generated from message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceResponse
|
|
8036
|
+
*/
|
|
8037
|
+
export type GetChildBillingGroupCustomizedBillingServiceResponse = Message<"blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceResponse"> & {
|
|
8038
|
+
/**
|
|
8039
|
+
* Required. [blueapi.api.ripple.CustomizedBillingService.id]
|
|
8040
|
+
*
|
|
8041
|
+
* @generated from field: string id = 1;
|
|
8042
|
+
*/
|
|
8043
|
+
id: string;
|
|
8044
|
+
|
|
8045
|
+
/**
|
|
8046
|
+
* Required. vendor that applied to the CustomizedBillingService config.
|
|
8047
|
+
*
|
|
8048
|
+
* @generated from field: string vendor = 2;
|
|
8049
|
+
*/
|
|
8050
|
+
vendor: string;
|
|
8051
|
+
|
|
8052
|
+
/**
|
|
8053
|
+
* Required. [blueapi.api.ripple.ChargingTarget]
|
|
8054
|
+
*
|
|
8055
|
+
* @generated from field: blueapi.api.ripple.ChargingTarget chargingTarget = 3;
|
|
8056
|
+
*/
|
|
8057
|
+
chargingTarget: ChargingTarget;
|
|
8058
|
+
|
|
8059
|
+
/**
|
|
8060
|
+
* Optional. accounts that applied to the CustomizedBillingService config.
|
|
8061
|
+
*
|
|
8062
|
+
* @generated from field: repeated blueapi.api.Account accounts = 4;
|
|
8063
|
+
*/
|
|
8064
|
+
accounts: Account[];
|
|
8065
|
+
};
|
|
8066
|
+
|
|
8067
|
+
/**
|
|
8068
|
+
* Describes the message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceResponse.
|
|
8069
|
+
* Use `create(GetChildBillingGroupCustomizedBillingServiceResponseSchema)` to create a new message.
|
|
8070
|
+
*/
|
|
8071
|
+
export const GetChildBillingGroupCustomizedBillingServiceResponseSchema: GenMessage<GetChildBillingGroupCustomizedBillingServiceResponse> = /*@__PURE__*/
|
|
8072
|
+
messageDesc(file_billing_v1_billing, 212);
|
|
8073
|
+
|
|
8074
|
+
/**
|
|
8075
|
+
* @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest
|
|
8076
|
+
*/
|
|
8077
|
+
export type GetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest"> & {
|
|
8078
|
+
/**
|
|
8079
|
+
* Required. Child Billing Group Internal Id
|
|
8080
|
+
*
|
|
8081
|
+
* @generated from field: string internalId = 1;
|
|
8082
|
+
*/
|
|
8083
|
+
internalId: string;
|
|
8084
|
+
};
|
|
8085
|
+
|
|
8086
|
+
/**
|
|
8087
|
+
* Describes the message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest.
|
|
8088
|
+
* Use `create(GetChildBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
8089
|
+
*/
|
|
8090
|
+
export const GetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8091
|
+
messageDesc(file_billing_v1_billing, 213);
|
|
8092
|
+
|
|
8093
|
+
/**
|
|
8094
|
+
* @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse
|
|
8095
|
+
*/
|
|
8096
|
+
export type GetChildBillingGroupInvoiceServiceDiscountsResponse = Message<"blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse"> & {
|
|
8097
|
+
/**
|
|
8098
|
+
* Service discount id
|
|
8099
|
+
*
|
|
8100
|
+
* @generated from field: string id = 1;
|
|
8101
|
+
*/
|
|
8102
|
+
id: string;
|
|
8103
|
+
};
|
|
8104
|
+
|
|
8105
|
+
/**
|
|
8106
|
+
* Describes the message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse.
|
|
8107
|
+
* Use `create(GetChildBillingGroupInvoiceServiceDiscountsResponseSchema)` to create a new message.
|
|
8108
|
+
*/
|
|
8109
|
+
export const GetChildBillingGroupInvoiceServiceDiscountsResponseSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsResponse> = /*@__PURE__*/
|
|
8110
|
+
messageDesc(file_billing_v1_billing, 214);
|
|
8111
|
+
|
|
8112
|
+
/**
|
|
8113
|
+
* @generated from message blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest
|
|
8114
|
+
*/
|
|
8115
|
+
export type ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest"> & {
|
|
8116
|
+
/**
|
|
8117
|
+
* Required. Child Billing Group Internal Id
|
|
8118
|
+
*
|
|
8119
|
+
* @generated from field: string internalId = 1;
|
|
8120
|
+
*/
|
|
8121
|
+
internalId: string;
|
|
8122
|
+
};
|
|
8123
|
+
|
|
8124
|
+
/**
|
|
8125
|
+
* Describes the message blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest.
|
|
8126
|
+
* Use `create(ReadChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
8127
|
+
*/
|
|
8128
|
+
export const ReadChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema: GenMessage<ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8129
|
+
messageDesc(file_billing_v1_billing, 215);
|
|
8130
|
+
|
|
8131
|
+
/**
|
|
8132
|
+
* @generated from message blueapi.billing.v1.BulkCreateBillingGroupRequest
|
|
8133
|
+
*/
|
|
8134
|
+
export type BulkCreateBillingGroupRequest = Message<"blueapi.billing.v1.BulkCreateBillingGroupRequest"> & {
|
|
8135
|
+
/**
|
|
8136
|
+
* Required. The cloud vendor for all billing groups in this CSV.
|
|
8137
|
+
* Must be one of: aws, azure, gcp.
|
|
8138
|
+
*
|
|
8139
|
+
* @generated from field: string vendor = 5;
|
|
8140
|
+
*/
|
|
8141
|
+
vendor: string;
|
|
8142
|
+
|
|
8143
|
+
/**
|
|
8144
|
+
* Required. The CSV file content as bytes.
|
|
8145
|
+
*
|
|
8146
|
+
* @generated from field: bytes csvContent = 1;
|
|
8147
|
+
*/
|
|
8148
|
+
csvContent: Uint8Array;
|
|
8149
|
+
|
|
8150
|
+
/**
|
|
8151
|
+
* Optional. The delimiter used in the CSV file. Defaults to comma (,).
|
|
8152
|
+
*
|
|
8153
|
+
* @generated from field: string delimiter = 2;
|
|
8154
|
+
*/
|
|
8155
|
+
delimiter: string;
|
|
8156
|
+
|
|
8157
|
+
/**
|
|
8158
|
+
* Optional. Whether the CSV file has a header row. Defaults to true.
|
|
8159
|
+
*
|
|
8160
|
+
* @generated from field: bool hasHeader = 3;
|
|
8161
|
+
*/
|
|
8162
|
+
hasHeader: boolean;
|
|
8163
|
+
|
|
8164
|
+
/**
|
|
8165
|
+
* Optional. If true, validate the CSV and check for errors without actually creating billing groups.
|
|
8166
|
+
* Useful for validating CSV format and data before performing the actual bulk creation.
|
|
8167
|
+
*
|
|
8168
|
+
* @generated from field: bool dryRun = 4;
|
|
8169
|
+
*/
|
|
8170
|
+
dryRun: boolean;
|
|
8171
|
+
};
|
|
8172
|
+
|
|
8173
|
+
/**
|
|
8174
|
+
* Describes the message blueapi.billing.v1.BulkCreateBillingGroupRequest.
|
|
8175
|
+
* Use `create(BulkCreateBillingGroupRequestSchema)` to create a new message.
|
|
8176
|
+
*/
|
|
8177
|
+
export const BulkCreateBillingGroupRequestSchema: GenMessage<BulkCreateBillingGroupRequest> = /*@__PURE__*/
|
|
8178
|
+
messageDesc(file_billing_v1_billing, 216);
|
|
8179
|
+
|
|
8180
|
+
/**
|
|
8181
|
+
* @generated from message blueapi.billing.v1.BulkCreateBillingGroupError
|
|
8182
|
+
*/
|
|
8183
|
+
export type BulkCreateBillingGroupError = Message<"blueapi.billing.v1.BulkCreateBillingGroupError"> & {
|
|
8184
|
+
/**
|
|
8185
|
+
* The index of the row that failed (zero-based).
|
|
8186
|
+
*
|
|
8187
|
+
* @generated from field: int32 index = 1;
|
|
8188
|
+
*/
|
|
8189
|
+
index: number;
|
|
8190
|
+
|
|
8191
|
+
/**
|
|
8192
|
+
* The billing group ID that failed to create.
|
|
8193
|
+
*
|
|
8194
|
+
* @generated from field: string billingGroupId = 2;
|
|
8195
|
+
*/
|
|
8196
|
+
billingGroupId: string;
|
|
8197
|
+
|
|
8198
|
+
/**
|
|
8199
|
+
* Error message.
|
|
8200
|
+
*
|
|
8201
|
+
* @generated from field: string message = 3;
|
|
8202
|
+
*/
|
|
8203
|
+
message: string;
|
|
8204
|
+
};
|
|
8205
|
+
|
|
8206
|
+
/**
|
|
8207
|
+
* Describes the message blueapi.billing.v1.BulkCreateBillingGroupError.
|
|
8208
|
+
* Use `create(BulkCreateBillingGroupErrorSchema)` to create a new message.
|
|
8209
|
+
*/
|
|
8210
|
+
export const BulkCreateBillingGroupErrorSchema: GenMessage<BulkCreateBillingGroupError> = /*@__PURE__*/
|
|
8211
|
+
messageDesc(file_billing_v1_billing, 217);
|
|
8212
|
+
|
|
8213
|
+
/**
|
|
8214
|
+
* Metadata for the BulkCreateBillingGroup long-running operation.
|
|
8215
|
+
* Stored in protos.Operation.metadata.
|
|
8216
|
+
*
|
|
8217
|
+
* @generated from message blueapi.billing.v1.BulkCreateBillingGroupMetadata
|
|
8218
|
+
*/
|
|
8219
|
+
export type BulkCreateBillingGroupMetadata = Message<"blueapi.billing.v1.BulkCreateBillingGroupMetadata"> & {
|
|
8220
|
+
/**
|
|
8221
|
+
* The current status: "pending", "processing", "completed", "partial_failed", "failed".
|
|
8222
|
+
*
|
|
8223
|
+
* @generated from field: string status = 1;
|
|
8224
|
+
*/
|
|
8225
|
+
status: string;
|
|
8226
|
+
|
|
8227
|
+
/**
|
|
8228
|
+
* Total number of billing groups to create.
|
|
8229
|
+
*
|
|
8230
|
+
* @generated from field: int32 totalCount = 2;
|
|
8231
|
+
*/
|
|
8232
|
+
totalCount: number;
|
|
8233
|
+
|
|
8234
|
+
/**
|
|
8235
|
+
* Number of billing groups processed so far.
|
|
8236
|
+
*
|
|
8237
|
+
* @generated from field: int32 processedCount = 3;
|
|
8238
|
+
*/
|
|
8239
|
+
processedCount: number;
|
|
8240
|
+
|
|
8241
|
+
/**
|
|
8242
|
+
* Number of billing groups successfully created.
|
|
8243
|
+
*
|
|
8244
|
+
* @generated from field: int32 successCount = 4;
|
|
8245
|
+
*/
|
|
8246
|
+
successCount: number;
|
|
8247
|
+
|
|
8248
|
+
/**
|
|
8249
|
+
* Number of billing groups that failed.
|
|
8250
|
+
*
|
|
8251
|
+
* @generated from field: int32 failureCount = 5;
|
|
8252
|
+
*/
|
|
8253
|
+
failureCount: number;
|
|
8254
|
+
|
|
8255
|
+
/**
|
|
8256
|
+
* Details of failed billing groups.
|
|
8257
|
+
*
|
|
8258
|
+
* @generated from field: repeated blueapi.billing.v1.BulkCreateBillingGroupError errors = 6;
|
|
8259
|
+
*/
|
|
8260
|
+
errors: BulkCreateBillingGroupError[];
|
|
8261
|
+
|
|
8262
|
+
/**
|
|
8263
|
+
* Job start timestamp (RFC 3339).
|
|
8264
|
+
*
|
|
8265
|
+
* @generated from field: string startTime = 7;
|
|
8266
|
+
*/
|
|
8267
|
+
startTime: string;
|
|
8268
|
+
|
|
8269
|
+
/**
|
|
8270
|
+
* Job end timestamp. Empty if still running.
|
|
8271
|
+
*
|
|
8272
|
+
* @generated from field: string endTime = 8;
|
|
8273
|
+
*/
|
|
8274
|
+
endTime: string;
|
|
8275
|
+
|
|
8276
|
+
/**
|
|
8277
|
+
* Per-row normalized Invoice Settings results, populated for dryRun requests and for
|
|
8278
|
+
* completed executions. Reused by BulkUpdateBillingGroupMetadata so Dry-run and execution
|
|
8279
|
+
* for both Create and Update share one row-result shape.
|
|
8280
|
+
*
|
|
8281
|
+
* @generated from field: repeated blueapi.billing.v1.BulkBillingGroupInvoiceSettingsRow rows = 9;
|
|
8282
|
+
*/
|
|
8283
|
+
rows: BulkBillingGroupInvoiceSettingsRow[];
|
|
8284
|
+
};
|
|
8285
|
+
|
|
8286
|
+
/**
|
|
8287
|
+
* Describes the message blueapi.billing.v1.BulkCreateBillingGroupMetadata.
|
|
8288
|
+
* Use `create(BulkCreateBillingGroupMetadataSchema)` to create a new message.
|
|
8289
|
+
*/
|
|
8290
|
+
export const BulkCreateBillingGroupMetadataSchema: GenMessage<BulkCreateBillingGroupMetadata> = /*@__PURE__*/
|
|
8291
|
+
messageDesc(file_billing_v1_billing, 218);
|
|
8292
|
+
|
|
8293
|
+
/**
|
|
8294
|
+
* A single Invoice Settings field's normalized value together with where that value came from.
|
|
8295
|
+
*
|
|
8296
|
+
* @generated from message blueapi.billing.v1.NormalizedInvoiceSettingField
|
|
8297
|
+
*/
|
|
8298
|
+
export type NormalizedInvoiceSettingField = Message<"blueapi.billing.v1.NormalizedInvoiceSettingField"> & {
|
|
8299
|
+
/**
|
|
8300
|
+
* Canonical string-encoded normalized value. Empty if the setting has no value.
|
|
8301
|
+
*
|
|
8302
|
+
* @generated from field: string value = 1;
|
|
8303
|
+
*/
|
|
8304
|
+
value: string;
|
|
8305
|
+
|
|
8306
|
+
/**
|
|
8307
|
+
* Where this value came from. One of: "uploaded", "existing", "default_derived",
|
|
8308
|
+
* "org_derived", "connection_resolved". "existing" means the value was carried
|
|
8309
|
+
* forward unchanged from the billing group's current stored state (the common case
|
|
8310
|
+
* for a blank Update CSV cell — see BulkUpdateBillingGroup's merge semantics).
|
|
8311
|
+
* Omitted (empty) if the server cannot determine a classification.
|
|
8312
|
+
* A field the Bulk CSV schema does not accept as an input column (e.g. support_amount_target)
|
|
8313
|
+
* must never be classified as "uploaded".
|
|
8314
|
+
*
|
|
8315
|
+
* @generated from field: string source = 2;
|
|
8316
|
+
*/
|
|
8317
|
+
source: string;
|
|
8318
|
+
};
|
|
8319
|
+
|
|
8320
|
+
/**
|
|
8321
|
+
* Describes the message blueapi.billing.v1.NormalizedInvoiceSettingField.
|
|
8322
|
+
* Use `create(NormalizedInvoiceSettingFieldSchema)` to create a new message.
|
|
8323
|
+
*/
|
|
8324
|
+
export const NormalizedInvoiceSettingFieldSchema: GenMessage<NormalizedInvoiceSettingField> = /*@__PURE__*/
|
|
8325
|
+
messageDesc(file_billing_v1_billing, 219);
|
|
8326
|
+
|
|
8327
|
+
/**
|
|
8328
|
+
* Server-normalized Invoice Settings for a single bulk row, as they will be (Dry-run) or were
|
|
8329
|
+
* (execution) applied. Shared by BulkCreateBillingGroup and BulkUpdateBillingGroup results.
|
|
8330
|
+
*
|
|
8331
|
+
* @generated from message blueapi.billing.v1.NormalizedInvoiceSettings
|
|
8332
|
+
*/
|
|
8333
|
+
export type NormalizedInvoiceSettings = Message<"blueapi.billing.v1.NormalizedInvoiceSettings"> & {
|
|
8334
|
+
/**
|
|
8335
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField calcType = 1;
|
|
8336
|
+
*/
|
|
8337
|
+
calcType?: NormalizedInvoiceSettingField;
|
|
8338
|
+
|
|
8339
|
+
/**
|
|
8340
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField displayCost = 2;
|
|
8341
|
+
*/
|
|
8342
|
+
displayCost?: NormalizedInvoiceSettingField;
|
|
8343
|
+
|
|
8344
|
+
/**
|
|
8345
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportAmountTarget = 3;
|
|
8346
|
+
*/
|
|
8347
|
+
supportAmountTarget?: NormalizedInvoiceSettingField;
|
|
8348
|
+
|
|
8349
|
+
/**
|
|
8350
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportFeeCalcTarget = 4;
|
|
8351
|
+
*/
|
|
8352
|
+
supportFeeCalcTarget?: NormalizedInvoiceSettingField;
|
|
8190
8353
|
|
|
8191
|
-
/**
|
|
8192
|
-
* @generated from message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest
|
|
8193
|
-
*/
|
|
8194
|
-
export type SetChildBillingGroupCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest"> & {
|
|
8195
8354
|
/**
|
|
8196
|
-
*
|
|
8197
|
-
*
|
|
8198
|
-
* @generated from field: string internalId = 1;
|
|
8355
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionFeeCalcTarget = 5;
|
|
8199
8356
|
*/
|
|
8200
|
-
|
|
8357
|
+
substitutionFeeCalcTarget?: NormalizedInvoiceSettingField;
|
|
8201
8358
|
|
|
8202
8359
|
/**
|
|
8203
|
-
*
|
|
8204
|
-
*
|
|
8205
|
-
* @generated from field: string vendor = 2;
|
|
8360
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField invoiceTemplate = 6;
|
|
8206
8361
|
*/
|
|
8207
|
-
|
|
8362
|
+
invoiceTemplate?: NormalizedInvoiceSettingField;
|
|
8208
8363
|
|
|
8209
8364
|
/**
|
|
8210
|
-
*
|
|
8211
|
-
*
|
|
8212
|
-
* @generated from field: string rootId = 3;
|
|
8365
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField customService = 7;
|
|
8213
8366
|
*/
|
|
8214
|
-
|
|
8367
|
+
customService?: NormalizedInvoiceSettingField;
|
|
8215
8368
|
|
|
8216
8369
|
/**
|
|
8217
|
-
*
|
|
8370
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField serviceDiscounts = 8;
|
|
8371
|
+
*/
|
|
8372
|
+
serviceDiscounts?: NormalizedInvoiceSettingField;
|
|
8373
|
+
|
|
8374
|
+
/**
|
|
8375
|
+
* Complete per-vendor normalized invoice settings. These fields are additive;
|
|
8376
|
+
* fields 1-8 above retain their original numbers.
|
|
8218
8377
|
*
|
|
8219
|
-
* @generated from field:
|
|
8378
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField currency = 9;
|
|
8220
8379
|
*/
|
|
8221
|
-
|
|
8222
|
-
};
|
|
8380
|
+
currency?: NormalizedInvoiceSettingField;
|
|
8223
8381
|
|
|
8224
|
-
/**
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
export const SetChildBillingGroupCustomizedBillingServiceRequestSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest> = /*@__PURE__*/
|
|
8229
|
-
messageDesc(file_billing_v1_billing, 214);
|
|
8382
|
+
/**
|
|
8383
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField taxRate = 10;
|
|
8384
|
+
*/
|
|
8385
|
+
taxRate?: NormalizedInvoiceSettingField;
|
|
8230
8386
|
|
|
8231
|
-
/**
|
|
8232
|
-
* CustomizedBillingServiceBillingSetting
|
|
8233
|
-
*
|
|
8234
|
-
* @generated from message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting
|
|
8235
|
-
*/
|
|
8236
|
-
export type SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting = Message<"blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest.CustomizedBillingServiceBillingSetting"> & {
|
|
8237
8387
|
/**
|
|
8238
|
-
*
|
|
8239
|
-
*
|
|
8240
|
-
* @generated from field: string id = 1;
|
|
8388
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField discountRate = 11;
|
|
8241
8389
|
*/
|
|
8242
|
-
|
|
8390
|
+
discountRate?: NormalizedInvoiceSettingField;
|
|
8243
8391
|
|
|
8244
8392
|
/**
|
|
8245
|
-
*
|
|
8246
|
-
*
|
|
8247
|
-
* @generated from field: blueapi.api.ripple.ChargingTarget chargingTarget = 2;
|
|
8393
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField discountTargetUsage = 12;
|
|
8248
8394
|
*/
|
|
8249
|
-
|
|
8395
|
+
discountTargetUsage?: NormalizedInvoiceSettingField;
|
|
8250
8396
|
|
|
8251
8397
|
/**
|
|
8252
|
-
*
|
|
8253
|
-
*
|
|
8254
|
-
* Specify the accountIds. For example: [`accountId1`,`accountId2`,`accountId3`]
|
|
8255
|
-
*
|
|
8256
|
-
* @generated from field: repeated string accounts = 3;
|
|
8398
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField discountCalcLogic = 13;
|
|
8257
8399
|
*/
|
|
8258
|
-
|
|
8259
|
-
};
|
|
8400
|
+
discountCalcLogic?: NormalizedInvoiceSettingField;
|
|
8260
8401
|
|
|
8261
|
-
/**
|
|
8262
|
-
|
|
8263
|
-
|
|
8264
|
-
|
|
8265
|
-
export const SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
|
|
8266
|
-
messageDesc(file_billing_v1_billing, 214, 0);
|
|
8402
|
+
/**
|
|
8403
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionFee = 14;
|
|
8404
|
+
*/
|
|
8405
|
+
substitutionFee?: NormalizedInvoiceSettingField;
|
|
8267
8406
|
|
|
8268
|
-
/**
|
|
8269
|
-
* @generated from message blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest
|
|
8270
|
-
*/
|
|
8271
|
-
export type SetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest"> & {
|
|
8272
8407
|
/**
|
|
8273
|
-
*
|
|
8274
|
-
*
|
|
8275
|
-
* @generated from field: string internalId = 1;
|
|
8408
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionRate = 15;
|
|
8276
8409
|
*/
|
|
8277
|
-
|
|
8410
|
+
substitutionRate?: NormalizedInvoiceSettingField;
|
|
8278
8411
|
|
|
8279
8412
|
/**
|
|
8280
|
-
*
|
|
8281
|
-
*
|
|
8282
|
-
* Service discount id.
|
|
8283
|
-
*
|
|
8284
|
-
* @generated from field: string id = 2;
|
|
8413
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionFix = 16;
|
|
8285
8414
|
*/
|
|
8286
|
-
|
|
8287
|
-
};
|
|
8415
|
+
substitutionFix?: NormalizedInvoiceSettingField;
|
|
8288
8416
|
|
|
8289
|
-
/**
|
|
8290
|
-
|
|
8291
|
-
|
|
8292
|
-
|
|
8293
|
-
export const SetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8294
|
-
messageDesc(file_billing_v1_billing, 215);
|
|
8417
|
+
/**
|
|
8418
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionFeeTargetUsage = 17;
|
|
8419
|
+
*/
|
|
8420
|
+
substitutionFeeTargetUsage?: NormalizedInvoiceSettingField;
|
|
8295
8421
|
|
|
8296
|
-
/**
|
|
8297
|
-
* @generated from message blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest
|
|
8298
|
-
*/
|
|
8299
|
-
export type SetChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest"> & {
|
|
8300
8422
|
/**
|
|
8301
|
-
*
|
|
8302
|
-
*
|
|
8303
|
-
* @generated from field: string internalId = 1;
|
|
8423
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField substitutionFeeCalcType = 18;
|
|
8304
8424
|
*/
|
|
8305
|
-
|
|
8425
|
+
substitutionFeeCalcType?: NormalizedInvoiceSettingField;
|
|
8306
8426
|
|
|
8307
8427
|
/**
|
|
8308
|
-
*
|
|
8309
|
-
*
|
|
8310
|
-
* @generated from field: repeated blueapi.billing.v1.AccountServiceDiscounts accounts = 2;
|
|
8428
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportFee = 19;
|
|
8311
8429
|
*/
|
|
8312
|
-
|
|
8313
|
-
};
|
|
8430
|
+
supportFee?: NormalizedInvoiceSettingField;
|
|
8314
8431
|
|
|
8315
|
-
/**
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
|
|
8319
|
-
export const SetChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8320
|
-
messageDesc(file_billing_v1_billing, 216);
|
|
8432
|
+
/**
|
|
8433
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportRate = 20;
|
|
8434
|
+
*/
|
|
8435
|
+
supportRate?: NormalizedInvoiceSettingField;
|
|
8321
8436
|
|
|
8322
|
-
/**
|
|
8323
|
-
* @generated from message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest
|
|
8324
|
-
*/
|
|
8325
|
-
export type GetChildBillingGroupCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest"> & {
|
|
8326
8437
|
/**
|
|
8327
|
-
*
|
|
8328
|
-
*
|
|
8329
|
-
* @generated from field: string internalId = 1;
|
|
8438
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportFix = 21;
|
|
8330
8439
|
*/
|
|
8331
|
-
|
|
8440
|
+
supportFix?: NormalizedInvoiceSettingField;
|
|
8332
8441
|
|
|
8333
8442
|
/**
|
|
8334
|
-
*
|
|
8335
|
-
*
|
|
8336
|
-
* @generated from field: string vendor = 2;
|
|
8443
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettingField supportFeeAdjustment = 22;
|
|
8337
8444
|
*/
|
|
8338
|
-
|
|
8445
|
+
supportFeeAdjustment?: NormalizedInvoiceSettingField;
|
|
8339
8446
|
};
|
|
8340
8447
|
|
|
8341
8448
|
/**
|
|
8342
|
-
* Describes the message blueapi.billing.v1.
|
|
8343
|
-
* Use `create(
|
|
8449
|
+
* Describes the message blueapi.billing.v1.NormalizedInvoiceSettings.
|
|
8450
|
+
* Use `create(NormalizedInvoiceSettingsSchema)` to create a new message.
|
|
8344
8451
|
*/
|
|
8345
|
-
export const
|
|
8346
|
-
messageDesc(file_billing_v1_billing,
|
|
8452
|
+
export const NormalizedInvoiceSettingsSchema: GenMessage<NormalizedInvoiceSettings> = /*@__PURE__*/
|
|
8453
|
+
messageDesc(file_billing_v1_billing, 220);
|
|
8347
8454
|
|
|
8348
8455
|
/**
|
|
8349
|
-
*
|
|
8456
|
+
* Per-row result for a bulk Create or Update Invoice Settings operation.
|
|
8457
|
+
*
|
|
8458
|
+
* @generated from message blueapi.billing.v1.BulkBillingGroupInvoiceSettingsRow
|
|
8350
8459
|
*/
|
|
8351
|
-
export type
|
|
8460
|
+
export type BulkBillingGroupInvoiceSettingsRow = Message<"blueapi.billing.v1.BulkBillingGroupInvoiceSettingsRow"> & {
|
|
8352
8461
|
/**
|
|
8353
|
-
*
|
|
8462
|
+
* The canonical logical data-row index in the original CSV (zero-based,
|
|
8463
|
+
* excluding the header when hasHeader is true). This index is preserved for
|
|
8464
|
+
* valid rows, parse errors, and worker results; it is never compressed after
|
|
8465
|
+
* a malformed or missing row.
|
|
8354
8466
|
*
|
|
8355
|
-
* @generated from field:
|
|
8467
|
+
* @generated from field: int32 index = 1;
|
|
8356
8468
|
*/
|
|
8357
|
-
|
|
8469
|
+
index: number;
|
|
8358
8470
|
|
|
8359
8471
|
/**
|
|
8360
|
-
*
|
|
8472
|
+
* The billing group ID. For Update, the resolved existing billing group. For Create,
|
|
8473
|
+
* populated once known (empty for a row that has not yet been processed on a dryRun).
|
|
8361
8474
|
*
|
|
8362
|
-
* @generated from field: string
|
|
8475
|
+
* @generated from field: string billingGroupId = 2;
|
|
8363
8476
|
*/
|
|
8364
|
-
|
|
8477
|
+
billingGroupId: string;
|
|
8365
8478
|
|
|
8366
8479
|
/**
|
|
8367
|
-
*
|
|
8480
|
+
* Row status: "valid" (Dry-run row ready), "invalid" (parse/validation failure),
|
|
8481
|
+
* "not_found" (referenced billing group does not exist), "updated" (execution
|
|
8482
|
+
* succeeded), "failed" (row-level failure during execution). "created" is reserved
|
|
8483
|
+
* for the Create side of this shared row-result shape.
|
|
8368
8484
|
*
|
|
8369
|
-
* @generated from field:
|
|
8485
|
+
* @generated from field: string status = 3;
|
|
8370
8486
|
*/
|
|
8371
|
-
|
|
8487
|
+
status: string;
|
|
8372
8488
|
|
|
8373
8489
|
/**
|
|
8374
|
-
*
|
|
8490
|
+
* Human-readable error message(s) for this row, if any.
|
|
8375
8491
|
*
|
|
8376
|
-
* @generated from field: repeated
|
|
8492
|
+
* @generated from field: repeated string errors = 4;
|
|
8377
8493
|
*/
|
|
8378
|
-
|
|
8379
|
-
};
|
|
8380
|
-
|
|
8381
|
-
/**
|
|
8382
|
-
* Describes the message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceResponse.
|
|
8383
|
-
* Use `create(GetChildBillingGroupCustomizedBillingServiceResponseSchema)` to create a new message.
|
|
8384
|
-
*/
|
|
8385
|
-
export const GetChildBillingGroupCustomizedBillingServiceResponseSchema: GenMessage<GetChildBillingGroupCustomizedBillingServiceResponse> = /*@__PURE__*/
|
|
8386
|
-
messageDesc(file_billing_v1_billing, 218);
|
|
8494
|
+
errors: string[];
|
|
8387
8495
|
|
|
8388
|
-
/**
|
|
8389
|
-
* @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest
|
|
8390
|
-
*/
|
|
8391
|
-
export type GetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest"> & {
|
|
8392
8496
|
/**
|
|
8393
|
-
*
|
|
8497
|
+
* The normalized Invoice Settings this row will produce (dryRun) or produced (execution).
|
|
8394
8498
|
*
|
|
8395
|
-
* @generated from field:
|
|
8499
|
+
* @generated from field: blueapi.billing.v1.NormalizedInvoiceSettings normalizedSettings = 5;
|
|
8396
8500
|
*/
|
|
8397
|
-
|
|
8398
|
-
};
|
|
8399
|
-
|
|
8400
|
-
/**
|
|
8401
|
-
* Describes the message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest.
|
|
8402
|
-
* Use `create(GetChildBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
|
|
8403
|
-
*/
|
|
8404
|
-
export const GetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
|
|
8405
|
-
messageDesc(file_billing_v1_billing, 219);
|
|
8501
|
+
normalizedSettings?: NormalizedInvoiceSettings;
|
|
8406
8502
|
|
|
8407
|
-
/**
|
|
8408
|
-
* @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse
|
|
8409
|
-
*/
|
|
8410
|
-
export type GetChildBillingGroupInvoiceServiceDiscountsResponse = Message<"blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse"> & {
|
|
8411
8503
|
/**
|
|
8412
|
-
*
|
|
8504
|
+
* Explicit row disposition. Values: "ready" (Dry-run row will update), "invalid"
|
|
8505
|
+
* (parse/validation failure), "not_found" (referenced billing group does not exist),
|
|
8506
|
+
* "connection_resolution_failed" (service-discount connection resolution failed),
|
|
8507
|
+
* "unsupported_field" (a requested setting is not supported, e.g. non-blank
|
|
8508
|
+
* custom_service), "updated" (execution succeeded), "failed" (any other row-level
|
|
8509
|
+
* execution failure). It is separate from status so a terminal operation status
|
|
8510
|
+
* cannot be mistaken for row success.
|
|
8413
8511
|
*
|
|
8414
|
-
* @generated from field: string
|
|
8512
|
+
* @generated from field: string disposition = 6;
|
|
8415
8513
|
*/
|
|
8416
|
-
|
|
8417
|
-
};
|
|
8418
|
-
|
|
8419
|
-
/**
|
|
8420
|
-
* Describes the message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse.
|
|
8421
|
-
* Use `create(GetChildBillingGroupInvoiceServiceDiscountsResponseSchema)` to create a new message.
|
|
8422
|
-
*/
|
|
8423
|
-
export const GetChildBillingGroupInvoiceServiceDiscountsResponseSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsResponse> = /*@__PURE__*/
|
|
8424
|
-
messageDesc(file_billing_v1_billing, 220);
|
|
8514
|
+
disposition: string;
|
|
8425
8515
|
|
|
8426
|
-
/**
|
|
8427
|
-
* @generated from message blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest
|
|
8428
|
-
*/
|
|
8429
|
-
export type ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest"> & {
|
|
8430
8516
|
/**
|
|
8431
|
-
*
|
|
8517
|
+
* One-based physical CSV line number when known, including a header line.
|
|
8518
|
+
* Zero means the line number was not available.
|
|
8432
8519
|
*
|
|
8433
|
-
* @generated from field:
|
|
8520
|
+
* @generated from field: int32 csvLineNumber = 7;
|
|
8434
8521
|
*/
|
|
8435
|
-
|
|
8522
|
+
csvLineNumber: number;
|
|
8436
8523
|
};
|
|
8437
8524
|
|
|
8438
8525
|
/**
|
|
8439
|
-
* Describes the message blueapi.billing.v1.
|
|
8440
|
-
* Use `create(
|
|
8526
|
+
* Describes the message blueapi.billing.v1.BulkBillingGroupInvoiceSettingsRow.
|
|
8527
|
+
* Use `create(BulkBillingGroupInvoiceSettingsRowSchema)` to create a new message.
|
|
8441
8528
|
*/
|
|
8442
|
-
export const
|
|
8529
|
+
export const BulkBillingGroupInvoiceSettingsRowSchema: GenMessage<BulkBillingGroupInvoiceSettingsRow> = /*@__PURE__*/
|
|
8443
8530
|
messageDesc(file_billing_v1_billing, 221);
|
|
8444
8531
|
|
|
8445
8532
|
/**
|
|
8446
|
-
* @generated from message blueapi.billing.v1.
|
|
8533
|
+
* @generated from message blueapi.billing.v1.BulkUpdateBillingGroupRequest
|
|
8447
8534
|
*/
|
|
8448
|
-
export type
|
|
8535
|
+
export type BulkUpdateBillingGroupRequest = Message<"blueapi.billing.v1.BulkUpdateBillingGroupRequest"> & {
|
|
8449
8536
|
/**
|
|
8450
8537
|
* Required. The cloud vendor for all billing groups in this CSV.
|
|
8451
8538
|
* Must be one of: aws, azure, gcp.
|
|
@@ -8469,15 +8556,21 @@ export type BulkCreateBillingGroupRequest = Message<"blueapi.billing.v1.BulkCrea
|
|
|
8469
8556
|
delimiter: string;
|
|
8470
8557
|
|
|
8471
8558
|
/**
|
|
8472
|
-
* Optional. Whether the CSV
|
|
8559
|
+
* Optional. Whether the first CSV line names the columns. When true, the first
|
|
8560
|
+
* line is read as a header and columns are matched by name. When false OR omitted
|
|
8561
|
+
* (proto3 scalar default), the CSV is interpreted using the canonical bulk-update
|
|
8562
|
+
* column order (the same order as the downloadable template, headerless).
|
|
8563
|
+
* Callers SHOULD set this field explicitly. Unlike BulkCreateBillingGroup — which
|
|
8564
|
+
* always interprets the first CSV line as a header — Bulk Update honors this field
|
|
8565
|
+
* as given, and the value is preserved on the async execution payload.
|
|
8473
8566
|
*
|
|
8474
8567
|
* @generated from field: bool hasHeader = 3;
|
|
8475
8568
|
*/
|
|
8476
8569
|
hasHeader: boolean;
|
|
8477
8570
|
|
|
8478
8571
|
/**
|
|
8479
|
-
* Optional. If true, validate the CSV and
|
|
8480
|
-
*
|
|
8572
|
+
* Optional. If true, validate the CSV and resolve/merge against existing billing group
|
|
8573
|
+
* state, returning the normalized result, without persisting any change.
|
|
8481
8574
|
*
|
|
8482
8575
|
* @generated from field: bool dryRun = 4;
|
|
8483
8576
|
*/
|
|
@@ -8485,25 +8578,28 @@ export type BulkCreateBillingGroupRequest = Message<"blueapi.billing.v1.BulkCrea
|
|
|
8485
8578
|
};
|
|
8486
8579
|
|
|
8487
8580
|
/**
|
|
8488
|
-
* Describes the message blueapi.billing.v1.
|
|
8489
|
-
* Use `create(
|
|
8581
|
+
* Describes the message blueapi.billing.v1.BulkUpdateBillingGroupRequest.
|
|
8582
|
+
* Use `create(BulkUpdateBillingGroupRequestSchema)` to create a new message.
|
|
8490
8583
|
*/
|
|
8491
|
-
export const
|
|
8584
|
+
export const BulkUpdateBillingGroupRequestSchema: GenMessage<BulkUpdateBillingGroupRequest> = /*@__PURE__*/
|
|
8492
8585
|
messageDesc(file_billing_v1_billing, 222);
|
|
8493
8586
|
|
|
8494
8587
|
/**
|
|
8495
|
-
* @generated from message blueapi.billing.v1.
|
|
8588
|
+
* @generated from message blueapi.billing.v1.BulkUpdateBillingGroupError
|
|
8496
8589
|
*/
|
|
8497
|
-
export type
|
|
8590
|
+
export type BulkUpdateBillingGroupError = Message<"blueapi.billing.v1.BulkUpdateBillingGroupError"> & {
|
|
8498
8591
|
/**
|
|
8499
|
-
* The index of the row
|
|
8592
|
+
* The canonical logical data-row index of the failed row (zero-based, excluding
|
|
8593
|
+
* the header line when hasHeader is true). Same definition as
|
|
8594
|
+
* BulkBillingGroupInvoiceSettingsRow.index: preserved for parse errors and worker
|
|
8595
|
+
* results, never compressed after a malformed or missing row.
|
|
8500
8596
|
*
|
|
8501
8597
|
* @generated from field: int32 index = 1;
|
|
8502
8598
|
*/
|
|
8503
8599
|
index: number;
|
|
8504
8600
|
|
|
8505
8601
|
/**
|
|
8506
|
-
* The billing group ID
|
|
8602
|
+
* The billing group ID from the failed row, if present in the CSV.
|
|
8507
8603
|
*
|
|
8508
8604
|
* @generated from field: string billingGroupId = 2;
|
|
8509
8605
|
*/
|
|
@@ -8515,22 +8611,33 @@ export type BulkCreateBillingGroupError = Message<"blueapi.billing.v1.BulkCreate
|
|
|
8515
8611
|
* @generated from field: string message = 3;
|
|
8516
8612
|
*/
|
|
8517
8613
|
message: string;
|
|
8614
|
+
|
|
8615
|
+
/**
|
|
8616
|
+
* Failure reason code: "not_found" (billing group does not exist),
|
|
8617
|
+
* "validation_failed" (CSV parse or validation failure),
|
|
8618
|
+
* "connection_resolution_failed" (service-discount connection resolution failed),
|
|
8619
|
+
* or "unsupported_field" (a requested setting is not supported, e.g. non-blank
|
|
8620
|
+
* custom_service).
|
|
8621
|
+
*
|
|
8622
|
+
* @generated from field: string reason = 4;
|
|
8623
|
+
*/
|
|
8624
|
+
reason: string;
|
|
8518
8625
|
};
|
|
8519
8626
|
|
|
8520
8627
|
/**
|
|
8521
|
-
* Describes the message blueapi.billing.v1.
|
|
8522
|
-
* Use `create(
|
|
8628
|
+
* Describes the message blueapi.billing.v1.BulkUpdateBillingGroupError.
|
|
8629
|
+
* Use `create(BulkUpdateBillingGroupErrorSchema)` to create a new message.
|
|
8523
8630
|
*/
|
|
8524
|
-
export const
|
|
8631
|
+
export const BulkUpdateBillingGroupErrorSchema: GenMessage<BulkUpdateBillingGroupError> = /*@__PURE__*/
|
|
8525
8632
|
messageDesc(file_billing_v1_billing, 223);
|
|
8526
8633
|
|
|
8527
8634
|
/**
|
|
8528
|
-
* Metadata for the
|
|
8635
|
+
* Metadata for the BulkUpdateBillingGroup long-running operation.
|
|
8529
8636
|
* Stored in protos.Operation.metadata.
|
|
8530
8637
|
*
|
|
8531
|
-
* @generated from message blueapi.billing.v1.
|
|
8638
|
+
* @generated from message blueapi.billing.v1.BulkUpdateBillingGroupMetadata
|
|
8532
8639
|
*/
|
|
8533
|
-
export type
|
|
8640
|
+
export type BulkUpdateBillingGroupMetadata = Message<"blueapi.billing.v1.BulkUpdateBillingGroupMetadata"> & {
|
|
8534
8641
|
/**
|
|
8535
8642
|
* The current status: "pending", "processing", "completed", "partial_failed", "failed".
|
|
8536
8643
|
*
|
|
@@ -8539,39 +8646,39 @@ export type BulkCreateBillingGroupMetadata = Message<"blueapi.billing.v1.BulkCre
|
|
|
8539
8646
|
status: string;
|
|
8540
8647
|
|
|
8541
8648
|
/**
|
|
8542
|
-
* Total number of
|
|
8649
|
+
* Total number of rows to process.
|
|
8543
8650
|
*
|
|
8544
8651
|
* @generated from field: int32 totalCount = 2;
|
|
8545
8652
|
*/
|
|
8546
8653
|
totalCount: number;
|
|
8547
8654
|
|
|
8548
8655
|
/**
|
|
8549
|
-
* Number of
|
|
8656
|
+
* Number of rows processed so far.
|
|
8550
8657
|
*
|
|
8551
8658
|
* @generated from field: int32 processedCount = 3;
|
|
8552
8659
|
*/
|
|
8553
8660
|
processedCount: number;
|
|
8554
8661
|
|
|
8555
8662
|
/**
|
|
8556
|
-
* Number of
|
|
8663
|
+
* Number of rows successfully updated.
|
|
8557
8664
|
*
|
|
8558
8665
|
* @generated from field: int32 successCount = 4;
|
|
8559
8666
|
*/
|
|
8560
8667
|
successCount: number;
|
|
8561
8668
|
|
|
8562
8669
|
/**
|
|
8563
|
-
* Number of
|
|
8670
|
+
* Number of rows that failed (including not-found billing groups).
|
|
8564
8671
|
*
|
|
8565
8672
|
* @generated from field: int32 failureCount = 5;
|
|
8566
8673
|
*/
|
|
8567
8674
|
failureCount: number;
|
|
8568
8675
|
|
|
8569
8676
|
/**
|
|
8570
|
-
* Details of failed
|
|
8677
|
+
* Details of failed rows.
|
|
8571
8678
|
*
|
|
8572
|
-
* @generated from field: repeated blueapi.billing.v1.
|
|
8679
|
+
* @generated from field: repeated blueapi.billing.v1.BulkUpdateBillingGroupError errors = 6;
|
|
8573
8680
|
*/
|
|
8574
|
-
errors:
|
|
8681
|
+
errors: BulkUpdateBillingGroupError[];
|
|
8575
8682
|
|
|
8576
8683
|
/**
|
|
8577
8684
|
* Job start timestamp (RFC 3339).
|
|
@@ -8586,13 +8693,21 @@ export type BulkCreateBillingGroupMetadata = Message<"blueapi.billing.v1.BulkCre
|
|
|
8586
8693
|
* @generated from field: string endTime = 8;
|
|
8587
8694
|
*/
|
|
8588
8695
|
endTime: string;
|
|
8696
|
+
|
|
8697
|
+
/**
|
|
8698
|
+
* Per-row normalized Invoice Settings results, populated for dryRun requests and for
|
|
8699
|
+
* completed executions.
|
|
8700
|
+
*
|
|
8701
|
+
* @generated from field: repeated blueapi.billing.v1.BulkBillingGroupInvoiceSettingsRow rows = 9;
|
|
8702
|
+
*/
|
|
8703
|
+
rows: BulkBillingGroupInvoiceSettingsRow[];
|
|
8589
8704
|
};
|
|
8590
8705
|
|
|
8591
8706
|
/**
|
|
8592
|
-
* Describes the message blueapi.billing.v1.
|
|
8593
|
-
* Use `create(
|
|
8707
|
+
* Describes the message blueapi.billing.v1.BulkUpdateBillingGroupMetadata.
|
|
8708
|
+
* Use `create(BulkUpdateBillingGroupMetadataSchema)` to create a new message.
|
|
8594
8709
|
*/
|
|
8595
|
-
export const
|
|
8710
|
+
export const BulkUpdateBillingGroupMetadataSchema: GenMessage<BulkUpdateBillingGroupMetadata> = /*@__PURE__*/
|
|
8596
8711
|
messageDesc(file_billing_v1_billing, 224);
|
|
8597
8712
|
|
|
8598
8713
|
/**
|
|
@@ -10611,17 +10726,19 @@ export const Billing: GenService<{
|
|
|
10611
10726
|
output: typeof MonthlyMiscFeeImportTemplateSchema;
|
|
10612
10727
|
},
|
|
10613
10728
|
/**
|
|
10614
|
-
* Validates or imports monthly
|
|
10729
|
+
* Validates or imports monthly FreeFormItems from CSV through invoice settings. The CSV
|
|
10730
|
+
* supplies each row's own billing month, billing group, and vendor; there is no
|
|
10731
|
+
* request-level billing_month or vendor to scope the call.
|
|
10615
10732
|
*
|
|
10616
10733
|
* @generated from rpc blueapi.billing.v1.Billing.BulkImportMonthlyMiscFees
|
|
10617
10734
|
*/
|
|
10618
10735
|
bulkImportMonthlyMiscFees: {
|
|
10619
10736
|
methodKind: "unary";
|
|
10620
10737
|
input: typeof BulkImportMonthlyMiscFeesRequestSchema;
|
|
10621
|
-
output: typeof
|
|
10738
|
+
output: typeof MonthlyMiscFeeImportResultSchema;
|
|
10622
10739
|
},
|
|
10623
10740
|
/**
|
|
10624
|
-
* Lists monthly
|
|
10741
|
+
* Lists effective monthly FreeFormItems.
|
|
10625
10742
|
*
|
|
10626
10743
|
* @generated from rpc blueapi.billing.v1.Billing.ListMonthlyMiscFees
|
|
10627
10744
|
*/
|
|
@@ -10631,47 +10748,7 @@ export const Billing: GenService<{
|
|
|
10631
10748
|
output: typeof ListMonthlyMiscFeesResponseSchema;
|
|
10632
10749
|
},
|
|
10633
10750
|
/**
|
|
10634
|
-
*
|
|
10635
|
-
*
|
|
10636
|
-
* @generated from rpc blueapi.billing.v1.Billing.GetMonthlyMiscFee
|
|
10637
|
-
*/
|
|
10638
|
-
getMonthlyMiscFee: {
|
|
10639
|
-
methodKind: "unary";
|
|
10640
|
-
input: typeof GetMonthlyMiscFeeRequestSchema;
|
|
10641
|
-
output: typeof MonthlyMiscFeeSchema;
|
|
10642
|
-
},
|
|
10643
|
-
/**
|
|
10644
|
-
* Exports monthly miscellaneous fee rows using the list filters.
|
|
10645
|
-
*
|
|
10646
|
-
* @generated from rpc blueapi.billing.v1.Billing.ExportMonthlyMiscFees
|
|
10647
|
-
*/
|
|
10648
|
-
exportMonthlyMiscFees: {
|
|
10649
|
-
methodKind: "unary";
|
|
10650
|
-
input: typeof ExportMonthlyMiscFeesRequestSchema;
|
|
10651
|
-
output: typeof ExportMonthlyMiscFeesResponseSchema;
|
|
10652
|
-
},
|
|
10653
|
-
/**
|
|
10654
|
-
* Gets a completed monthly miscellaneous fee import result.
|
|
10655
|
-
*
|
|
10656
|
-
* @generated from rpc blueapi.billing.v1.Billing.GetMonthlyMiscFeeImport
|
|
10657
|
-
*/
|
|
10658
|
-
getMonthlyMiscFeeImport: {
|
|
10659
|
-
methodKind: "unary";
|
|
10660
|
-
input: typeof GetMonthlyMiscFeeImportRequestSchema;
|
|
10661
|
-
output: typeof MonthlyMiscFeeImportResultSchema;
|
|
10662
|
-
},
|
|
10663
|
-
/**
|
|
10664
|
-
* Creates or updates a monthly miscellaneous fee row.
|
|
10665
|
-
*
|
|
10666
|
-
* @generated from rpc blueapi.billing.v1.Billing.UpsertMonthlyMiscFee
|
|
10667
|
-
*/
|
|
10668
|
-
upsertMonthlyMiscFee: {
|
|
10669
|
-
methodKind: "unary";
|
|
10670
|
-
input: typeof UpsertMonthlyMiscFeeRequestSchema;
|
|
10671
|
-
output: typeof MonthlyMiscFeeSchema;
|
|
10672
|
-
},
|
|
10673
|
-
/**
|
|
10674
|
-
* Deletes a monthly miscellaneous fee row.
|
|
10751
|
+
* Deletes one monthly FreeFormItem through invoice settings.
|
|
10675
10752
|
*
|
|
10676
10753
|
* @generated from rpc blueapi.billing.v1.Billing.DeleteMonthlyMiscFee
|
|
10677
10754
|
*/
|
|
@@ -11025,6 +11102,20 @@ export const Billing: GenService<{
|
|
|
11025
11102
|
input: typeof BulkCreateBillingGroupRequestSchema;
|
|
11026
11103
|
output: typeof OperationSchema;
|
|
11027
11104
|
},
|
|
11105
|
+
/**
|
|
11106
|
+
* Update invoice settings on existing billing groups in bulk from a CSV file.
|
|
11107
|
+
* Unlike BulkCreateBillingGroup, a blank CSV cell preserves the billing group's existing
|
|
11108
|
+
* value for that setting rather than clearing it, and a row referencing a billing group
|
|
11109
|
+
* that does not exist fails only that row (no implicit create).
|
|
11110
|
+
* Returns a long-running operation. Poll status via the Operations service (GET /ops/v1/{name}).
|
|
11111
|
+
*
|
|
11112
|
+
* @generated from rpc blueapi.billing.v1.Billing.BulkUpdateBillingGroup
|
|
11113
|
+
*/
|
|
11114
|
+
bulkUpdateBillingGroup: {
|
|
11115
|
+
methodKind: "unary";
|
|
11116
|
+
input: typeof BulkUpdateBillingGroupRequestSchema;
|
|
11117
|
+
output: typeof OperationSchema;
|
|
11118
|
+
},
|
|
11028
11119
|
/**
|
|
11029
11120
|
* Create Exclude Service Entry
|
|
11030
11121
|
*
|