From 8c9ac2682073b17ff74e09ffc72235f40c0fb9e8 Mon Sep 17 00:00:00 2001 From: Hien Vu <112093533+hvn2k1@users.noreply.github.com> Date: Fri, 10 Jan 2025 08:27:35 +0700 Subject: [PATCH] feat: implement rest update and delete segment REST (#1441) Part of #1417 - Implement REST for update and delete segment - Remove command pattern - Add e2e test for no command segment API set --- api-description/web-api.swagger.yaml | 121 + manifests/bucketeer/charts/api/values.yaml | 2 +- manifests/bucketeer/charts/web/values.yaml | 4 +- pkg/domainevent/domain/message.go | 8 + pkg/feature/api/segment.go | 256 +- pkg/feature/api/segment_test.go | 201 +- pkg/feature/api/validation.go | 31 +- pkg/feature/domain/segment.go | 21 + pkg/feature/domain/segment_test.go | 54 + pkg/feature/storage/v2/mock/segment.go | 14 + pkg/feature/storage/v2/segment.go | 24 +- proto/auditlog/proto_descriptor.pb | Bin 45108 -> 45284 bytes proto/event/domain/event.pb.go | 2524 +++++++++-------- proto/event/domain/event.proto | 7 + proto/feature/proto_descriptor.pb | Bin 50869 -> 51979 bytes proto/feature/service.pb.go | 1669 ++++++----- proto/feature/service.proto | 91 +- proto/gateway/proto_descriptor.pb | Bin 111504 -> 112614 bytes proto/proto.lock | 337 ++- test/e2e/feature/segment_test.go | 70 + .../src/proto/event/domain/event_pb.d.ts | 44 + ui/web-v2/src/proto/event/domain/event_pb.js | 288 ++ ui/web-v2/src/proto/feature/service_pb.d.ts | 21 +- ui/web-v2/src/proto/feature/service_pb.js | 183 +- 24 files changed, 3915 insertions(+), 2055 deletions(-) diff --git a/api-description/web-api.swagger.yaml b/api-description/web-api.swagger.yaml index ee4f66ed0e..dc29f7cb53 100644 --- a/api-description/web-api.swagger.yaml +++ b/api-description/web-api.swagger.yaml @@ -3330,6 +3330,57 @@ paths: type: string tags: - segment + delete: + summary: Delete + description: Delete a segment. + operationId: web.v1.segment.delete + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/featureDeleteSegmentResponse' + "400": + description: Returned for bad requests that may have failed validation. + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 3 + details: [] + message: invalid arguments error + "401": + description: Request could not be authenticated (authentication required). + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 16 + details: [] + message: not authenticated + "503": + description: Returned for internal errors. + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 13 + details: [] + message: internal + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/googlerpcStatus' + parameters: + - name: id + in: query + required: false + type: string + - name: environmentId + in: query + required: false + type: string + tags: + - segment post: summary: Create description: Create a segment. @@ -3378,6 +3429,54 @@ paths: $ref: '#/definitions/featureCreateSegmentRequest' tags: - segment + patch: + summary: Update + description: Update a segment. + operationId: web.v1.segment.update + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/featureUpdateSegmentResponse' + "400": + description: Returned for bad requests that may have failed validation. + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 3 + details: [] + message: invalid arguments error + "401": + description: Request could not be authenticated (authentication required). + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 16 + details: [] + message: not authenticated + "503": + description: Returned for internal errors. + schema: + $ref: '#/definitions/googlerpcStatus' + examples: + application/json: + code: 13 + details: [] + message: internal + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/googlerpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/featureUpdateSegmentRequest' + tags: + - segment /v1/segment_users/bulk_upload: post: summary: Bulk upload @@ -5976,8 +6075,30 @@ definitions: type: object featureUpdateFlagTriggerResponse: type: object + featureUpdateSegmentRequest: + type: object + properties: + id: + type: string + commands: + type: array + items: + type: object + $ref: '#/definitions/featureCommand' + description: deprecated + environmentId: + type: string + name: + type: string + description: + type: string + required: + - environmentId featureUpdateSegmentResponse: type: object + properties: + segment: + $ref: '#/definitions/featureSegment' featureUserEvaluations: type: object properties: diff --git a/manifests/bucketeer/charts/api/values.yaml b/manifests/bucketeer/charts/api/values.yaml index 38c0fd9843..22fb7d8ed9 100644 --- a/manifests/bucketeer/charts/api/values.yaml +++ b/manifests/bucketeer/charts/api/values.yaml @@ -53,7 +53,7 @@ envoy: tag: v1.31.0 pullPolicy: IfNotPresent lbPolicy: LEAST_REQUEST - descriptor: "CocFChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkieQoESHR0cBIqCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBXJ1bGVzEkUKH2Z1bGx5X2RlY29kZV9yZXNlcnZlZF9leHBhbnNpb24YAiABKAhSHGZ1bGx5RGVjb2RlUmVzZXJ2ZWRFeHBhbnNpb24itQIKCEh0dHBSdWxlEhoKCHNlbGVjdG9yGAEgASgJUghzZWxlY3RvchISCgNnZXQYAiABKAlIAFIDZ2V0EhIKA3B1dBgDIAEoCUgAUgNwdXQSFAoEcG9zdBgEIAEoCUgAUgRwb3N0EhgKBmRlbGV0ZRgFIAEoCUgAUgZkZWxldGUSFgoFcGF0Y2gYBiABKAlIAFIFcGF0Y2gSNwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAUgZjdXN0b20SEgoEYm9keRgHIAEoCVIEYm9keRJFChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVISYWRkaXRpb25hbEJpbmRpbmdzQgkKB3BhdHRlcm4iOwoRQ3VzdG9tSHR0cFBhdHRlcm4SEgoEa2luZBgBIAEoCVIEa2luZBISCgRwYXRoGAIgASgJUgRwYXRoQmoKDmNvbS5nb29nbGUuYXBpQglIdHRwUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnP4AQGiAgRHQVBJYgZwcm90bzMK4UYKIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvEg9nb29nbGUucHJvdG9idWYiTQoRRmlsZURlc2NyaXB0b3JTZXQSOAoEZmlsZRgBIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvUgRmaWxlIv4EChNGaWxlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSGAoHcGFja2FnZRgCIAEoCVIHcGFja2FnZRIeCgpkZXBlbmRlbmN5GAMgAygJUgpkZXBlbmRlbmN5EisKEXB1YmxpY19kZXBlbmRlbmN5GAogAygFUhBwdWJsaWNEZXBlbmRlbmN5EicKD3dlYWtfZGVwZW5kZW5jeRgLIAMoBVIOd2Vha0RlcGVuZGVuY3kSQwoMbWVzc2FnZV90eXBlGAQgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1ILbWVzc2FnZVR5cGUSQQoJZW51bV90eXBlGAUgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlEkEKB3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2NyaXB0b3JQcm90b1IHc2VydmljZRJDCglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhI2CgdvcHRpb25zGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zUgdvcHRpb25zEkkKEHNvdXJjZV9jb2RlX2luZm8YCSABKAsyHy5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm9SDnNvdXJjZUNvZGVJbmZvEhYKBnN5bnRheBgMIAEoCVIGc3ludGF4EhgKB2VkaXRpb24YDSABKAlSB2VkaXRpb24iuQYKD0Rlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjsKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUgVmaWVsZBJDCglleHRlbnNpb24YBiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhJBCgtuZXN0ZWRfdHlwZRgDIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SCm5lc3RlZFR5cGUSQQoJZW51bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlElgKD2V4dGVuc2lvbl9yYW5nZRgFIAMoCzIvLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uRXh0ZW5zaW9uUmFuZ2VSDmV4dGVuc2lvblJhbmdlEkQKCm9uZW9mX2RlY2wYCCADKAsyJS5nb29nbGUucHJvdG9idWYuT25lb2ZEZXNjcmlwdG9yUHJvdG9SCW9uZW9mRGVjbBI5CgdvcHRpb25zGAcgASgLMh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zUgdvcHRpb25zElUKDnJlc2VydmVkX3JhbmdlGAkgAygLMi4uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYCiADKAlSDHJlc2VydmVkTmFtZRp6Cg5FeHRlbnNpb25SYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQSQAoHb3B0aW9ucxgDIAEoCzImLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnNSB29wdGlvbnMaNwoNUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQirQQKFUV4dGVuc2lvblJhbmdlT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbhJZCgtkZWNsYXJhdGlvbhgCIAMoCzIyLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuRGVjbGFyYXRpb25CA4gBAlILZGVjbGFyYXRpb24SaAoMdmVyaWZpY2F0aW9uGAMgASgOMjguZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5WZXJpZmljYXRpb25TdGF0ZToKVU5WRVJJRklFRFIMdmVyaWZpY2F0aW9uGrMBCgtEZWNsYXJhdGlvbhIWCgZudW1iZXIYASABKAVSBm51bWJlchIbCglmdWxsX25hbWUYAiABKAlSCGZ1bGxOYW1lEhIKBHR5cGUYAyABKAlSBHR5cGUSIwoLaXNfcmVwZWF0ZWQYBCABKAhCAhgBUgppc1JlcGVhdGVkEhoKCHJlc2VydmVkGAUgASgIUghyZXNlcnZlZBIaCghyZXBlYXRlZBgGIAEoCFIIcmVwZWF0ZWQiNAoRVmVyaWZpY2F0aW9uU3RhdGUSDwoLREVDTEFSQVRJT04QABIOCgpVTlZFUklGSUVEEAEqCQjoBxCAgICAAiLBBgoURmllbGREZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAyABKAVSBm51bWJlchJBCgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbFIFbGFiZWwSPgoEdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlUgR0eXBlEhsKCXR5cGVfbmFtZRgGIAEoCVIIdHlwZU5hbWUSGgoIZXh0ZW5kZWUYAiABKAlSCGV4dGVuZGVlEiMKDWRlZmF1bHRfdmFsdWUYByABKAlSDGRlZmF1bHRWYWx1ZRIfCgtvbmVvZl9pbmRleBgJIAEoBVIKb25lb2ZJbmRleBIbCglqc29uX25hbWUYCiABKAlSCGpzb25OYW1lEjcKB29wdGlvbnMYCCABKAsyHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zUgdvcHRpb25zEicKD3Byb3RvM19vcHRpb25hbBgRIAEoCFIOcHJvdG8zT3B0aW9uYWwitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpUWVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQSDgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklYRUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQRV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIPCgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVEMzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtUWVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoOTEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADImMKFE9uZW9mRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSNwoHb3B0aW9ucxgCIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnNSB29wdGlvbnMi4wIKE0VudW1EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI/CgV2YWx1ZRgCIAMoCzIpLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG9SBXZhbHVlEjYKB29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnNSB29wdGlvbnMSXQoOcmVzZXJ2ZWRfcmFuZ2UYBCADKAsyNi5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90by5FbnVtUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAUgAygJUgxyZXNlcnZlZE5hbWUaOwoRRW51bVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIoMBChhFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAiABKAVSBm51bWJlchI7CgdvcHRpb25zGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnNSB29wdGlvbnMipwEKFlNlcnZpY2VEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI+CgZtZXRob2QYAiADKAsyJi5nb29nbGUucHJvdG9idWYuTWV0aG9kRGVzY3JpcHRvclByb3RvUgZtZXRob2QSOQoHb3B0aW9ucxgDIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9uc1IHb3B0aW9ucyKJAgoVTWV0aG9kRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSHQoKaW5wdXRfdHlwZRgCIAEoCVIJaW5wdXRUeXBlEh8KC291dHB1dF90eXBlGAMgASgJUgpvdXRwdXRUeXBlEjgKB29wdGlvbnMYBCABKAsyHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9uc1IHb3B0aW9ucxIwChBjbGllbnRfc3RyZWFtaW5nGAUgASgIOgVmYWxzZVIPY2xpZW50U3RyZWFtaW5nEjAKEHNlcnZlcl9zdHJlYW1pbmcYBiABKAg6BWZhbHNlUg9zZXJ2ZXJTdHJlYW1pbmcikQkKC0ZpbGVPcHRpb25zEiEKDGphdmFfcGFja2FnZRgBIAEoCVILamF2YVBhY2thZ2USMAoUamF2YV9vdXRlcl9jbGFzc25hbWUYCCABKAlSEmphdmFPdXRlckNsYXNzbmFtZRI1ChNqYXZhX211bHRpcGxlX2ZpbGVzGAogASgIOgVmYWxzZVIRamF2YU11bHRpcGxlRmlsZXMSRAodamF2YV9nZW5lcmF0ZV9lcXVhbHNfYW5kX2hhc2gYFCABKAhCAhgBUhlqYXZhR2VuZXJhdGVFcXVhbHNBbmRIYXNoEjoKFmphdmFfc3RyaW5nX2NoZWNrX3V0ZjgYGyABKAg6BWZhbHNlUhNqYXZhU3RyaW5nQ2hlY2tVdGY4ElMKDG9wdGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucy5PcHRpbWl6ZU1vZGU6BVNQRUVEUgtvcHRpbWl6ZUZvchIdCgpnb19wYWNrYWdlGAsgASgJUglnb1BhY2thZ2USNQoTY2NfZ2VuZXJpY19zZXJ2aWNlcxgQIAEoCDoFZmFsc2VSEWNjR2VuZXJpY1NlcnZpY2VzEjkKFWphdmFfZ2VuZXJpY19zZXJ2aWNlcxgRIAEoCDoFZmFsc2VSE2phdmFHZW5lcmljU2VydmljZXMSNQoTcHlfZ2VuZXJpY19zZXJ2aWNlcxgSIAEoCDoFZmFsc2VSEXB5R2VuZXJpY1NlcnZpY2VzEjcKFHBocF9nZW5lcmljX3NlcnZpY2VzGCogASgIOgVmYWxzZVIScGhwR2VuZXJpY1NlcnZpY2VzEiUKCmRlcHJlY2F0ZWQYFyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEi4KEGNjX2VuYWJsZV9hcmVuYXMYHyABKAg6BHRydWVSDmNjRW5hYmxlQXJlbmFzEioKEW9iamNfY2xhc3NfcHJlZml4GCQgASgJUg9vYmpjQ2xhc3NQcmVmaXgSKQoQY3NoYXJwX25hbWVzcGFjZRglIAEoCVIPY3NoYXJwTmFtZXNwYWNlEiEKDHN3aWZ0X3ByZWZpeBgnIAEoCVILc3dpZnRQcmVmaXgSKAoQcGhwX2NsYXNzX3ByZWZpeBgoIAEoCVIOcGhwQ2xhc3NQcmVmaXgSIwoNcGhwX25hbWVzcGFjZRgpIAEoCVIMcGhwTmFtZXNwYWNlEjQKFnBocF9tZXRhZGF0YV9uYW1lc3BhY2UYLCABKAlSFHBocE1ldGFkYXRhTmFtZXNwYWNlEiEKDHJ1YnlfcGFja2FnZRgtIAEoCVILcnVieVBhY2thZ2USWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iOgoMT3B0aW1pemVNb2RlEgkKBVNQRUVEEAESDQoJQ09ERV9TSVpFEAISEAoMTElURV9SVU5USU1FEAMqCQjoBxCAgICAAkoECCYQJyK7AwoOTWVzc2FnZU9wdGlvbnMSPAoXbWVzc2FnZV9zZXRfd2lyZV9mb3JtYXQYASABKAg6BWZhbHNlUhRtZXNzYWdlU2V0V2lyZUZvcm1hdBJMCh9ub19zdGFuZGFyZF9kZXNjcmlwdG9yX2FjY2Vzc29yGAIgASgIOgVmYWxzZVIcbm9TdGFuZGFyZERlc2NyaXB0b3JBY2Nlc3NvchIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIbCgltYXBfZW50cnkYByABKAhSCG1hcEVudHJ5ElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAsgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBBAFSgQIBRAGSgQIBhAHSgQICBAJSgQICRAKIoUJCgxGaWVsZE9wdGlvbnMSQQoFY3R5cGUYASABKA4yIy5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkNUeXBlOgZTVFJJTkdSBWN0eXBlEhYKBnBhY2tlZBgCIAEoCFIGcGFja2VkEkcKBmpzdHlwZRgGIAEoDjIkLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuSlNUeXBlOglKU19OT1JNQUxSBmpzdHlwZRIZCgRsYXp5GAUgASgIOgVmYWxzZVIEbGF6eRIuCg91bnZlcmlmaWVkX2xhenkYDyABKAg6BWZhbHNlUg51bnZlcmlmaWVkTGF6eRIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIZCgR3ZWFrGAogASgIOgVmYWxzZVIEd2VhaxIoCgxkZWJ1Z19yZWRhY3QYECABKAg6BWZhbHNlUgtkZWJ1Z1JlZGFjdBJLCglyZXRlbnRpb24YESABKA4yLS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblJldGVudGlvblIJcmV0ZW50aW9uEkoKBnRhcmdldBgSIAEoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZUICGAFSBnRhcmdldBJICgd0YXJnZXRzGBMgAygOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlUgd0YXJnZXRzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIi8KBUNUeXBlEgoKBlNUUklORxAAEggKBENPUkQQARIQCgxTVFJJTkdfUElFQ0UQAiI1CgZKU1R5cGUSDQoJSlNfTk9STUFMEAASDQoJSlNfU1RSSU5HEAESDQoJSlNfTlVNQkVSEAIiVQoPT3B0aW9uUmV0ZW50aW9uEhUKEVJFVEVOVElPTl9VTktOT1dOEAASFQoRUkVURU5USU9OX1JVTlRJTUUQARIUChBSRVRFTlRJT05fU09VUkNFEAIijAIKEE9wdGlvblRhcmdldFR5cGUSFwoTVEFSR0VUX1RZUEVfVU5LTk9XThAAEhQKEFRBUkdFVF9UWVBFX0ZJTEUQARIfChtUQVJHRVRfVFlQRV9FWFRFTlNJT05fUkFOR0UQAhIXChNUQVJHRVRfVFlQRV9NRVNTQUdFEAMSFQoRVEFSR0VUX1RZUEVfRklFTEQQBBIVChFUQVJHRVRfVFlQRV9PTkVPRhAFEhQKEFRBUkdFVF9UWVBFX0VOVU0QBhIaChZUQVJHRVRfVFlQRV9FTlVNX0VOVFJZEAcSFwoTVEFSR0VUX1RZUEVfU0VSVklDRRAIEhYKElRBUkdFVF9UWVBFX01FVEhPRBAJKgkI6AcQgICAgAJKBAgEEAUicwoMT25lb2ZPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIimAIKC0VudW1PcHRpb25zEh8KC2FsbG93X2FsaWFzGAIgASgIUgphbGxvd0FsaWFzEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAYgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBRAGIp4BChBFbnVtVmFsdWVPcHRpb25zEiUKCmRlcHJlY2F0ZWQYASABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIinAEKDlNlcnZpY2VPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi4AIKDU1ldGhvZE9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQScQoRaWRlbXBvdGVuY3lfbGV2ZWwYIiABKA4yLy5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucy5JZGVtcG90ZW5jeUxldmVsOhNJREVNUE9URU5DWV9VTktOT1dOUhBpZGVtcG90ZW5jeUxldmVsElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIlAKEElkZW1wb3RlbmN5TGV2ZWwSFwoTSURFTVBPVEVOQ1lfVU5LTk9XThAAEhMKD05PX1NJREVfRUZGRUNUUxABEg4KCklERU1QT1RFTlQQAioJCOgHEICAgIACIpoDChNVbmludGVycHJldGVkT3B0aW9uEkEKBG5hbWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbi5OYW1lUGFydFIEbmFtZRIpChBpZGVudGlmaWVyX3ZhbHVlGAMgASgJUg9pZGVudGlmaWVyVmFsdWUSLAoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEUhBwb3NpdGl2ZUludFZhbHVlEiwKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoA1IQbmVnYXRpdmVJbnRWYWx1ZRIhCgxkb3VibGVfdmFsdWUYBiABKAFSC2RvdWJsZVZhbHVlEiEKDHN0cmluZ192YWx1ZRgHIAEoDFILc3RyaW5nVmFsdWUSJwoPYWdncmVnYXRlX3ZhbHVlGAggASgJUg5hZ2dyZWdhdGVWYWx1ZRpKCghOYW1lUGFydBIbCgluYW1lX3BhcnQYASACKAlSCG5hbWVQYXJ0EiEKDGlzX2V4dGVuc2lvbhgCIAIoCFILaXNFeHRlbnNpb24ipwIKDlNvdXJjZUNvZGVJbmZvEkQKCGxvY2F0aW9uGAEgAygLMiguZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvLkxvY2F0aW9uUghsb2NhdGlvbhrOAQoITG9jYXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSFgoEc3BhbhgCIAMoBUICEAFSBHNwYW4SKQoQbGVhZGluZ19jb21tZW50cxgDIAEoCVIPbGVhZGluZ0NvbW1lbnRzEisKEXRyYWlsaW5nX2NvbW1lbnRzGAQgASgJUhB0cmFpbGluZ0NvbW1lbnRzEjoKGWxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMYBiADKAlSF2xlYWRpbmdEZXRhY2hlZENvbW1lbnRzItACChFHZW5lcmF0ZWRDb2RlSW5mbxJNCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb25SCmFubm90YXRpb24a6wEKCkFubm90YXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSHwoLc291cmNlX2ZpbGUYAiABKAlSCnNvdXJjZUZpbGUSFAoFYmVnaW4YAyABKAVSBWJlZ2luEhAKA2VuZBgEIAEoBVIDZW5kElIKCHNlbWFudGljGAUgASgOMjYuZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb24uU2VtYW50aWNSCHNlbWFudGljIigKCFNlbWFudGljEggKBE5PTkUQABIHCgNTRVQQARIJCgVBTElBUxACQn4KE2NvbS5nb29nbGUucHJvdG9idWZCEERlc2NyaXB0b3JQcm90b3NIAVotZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMvZGVzY3JpcHRvcnBi+AEBogIDR1BCqgIaR29vZ2xlLlByb3RvYnVmLlJlZmxlY3Rpb24KqAIKHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8SCmdvb2dsZS5hcGkaFWdvb2dsZS9hcGkvaHR0cC5wcm90bxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG86SwoEaHR0cBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLDKvCIgASgLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIEaHR0cEJuCg5jb20uZ29vZ2xlLmFwaUIQQW5ub3RhdGlvbnNQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwqGBAoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvEg9nb29nbGUucHJvdG9idWYiIwoLRG91YmxlVmFsdWUSFAoFdmFsdWUYASABKAFSBXZhbHVlIiIKCkZsb2F0VmFsdWUSFAoFdmFsdWUYASABKAJSBXZhbHVlIiIKCkludDY0VmFsdWUSFAoFdmFsdWUYASABKANSBXZhbHVlIiMKC1VJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgEUgV2YWx1ZSIiCgpJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgFUgV2YWx1ZSIjCgtVSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoDVIFdmFsdWUiIQoJQm9vbFZhbHVlEhQKBXZhbHVlGAEgASgIUgV2YWx1ZSIjCgtTdHJpbmdWYWx1ZRIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUiIgoKQnl0ZXNWYWx1ZRIUCgV2YWx1ZRgBIAEoDFIFdmFsdWVCgwEKE2NvbS5nb29nbGUucHJvdG9idWZCDVdyYXBwZXJzUHJvdG9QAVoxZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vd3JhcHBlcnNwYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCuIFChxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYimAEKBlN0cnVjdBI7CgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5UgZmaWVsZHMaUQoLRmllbGRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASKyAgoFVmFsdWUSOwoKbnVsbF92YWx1ZRgBIAEoDjIaLmdvb2dsZS5wcm90b2J1Zi5OdWxsVmFsdWVIAFIJbnVsbFZhbHVlEiMKDG51bWJlcl92YWx1ZRgCIAEoAUgAUgtudW1iZXJWYWx1ZRIjCgxzdHJpbmdfdmFsdWUYAyABKAlIAFILc3RyaW5nVmFsdWUSHwoKYm9vbF92YWx1ZRgEIAEoCEgAUglib29sVmFsdWUSPAoMc3RydWN0X3ZhbHVlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAUgtzdHJ1Y3RWYWx1ZRI7CgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAUglsaXN0VmFsdWVCBgoEa2luZCI7CglMaXN0VmFsdWUSLgoGdmFsdWVzGAEgAygLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgZ2YWx1ZXMqGwoJTnVsbFZhbHVlEg4KCk5VTExfVkFMVUUQAEJ/ChNjb20uZ29vZ2xlLnByb3RvYnVmQgtTdHJ1Y3RQcm90b1ABWi9nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9zdHJ1Y3RwYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCqY+Cixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8iswgKB1N3YWdnZXISGAoHc3dhZ2dlchgBIAEoCVIHc3dhZ2dlchJDCgRpbmZvGAIgASgLMi8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mb1IEaW5mbxISCgRob3N0GAMgASgJUgRob3N0EhsKCWJhc2VfcGF0aBgEIAEoCVIIYmFzZVBhdGgSSwoHc2NoZW1lcxgFIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEl8KCXJlc3BvbnNlcxgKIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJxChRzZWN1cml0eV9kZWZpbml0aW9ucxgLIAEoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnNSE3NlY3VyaXR5RGVmaW5pdGlvbnMSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJCCgR0YWdzGA0gAygLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgR0YWdzEmUKDWV4dGVybmFsX2RvY3MYDiABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJiCgpleHRlbnNpb25zGA8gAygLMkIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJSgQICRAKItYHCglPcGVyYXRpb24SEgoEdGFncxgBIAMoCVIEdGFncxIYCgdzdW1tYXJ5GAIgASgJUgdzdW1tYXJ5EiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAQgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSIQoMb3BlcmF0aW9uX2lkGAUgASgJUgtvcGVyYXRpb25JZBIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEmEKCXJlc3BvbnNlcxgJIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEksKB3NjaGVtZXMYCiADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSHgoKZGVwcmVjYXRlZBgLIAEoCFIKZGVwcmVjYXRlZBJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EmQKCmV4dGVuc2lvbnMYDSADKAsyRC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zElUKCnBhcmFtZXRlcnMYDiABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5QYXJhbWV0ZXJzUgpwYXJhbWV0ZXJzGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCSJiCgpQYXJhbWV0ZXJzElQKB2hlYWRlcnMYASADKAsyOi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXJSB2hlYWRlcnMiowIKD0hlYWRlclBhcmFtZXRlchISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJTCgR0eXBlGAMgASgOMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyLlR5cGVSBHR5cGUSFgoGZm9ybWF0GAQgASgJUgZmb3JtYXQSGgoIcmVxdWlyZWQYBSABKAhSCHJlcXVpcmVkIkUKBFR5cGUSCwoHVU5LTk9XThAAEgoKBlNUUklORxABEgoKBk5VTUJFUhACEgsKB0lOVEVHRVIQAxILCgdCT09MRUFOEARKBAgGEAdKBAgHEAgi2AEKBkhlYWRlchIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEgoEdHlwZRgCIAEoCVIEdHlwZRIWCgZmb3JtYXQYAyABKAlSBmZvcm1hdBIYCgdkZWZhdWx0GAYgASgJUgdkZWZhdWx0EhgKB3BhdHRlcm4YDSABKAlSB3BhdHRlcm5KBAgEEAVKBAgFEAZKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxKBAgMEA1KBAgOEA9KBAgPEBBKBAgQEBFKBAgREBJKBAgSEBMimgUKCFJlc3BvbnNlEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhJJCgZzY2hlbWEYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSBnNjaGVtYRJaCgdoZWFkZXJzGAMgAygLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuSGVhZGVyc0VudHJ5UgdoZWFkZXJzEl0KCGV4YW1wbGVzGAQgAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXhhbXBsZXNFbnRyeVIIZXhhbXBsZXMSYwoKZXh0ZW5zaW9ucxgFIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxptCgxIZWFkZXJzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSRwoFdmFsdWUYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJSBXZhbHVlOgI4ARo7Cg1FeGFtcGxlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi1gMKBEluZm8SFAoFdGl0bGUYASABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIoChB0ZXJtc19vZl9zZXJ2aWNlGAMgASgJUg50ZXJtc09mU2VydmljZRJMCgdjb250YWN0GAQgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuQ29udGFjdFIHY29udGFjdBJMCgdsaWNlbnNlGAUgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuTGljZW5zZVIHbGljZW5zZRIYCgd2ZXJzaW9uGAYgASgJUgd2ZXJzaW9uEl8KCmV4dGVuc2lvbnMYByADKAsyPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJFCgdDb250YWN0EhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwSFAoFZW1haWwYAyABKAlSBWVtYWlsIi8KB0xpY2Vuc2USEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybCJLChVFeHRlcm5hbERvY3VtZW50YXRpb24SIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhAKA3VybBgCIAEoCVIDdXJsIqoCCgZTY2hlbWESVgoLanNvbl9zY2hlbWEYASABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUgpqc29uU2NoZW1hEiQKDWRpc2NyaW1pbmF0b3IYAiABKAlSDWRpc2NyaW1pbmF0b3ISGwoJcmVhZF9vbmx5GAMgASgIUghyZWFkT25seRJlCg1leHRlcm5hbF9kb2NzGAUgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSGAoHZXhhbXBsZRgGIAEoCVIHZXhhbXBsZUoECAQQBSLXCgoKSlNPTlNjaGVtYRIQCgNyZWYYAyABKAlSA3JlZhIUCgV0aXRsZRgFIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YBiABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlZmF1bHQYByABKAlSB2RlZmF1bHQSGwoJcmVhZF9vbmx5GAggASgIUghyZWFkT25seRIYCgdleGFtcGxlGAkgASgJUgdleGFtcGxlEh8KC211bHRpcGxlX29mGAogASgBUgptdWx0aXBsZU9mEhgKB21heGltdW0YCyABKAFSB21heGltdW0SKwoRZXhjbHVzaXZlX21heGltdW0YDCABKAhSEGV4Y2x1c2l2ZU1heGltdW0SGAoHbWluaW11bRgNIAEoAVIHbWluaW11bRIrChFleGNsdXNpdmVfbWluaW11bRgOIAEoCFIQZXhjbHVzaXZlTWluaW11bRIdCgptYXhfbGVuZ3RoGA8gASgEUgltYXhMZW5ndGgSHQoKbWluX2xlbmd0aBgQIAEoBFIJbWluTGVuZ3RoEhgKB3BhdHRlcm4YESABKAlSB3BhdHRlcm4SGwoJbWF4X2l0ZW1zGBQgASgEUghtYXhJdGVtcxIbCgltaW5faXRlbXMYFSABKARSCG1pbkl0ZW1zEiEKDHVuaXF1ZV9pdGVtcxgWIAEoCFILdW5pcXVlSXRlbXMSJQoObWF4X3Byb3BlcnRpZXMYGCABKARSDW1heFByb3BlcnRpZXMSJQoObWluX3Byb3BlcnRpZXMYGSABKARSDW1pblByb3BlcnRpZXMSGgoIcmVxdWlyZWQYGiADKAlSCHJlcXVpcmVkEhQKBWFycmF5GCIgAygJUgVhcnJheRJfCgR0eXBlGCMgAygOMksuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5KU09OU2NoZW1hU2ltcGxlVHlwZXNSBHR5cGUSFgoGZm9ybWF0GCQgASgJUgZmb3JtYXQSEgoEZW51bRguIAMoCVIEZW51bRJ6ChNmaWVsZF9jb25maWd1cmF0aW9uGOkHIAEoCzJILmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRmllbGRDb25maWd1cmF0aW9uUhJmaWVsZENvbmZpZ3VyYXRpb24SZQoKZXh0ZW5zaW9ucxgwIAMoCzJFLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGjwKEkZpZWxkQ29uZmlndXJhdGlvbhImCg9wYXRoX3BhcmFtX25hbWUYLyABKAlSDXBhdGhQYXJhbU5hbWUaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEidwoVSlNPTlNjaGVtYVNpbXBsZVR5cGVzEgsKB1VOS05PV04QABIJCgVBUlJBWRABEgsKB0JPT0xFQU4QAhILCgdJTlRFR0VSEAMSCAoETlVMTBAEEgoKBk5VTUJFUhAFEgoKBk9CSkVDVBAGEgoKBlNUUklORxAHSgQIARACSgQIAhADSgQIBBAFSgQIEhATSgQIExAUSgQIFxAYSgQIGxAcSgQIHBAdSgQIHRAeSgQIHhAiSgQIJRAqSgQIKhArSgQIKxAuItkCCgNUYWcSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgDIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEl4KCmV4dGVuc2lvbnMYBCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWcuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIvcBChNTZWN1cml0eURlZmluaXRpb25zEmgKCHNlY3VyaXR5GAEgAygLMkwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9ucy5TZWN1cml0eUVudHJ5UghzZWN1cml0eRp2Cg1TZWN1cml0eUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ek8KBXZhbHVlGAIgASgLMjkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWVSBXZhbHVlOgI4ASL/BgoOU2VjdXJpdHlTY2hlbWUSUgoEdHlwZRgBIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLlR5cGVSBHR5cGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhIKBG5hbWUYAyABKAlSBG5hbWUSTAoCaW4YBCABKA4yPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5JblICaW4SUgoEZmxvdxgFIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkZsb3dSBGZsb3cSKwoRYXV0aG9yaXphdGlvbl91cmwYBiABKAlSEGF1dGhvcml6YXRpb25VcmwSGwoJdG9rZW5fdXJsGAcgASgJUgh0b2tlblVybBJJCgZzY29wZXMYCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXNSBnNjb3BlcxJpCgpleHRlbnNpb25zGAkgAygLMkkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIksKBFR5cGUSEAoMVFlQRV9JTlZBTElEEAASDgoKVFlQRV9CQVNJQxABEhAKDFRZUEVfQVBJX0tFWRACEg8KC1RZUEVfT0FVVEgyEAMiMQoCSW4SDgoKSU5fSU5WQUxJRBAAEgwKCElOX1FVRVJZEAESDQoJSU5fSEVBREVSEAIiagoERmxvdxIQCgxGTE9XX0lOVkFMSUQQABIRCg1GTE9XX0lNUExJQ0lUEAESEQoNRkxPV19QQVNTV09SRBACEhQKEEZMT1dfQVBQTElDQVRJT04QAxIUChBGTE9XX0FDQ0VTU19DT0RFEAQi9gIKE1NlY3VyaXR5UmVxdWlyZW1lbnQSigEKFHNlY3VyaXR5X3JlcXVpcmVtZW50GAEgAygLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50RW50cnlSE3NlY3VyaXR5UmVxdWlyZW1lbnQaMAoYU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlEhQKBXNjb3BlGAEgAygJUgVzY29wZRqfAQoYU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Em0KBXZhbHVlGAIgASgLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50VmFsdWVSBXZhbHVlOgI4ASKWAQoGU2NvcGVzElIKBXNjb3BlGAEgAygLMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzLlNjb3BlRW50cnlSBXNjb3BlGjgKClNjb3BlRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASo7CgZTY2hlbWUSCwoHVU5LTk9XThAAEggKBEhUVFAQARIJCgVIVFRQUxACEgYKAldTEAMSBwoDV1NTEARCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCv0GCi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8aLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvOn4KEW9wZW5hcGl2Ml9zd2FnZ2VyEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGJIIIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXJSEG9wZW5hcGl2MlN3YWdnZXI6hgEKE29wZW5hcGl2Ml9vcGVyYXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiSCCABKAsyNC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb25SEm9wZW5hcGl2Mk9wZXJhdGlvbjp+ChBvcGVuYXBpdjJfc2NoZW1hEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGJIIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIPb3BlbmFwaXYyU2NoZW1hOnUKDW9wZW5hcGl2Ml90YWcSHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYkgggASgLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgxvcGVuYXBpdjJUYWc6fgoPb3BlbmFwaXYyX2ZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiSCCABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUg5vcGVuYXBpdjJGaWVsZEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMKwAQKFXByb3RvL3VzZXIvdXNlci5wcm90bxIOYnVja2V0ZWVyLnVzZXIi3gMKBFVzZXISDgoCaWQYASABKAlSAmlkEjIKBGRhdGEYAiADKAsyHi5idWNrZXRlZXIudXNlci5Vc2VyLkRhdGFFbnRyeVIEZGF0YRJFCgt0YWdnZWRfZGF0YRgDIAMoCzIkLmJ1Y2tldGVlci51c2VyLlVzZXIuVGFnZ2VkRGF0YUVudHJ5Ugp0YWdnZWREYXRhEhsKCWxhc3Rfc2VlbhgEIAEoA1IIbGFzdFNlZW4SHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0GnwKBERhdGESOgoFdmFsdWUYASADKAsyJC5idWNrZXRlZXIudXNlci5Vc2VyLkRhdGEuVmFsdWVFbnRyeVIFdmFsdWUaOAoKVmFsdWVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGjcKCURhdGFFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlgKD1RhZ2dlZERhdGFFbnRyeRIQCgNrZXkYASABKAlSA2tleRIvCgV2YWx1ZRgCIAEoCzIZLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YVIFdmFsdWU6AjgBQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by91c2VyYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCp4CChpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUisQEKBlJlYXNvbhIyCgR0eXBlGAEgASgOMh4uYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uLlR5cGVSBHR5cGUSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkIloKBFR5cGUSCgoGVEFSR0VUEAASCAoEUlVMRRABEgsKB0RFRkFVTFQQAxIKCgZDTElFTlQQBBIRCg1PRkZfVkFSSUFUSU9OEAUSEAoMUFJFUkVRVUlTSVRFEAZCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqYBgoecHJvdG8vZmVhdHVyZS9ldmFsdWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZRodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aGnByb3RvL2ZlYXR1cmUvcmVhc29uLnByb3RvIuMCCgpFdmFsdWF0aW9uEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJwoPZmVhdHVyZV92ZXJzaW9uGAMgASgFUg5mZWF0dXJlVmVyc2lvbhIXCgd1c2VyX2lkGAQgASgJUgZ1c2VySWQSIQoMdmFyaWF0aW9uX2lkGAUgASgJUgt2YXJpYXRpb25JZBI+Cgl2YXJpYXRpb24YBiABKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25CAhgBUgl2YXJpYXRpb24SMQoGcmVhc29uGAcgASgLMhkuYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uUgZyZWFzb24SJwoPdmFyaWF0aW9uX3ZhbHVlGAggASgJUg52YXJpYXRpb25WYWx1ZRIlCg52YXJpYXRpb25fbmFtZRgJIAEoCVINdmFyaWF0aW9uTmFtZSKGAgoPVXNlckV2YWx1YXRpb25zEhIKAmlkGAEgASgJQgIYAVICaWQSPwoLZXZhbHVhdGlvbnMYAiADKAsyHS5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0aW9uUgtldmFsdWF0aW9ucxIdCgpjcmVhdGVkX2F0GAMgASgDUgljcmVhdGVkQXQSMAoUYXJjaGl2ZWRfZmVhdHVyZV9pZHMYBCADKAlSEmFyY2hpdmVkRmVhdHVyZUlkcxIhCgxmb3JjZV91cGRhdGUYBSABKAhSC2ZvcmNlVXBkYXRlIioKBVN0YXRlEgoKBlFVRVVFRBAAEgsKB1BBUlRJQUwQARIICgRGVUxMEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwrHAwoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlItoCCgZDbGF1c2USDgoCaWQYASABKAlSAmlkEhwKCWF0dHJpYnV0ZRgCIAEoCVIJYXR0cmlidXRlEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchIWCgZ2YWx1ZXMYBCADKAlSBnZhbHVlcyLJAQoIT3BlcmF0b3ISCgoGRVFVQUxTEAASBgoCSU4QARINCglFTkRTX1dJVEgQAhIPCgtTVEFSVFNfV0lUSBADEgsKB1NFR01FTlQQBBILCgdHUkVBVEVSEAUSFAoQR1JFQVRFUl9PUl9FUVVBTBAGEggKBExFU1MQBxIRCg1MRVNTX09SX0VRVUFMEAgSCgoGQkVGT1JFEAkSCQoFQUZURVIQChIQCgxGRUFUVVJFX0ZMQUcQCxITCg9QQVJUSUFMTFlfTUFUQ0gQDEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCrsEChxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSItCg1GaXhlZFN0cmF0ZWd5EhwKCXZhcmlhdGlvbhgBIAEoCVIJdmFyaWF0aW9uIqIBCg9Sb2xsb3V0U3RyYXRlZ3kSTAoKdmFyaWF0aW9ucxgBIAMoCzIsLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneS5WYXJpYXRpb25SCnZhcmlhdGlvbnMaQQoJVmFyaWF0aW9uEhwKCXZhcmlhdGlvbhgBIAEoCVIJdmFyaWF0aW9uEhYKBndlaWdodBgCIAEoBVIGd2VpZ2h0IvgBCghTdHJhdGVneRI0CgR0eXBlGAEgASgOMiAuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3kuVHlwZVIEdHlwZRJHCg5maXhlZF9zdHJhdGVneRgCIAEoCzIgLmJ1Y2tldGVlci5mZWF0dXJlLkZpeGVkU3RyYXRlZ3lSDWZpeGVkU3RyYXRlZ3kSTQoQcm9sbG91dF9zdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIPcm9sbG91dFN0cmF0ZWd5Ih4KBFR5cGUSCQoFRklYRUQQABILCgdST0xMT1VUEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqpAgoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZRoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8ihAEKBFJ1bGUSDgoCaWQYASABKAlSAmlkEjcKCHN0cmF0ZWd5GAIgASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSCHN0cmF0ZWd5EjMKB2NsYXVzZXMYAyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSB2NsYXVzZXNCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqoAQoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIjwKBlRhcmdldBIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIUCgV1c2VycxgCIAMoCVIFdXNlcnNCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwr0AgoqcHJvdG8vZmVhdHVyZS9mZWF0dXJlX2xhc3RfdXNlZF9pbmZvLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSL3AQoTRmVhdHVyZUxhc3RVc2VkSW5mbxIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSGAoHdmVyc2lvbhgCIAEoBVIHdmVyc2lvbhIgCgxsYXN0X3VzZWRfYXQYAyABKANSCmxhc3RVc2VkQXQSHQoKY3JlYXRlZF9hdBgEIAEoA1IJY3JlYXRlZEF0EjIKFWNsaWVudF9vbGRlc3RfdmVyc2lvbhgFIAEoCVITY2xpZW50T2xkZXN0VmVyc2lvbhIyChVjbGllbnRfbGF0ZXN0X3ZlcnNpb24YBiABKAlSE2NsaWVudExhdGVzdFZlcnNpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwrCAQogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIlAKDFByZXJlcXVpc2l0ZRIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCrMMChtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlGhhwcm90by9mZWF0dXJlL3J1bGUucHJvdG8aGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoqcHJvdG8vZmVhdHVyZS9mZWF0dXJlX2xhc3RfdXNlZF9pbmZvLnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90byLSBwoHRmVhdHVyZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SGAoHZW5hYmxlZBgEIAEoCFIHZW5hYmxlZBIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkEjkKFmV2YWx1YXRpb25fdW5kZWxheWFibGUYBiABKAhCAhgBUhVldmFsdWF0aW9uVW5kZWxheWFibGUSEAoDdHRsGAcgASgFUgN0dGwSGAoHdmVyc2lvbhgIIAEoBVIHdmVyc2lvbhIdCgpjcmVhdGVkX2F0GAkgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgKIAEoA1IJdXBkYXRlZEF0EjwKCnZhcmlhdGlvbnMYCyADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSMwoHdGFyZ2V0cxgMIAMoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlRhcmdldFIHdGFyZ2V0cxItCgVydWxlcxgNIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEkYKEGRlZmF1bHRfc3RyYXRlZ3kYDiABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIPZGVmYXVsdFN0cmF0ZWd5EiMKDW9mZl92YXJpYXRpb24YDyABKAlSDG9mZlZhcmlhdGlvbhISCgR0YWdzGBAgAygJUgR0YWdzEkwKDmxhc3RfdXNlZF9pbmZvGBEgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZUxhc3RVc2VkSW5mb1IMbGFzdFVzZWRJbmZvEh4KCm1haW50YWluZXIYEiABKAlSCm1haW50YWluZXISTwoOdmFyaWF0aW9uX3R5cGUYEyABKA4yKC5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlLlZhcmlhdGlvblR5cGVSDXZhcmlhdGlvblR5cGUSGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkEkUKDXByZXJlcXVpc2l0ZXMYFSADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDXByZXJlcXVpc2l0ZXMSIwoNc2FtcGxpbmdfc2VlZBgWIAEoCVIMc2FtcGxpbmdTZWVkIj4KDVZhcmlhdGlvblR5cGUSCgoGU1RSSU5HEAASCwoHQk9PTEVBThABEgoKBk5VTUJFUhACEggKBEpTT04QAyJSCghGZWF0dXJlcxI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEg4KAmlkGAIgASgJUgJpZCJzChJFbnZpcm9ubWVudEZlYXR1cmUSJQoOZW52aXJvbm1lbnRfaWQYASABKAlSDWVudmlyb25tZW50SWQSNgoIZmVhdHVyZXMYAiADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcyJnCgNUYWcSDgoCaWQYASABKAlSAmlkEh0KCmNyZWF0ZWRfYXQYAiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAMgASgDUgl1cGRhdGVkQXQSEgoEbmFtZRgEIAEoCVIEbmFtZUIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK5AEKGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiI2CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVlQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKoAUKIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSKtBAoLRmxhZ1RyaWdnZXISDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SIwoNdHJpZ2dlcl9jb3VudBgHIAEoBVIMdHJpZ2dlckNvdW50EioKEWxhc3RfdHJpZ2dlcmVkX2F0GAggASgDUg9sYXN0VHJpZ2dlcmVkQXQSFAoFdG9rZW4YCSABKAlSBXRva2VuEhoKCGRpc2FibGVkGAogASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAsgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgMIAEoA1IJdXBkYXRlZEF0EiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIioKBFR5cGUSEAoMVHlwZV9VTktOT1dOEAASEAoMVHlwZV9XRUJIT09LEAEiOwoGQWN0aW9uEhIKDkFjdGlvbl9VTktOT1dOEAASDQoJQWN0aW9uX09OEAESDgoKQWN0aW9uX09GRhACSgQIAxAEQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKwCMKG3Byb3RvL2ZlYXR1cmUvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8iOQoHQ29tbWFuZBIuCgdjb21tYW5kGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIHY29tbWFuZCK1AwoUQ3JlYXRlRmVhdHVyZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSEgoEdGFncxgFIAMoCVIEdGFncxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlIhcKFUFyY2hpdmVGZWF0dXJlQ29tbWFuZCIZChdVbmFyY2hpdmVGZWF0dXJlQ29tbWFuZCIWChREZWxldGVGZWF0dXJlQ29tbWFuZCIqChRSZW5hbWVGZWF0dXJlQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIjwKGENoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iuAEKKUNoYW5nZUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNTdGF0dXNDb21tYW5kEjkKBnN0YXR1cxgBIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYAyABKANSBWNvdW50IiEKDUFkZFRhZ0NvbW1hbmQSEAoDdGFnGAEgASgJUgN0YWciJAoQUmVtb3ZlVGFnQ29tbWFuZBIQCgN0YWcYASABKAlSA3RhZyIWChRFbmFibGVGZWF0dXJlQ29tbWFuZCIXChVEaXNhYmxlRmVhdHVyZUNvbW1hbmQiYQoTQWRkVmFyaWF0aW9uQ29tbWFuZBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24iKAoWUmVtb3ZlVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiQwobQ2hhbmdlVmFyaWF0aW9uVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUiQAoaQ2hhbmdlVmFyaWF0aW9uTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohQ2hhbmdlVmFyaWF0aW9uRGVzY3JpcHRpb25Db21tYW5kEg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iKwoZQ2hhbmdlT2ZmVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiPwoZQWRkVXNlclRvVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEdXNlchgCIAEoCVIEdXNlciJECh5SZW1vdmVVc2VyRnJvbVZhcmlhdGlvbkNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBHVzZXIYAiABKAlSBHVzZXIiVwocQ2hhbmdlRGVmYXVsdFN0cmF0ZWd5Q29tbWFuZBI3CghzdHJhdGVneRgBIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI9Cg5BZGRSdWxlQ29tbWFuZBIrCgRydWxlGAEgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJ9ChlDaGFuZ2VSdWxlU3RyYXRlZ3lDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiNAoXQ2hhbmdlUnVsZXNPcmRlckNvbW1hbmQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiIwoRRGVsZXRlUnVsZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkIl4KEEFkZENsYXVzZUNvbW1hbmQSFwoHcnVsZV9pZBgBIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgCIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlIj4KE0RlbGV0ZUNsYXVzZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJlChxDaGFuZ2VDbGF1c2VBdHRyaWJ1dGVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSHAoJYXR0cmlidXRlGAMgASgJUglhdHRyaWJ1dGUihgEKG0NoYW5nZUNsYXVzZU9wZXJhdG9yQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJWChVBZGRDbGF1c2VWYWx1ZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIUCgV2YWx1ZRgDIAEoCVIFdmFsdWUiWQoYUmVtb3ZlQ2xhdXNlVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIoMBChpDaGFuZ2VGaXhlZFN0cmF0ZWd5Q29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjwKCHN0cmF0ZWd5GAMgASgLMiAuYnVja2V0ZWVyLmZlYXR1cmUuRml4ZWRTdHJhdGVneVIIc3RyYXRlZ3kihwEKHENoYW5nZVJvbGxvdXRTdHJhdGVneUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI+CghzdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIIc3RyYXRlZ3kiTAoUQ3JlYXRlU2VnbWVudENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iFgoURGVsZXRlU2VnbWVudENvbW1hbmQiLgoYQ2hhbmdlU2VnbWVudE5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQwofQ2hhbmdlU2VnbWVudERlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24ibgoVQWRkU2VnbWVudFVzZXJDb21tYW5kEhkKCHVzZXJfaWRzGAEgAygJUgd1c2VySWRzEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlInEKGERlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZBIZCgh1c2VyX2lkcxgBIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgCIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSJvCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZBISCgRkYXRhGAEgASgMUgRkYXRhEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIiAKHkluY3JlbWVudEZlYXR1cmVWZXJzaW9uQ29tbWFuZCJCChNDbG9uZUZlYXR1cmVDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGFJlc2V0U2FtcGxpbmdTZWVkQ29tbWFuZCJdChZBZGRQcmVyZXF1aXNpdGVDb21tYW5kEkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjoKGVJlbW92ZVByZXJlcXVpc2l0ZUNvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkImkKIkNoYW5nZVByZXJlcXVpc2l0ZVZhcmlhdGlvbkNvbW1hbmQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUi0wEKGENyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgCIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAMgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uIhkKF1Jlc2V0RmxhZ1RyaWdnZXJDb21tYW5kIkcKI0NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIaChhFbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQiGwoZRGlzYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZCIaChhEZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQiHwodVXBkYXRlRmxhZ1RyaWdnZXJVc2FnZUNvbW1hbmRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwrojQEKG3Byb3RvL2ZlYXR1cmUvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vZmVhdHVyZS9jb21tYW5kLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvGhtwcm90by9mZWF0dXJlL3NlZ21lbnQucHJvdG8aIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8iUAoRR2V0RmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkoKEkdldEZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSJTChJHZXRGZWF0dXJlc1JlcXVlc3QSEAoDaWRzGAIgAygJUgNpZHMSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiTQoTR2V0RmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzIvUFChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISEgoEdGFncxgDIAMoCVIEdGFncxJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEjQKB2VuYWJsZWQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEkEKDmhhc19leHBlcmltZW50GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaGFzRXhwZXJpbWVudBIlCg5zZWFyY2hfa2V5d29yZBgKIAEoCVINc2VhcmNoS2V5d29yZBI2CghhcmNoaXZlZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEkcKEWhhc19wcmVyZXF1aXNpdGVzGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIQaGFzUHJlcmVxdWlzaXRlcxIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCJXCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgRUQUdTEAQSCwoHRU5BQkxFRBAFIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAYQByKHAQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAQoaTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchISCgR0YWdzGAMgAygJUgR0YWdzEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIm0KG0xpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yIoYBChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiTQoVQ3JlYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIs8FChRVcGRhdGVGZWF0dXJlUmVxdWVzdBIYCgdjb21tZW50GAEgASgJUgdjb21tZW50EiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkEg4KAmlkGAMgASgJUgJpZBIwCgRuYW1lGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhISCgR0YWdzGAYgAygJUgR0YWdzEjQKB2VuYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSPAoKdmFyaWF0aW9ucxgJIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJFCg1wcmVyZXF1aXNpdGVzGAogAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzEjMKB3RhcmdldHMYCyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMSLQoFcnVsZXMYDCADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxJGChBkZWZhdWx0X3N0cmF0ZWd5GA0gASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSD2RlZmF1bHRTdHJhdGVneRJBCg1vZmZfdmFyaWF0aW9uGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgxvZmZWYXJpYXRpb24iTQoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIrABChRFbmFibGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRW5hYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVEaXNhYmxlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZEaXNhYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVBcmNoaXZlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BcmNoaXZlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrYBChdVbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYVW5hcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrABChREZWxldGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlRmVhdHVyZVJlc3BvbnNlIt8DChtVcGRhdGVGZWF0dXJlRGV0YWlsc1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEl0KFnJlbmFtZV9mZWF0dXJlX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5SZW5hbWVGZWF0dXJlQ29tbWFuZFIUcmVuYW1lRmVhdHVyZUNvbW1hbmQSaQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAyABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5DaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJKChBhZGRfdGFnX2NvbW1hbmRzGAQgAygLMiAuYnVja2V0ZWVyLmZlYXR1cmUuQWRkVGFnQ29tbWFuZFIOYWRkVGFnQ29tbWFuZHMSUwoTcmVtb3ZlX3RhZ19jb21tYW5kcxgFIAMoCzIjLmJ1Y2tldGVlci5mZWF0dXJlLlJlbW92ZVRhZ0NvbW1hbmRSEXJlbW92ZVRhZ0NvbW1hbmRzEhgKB2NvbW1lbnQYByABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgGEAciHgocVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSKvAQoeVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiIQofVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXNwb25zZSKhAgodVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEjYKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZFIIY29tbWFuZHMSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBJJCgRmcm9tGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QuRnJvbVIEZnJvbRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCImCgRGcm9tEgsKB1VOS05PV04QABIICgRVU0VSEAESBwoDT1BTEAJKBAgDEAQiIAoeVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIpQBChNDbG9uZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRDbG9uZUZlYXR1cmVSZXNwb25zZSLZAQoUQ3JlYXRlU2VnbWVudFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIXCgRuYW1lGAMgASgJQgPgQQJSBG5hbWUSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIgCgtkZXNjcmlwdGlvbhgFIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiTQoVQ3JlYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IloKEUdldFNlZ21lbnRSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAMgASgJQgPgQQJSDWVudmlyb25tZW50SWRKBAgCEAMiSgoSR2V0U2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50Iq8EChNMaXN0U2VnbWVudHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYBCABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSMwoGc3RhdHVzGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxJDChBpc19pbl91c2Vfc3RhdHVzGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxIqCg5lbnZpcm9ubWVudF9pZBgJIAEoCUID4EECUg1lbnZpcm9ubWVudElkIkAKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAMQBCKHAQoUTGlzdFNlZ21lbnRzUmVzcG9uc2USNgoIc2VnbWVudHMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UghzZWdtZW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKWAQoURGVsZXRlU2VnbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkEKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIXChVEZWxldGVTZWdtZW50UmVzcG9uc2UiiwEKFFVwZGF0ZVNlZ21lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhcKFVVwZGF0ZVNlZ21lbnRSZXNwb25zZSKYAQoVQWRkU2VnbWVudFVzZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJCCgdjb21tYW5kGAIgASgLMiguYnVja2V0ZWVyLmZlYXR1cmUuQWRkU2VnbWVudFVzZXJDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhgKFkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UingEKGERlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRQoHY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIbChlEZWxldGVTZWdtZW50VXNlclJlc3BvbnNlIrgBChVHZXRTZWdtZW50VXNlclJlcXVlc3QSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAiABKAlSBnVzZXJJZBI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAQQBSJMChZHZXRTZWdtZW50VXNlclJlc3BvbnNlEjIKBHVzZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIEdXNlciLmAQoXTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIdCgpzZWdtZW50X2lkGAMgASgJUglzZWdtZW50SWQSMQoFc3RhdGUYBCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIFc3RhdGUSFwoHdXNlcl9pZBgFIAEoCVIGdXNlcklkEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkSgQIBhAHImgKGExpc3RTZWdtZW50VXNlcnNSZXNwb25zZRI0CgV1c2VycxgBIAMoCzIeLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyUgV1c2VycxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvciLQAgodQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEl0KB2NvbW1hbmQYAyABKAsyMC5idWNrZXRlZXIuZmVhdHVyZS5CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWQSSAoEZGF0YRgFIAEoDEI0kkExMi9zZWdtZW50IHVzZXIgaWRzIHNlcGFyYXRlZCBieSBjb21tYSBvciBuZXcgbGluZVIEZGF0YRI6CgVzdGF0ZRgGIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZUoECAEQAiIgCh5CdWxrVXBsb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiqQEKH0J1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIjYKIEJ1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEhIKBGRhdGEYASABKAxSBGRhdGEioQEKF0V2YWx1YXRlRmVhdHVyZXNSZXF1ZXN0EigKBHVzZXIYASABKAsyFC5idWNrZXRlZXIudXNlci5Vc2VyUgR1c2VyEhAKA3RhZxgDIAEoCVIDdGFnEh0KCmZlYXR1cmVfaWQYBCABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJpChhFdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2USTQoQdXNlcl9ldmFsdWF0aW9ucxgBIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlVzZXJFdmFsdWF0aW9uc1IPdXNlckV2YWx1YXRpb25zIqwDCg9MaXN0VGFnc1JlcXVlc3QSGwoJcGFnZV9zaXplGAIgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchJFCghvcmRlcl9ieRgEIAEoDjIqLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EloKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjIxLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiSAoHT3JkZXJCeRILCgdERUZBVUxUEAASBgoCSUQQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBE5BTUUQBCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIidwoQTGlzdFRhZ3NSZXNwb25zZRIqCgR0YWdzGAEgAygLMhYuYnVja2V0ZWVyLmZlYXR1cmUuVGFnUgR0YWdzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IrMBChhDcmVhdGVGbGFnVHJpZ2dlclJlcXVlc3QSagobY3JlYXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhjcmVhdGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIicAoZQ3JlYXRlRmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiwwEKGERlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZGVsZXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhkZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRGVsZXRlRmxhZ1RyaWdnZXJSZXNwb25zZSLmAQoYVXBkYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBKMAQonY2hhbmdlX2ZsYWdfdHJpZ2dlcl9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjYuYnVja2V0ZWVyLmZlYXR1cmUuQ2hhbmdlRmxhZ1RyaWdnZXJEZXNjcmlwdGlvbkNvbW1hbmRSI2NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGVVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiwwEKGEVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZW5hYmxlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmxhZ1RyaWdnZXJDb21tYW5kUhhlbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRW5hYmxlRmxhZ1RyaWdnZXJSZXNwb25zZSLHAQoZRGlzYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSbQocZGlzYWJsZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIsLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmRSGWRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiHAoaRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UivwEKF1Jlc2V0RmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJnChpyZXNldF9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlJlc2V0RmxhZ1RyaWdnZXJDb21tYW5kUhdyZXNldEZsYWdUcmlnZ2VyQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJvChhSZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIlQKFUdldEZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMibQoWR2V0RmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiqgMKF0xpc3RGbGFnVHJpZ2dlcnNSZXF1ZXN0Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchIbCglwYWdlX3NpemUYBCABKAVSCHBhZ2VTaXplEk0KCG9yZGVyX2J5GAUgASgOMjIuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJiCg9vcmRlcl9kaXJlY3Rpb24YBiABKA4yOS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiNgoHT3JkZXJCeRILCgdERUZBVUxUEAASDgoKQ1JFQVRFRF9BVBABEg4KClVQREFURURfQVQQAiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgCEAMiowIKGExpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZRJjCg1mbGFnX3RyaWdnZXJzGAEgAygLMj4uYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1Jlc3BvbnNlLkZsYWdUcmlnZ2VyV2l0aFVybFIMZmxhZ1RyaWdnZXJzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50GmkKEkZsYWdUcmlnZ2VyV2l0aFVybBJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiMQoZRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBIUCgV0b2tlbhgBIAEoCVIFdG9rZW4iHAoaRmxhZ1RyaWdnZXJXZWJob29rUmVzcG9uc2UyzzEKDkZlYXR1cmVTZXJ2aWNlElsKCkdldEZlYXR1cmUSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRGZWF0dXJlUmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVSZXNwb25zZSIAEl4KC0dldEZlYXR1cmVzEiUuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXF1ZXN0GiYuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXNwb25zZSIAEmEKDExpc3RGZWF0dXJlcxImLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QaJy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXNwb25zZSIAEnYKE0xpc3RFbmFibGVkRmVhdHVyZXMSLS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RW5hYmxlZEZlYXR1cmVzUmVxdWVzdBouLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZSIAEmQKDUNyZWF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZlYXR1cmVSZXNwb25zZSIAEmQKDVVwZGF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVSZXNwb25zZSIAEmcKDUVuYWJsZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5FbmFibGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmoKDkRpc2FibGVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmcKDkFyY2hpdmVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEm0KEFVuYXJjaGl2ZUZlYXR1cmUSKi5idWNrZXRlZXIuZmVhdHVyZS5VbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEmQKDURlbGV0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVSZXNwb25zZSIAEnkKFFVwZGF0ZUZlYXR1cmVEZXRhaWxzEi4uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXF1ZXN0Gi8uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSIAEoIBChdVcGRhdGVGZWF0dXJlVmFyaWF0aW9ucxIxLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVxdWVzdBoyLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVzcG9uc2UiABJ/ChZVcGRhdGVGZWF0dXJlVGFyZ2V0aW5nEjAuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QaMS5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVGFyZ2V0aW5nUmVzcG9uc2UiABJhCgxDbG9uZUZlYXR1cmUSJi5idWNrZXRlZXIuZmVhdHVyZS5DbG9uZUZlYXR1cmVSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlUmVzcG9uc2UiABKmBAoNQ3JlYXRlU2VnbWVudBInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRSZXF1ZXN0GiguYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlU2VnbWVudFJlc3BvbnNlIsEDkkGnAwoHc2VnbWVudBIGQ3JlYXRlGhFDcmVhdGUgYSBzZWdtZW50LioVd2ViLnYxLnNlZ21lbnQuY3JlYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCECILL3YxL3NlZ21lbnQ6ASoSkQQKCkdldFNlZ21lbnQSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRTZWdtZW50UmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRSZXNwb25zZSK1A5JBngMKB3NlZ21lbnQSA0dldBoOR2V0IGEgc2VnbWVudC4qEndlYi52MS5zZWdtZW50LmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0SCy92MS9zZWdtZW50EpoECgxMaXN0U2VnbWVudHMSJi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVzcG9uc2UiuAOSQaADCgdzZWdtZW50EgRMaXN0Gg5MaXN0IHNlZ21lbnRzLioTd2ViLnYxLnNlZ21lbnQubGlzdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg4SDC92MS9zZWdtZW50cxJkCg1EZWxldGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50UmVzcG9uc2UiABJkCg1VcGRhdGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVTZWdtZW50UmVzcG9uc2UiABJqCg5BZGRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJzChFEZWxldGVTZWdtZW50VXNlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJqCg5HZXRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJtChBMaXN0U2VnbWVudFVzZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudFVzZXJzUmVzcG9uc2UiABLsBAoWQnVsa1VwbG9hZFNlZ21lbnRVc2VycxIwLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIuwDkkHAAwoHc2VnbWVudBILQnVsayB1cGxvYWQaGkJ1bGsgdXBsb2FkIHNlZ21lbnQgdXNlcnMuKiB3ZWIudjEuc2VnbWVudF91c2Vycy5idWxrX3VwbG9hZEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiIiHS92MS9zZWdtZW50X3VzZXJzL2J1bGtfdXBsb2FkOgEqEoUBChhCdWxrRG93bmxvYWRTZWdtZW50VXNlcnMSMi5idWNrZXRlZXIuZmVhdHVyZS5CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjMuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa0Rvd25sb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiABJtChBFdmFsdWF0ZUZlYXR1cmVzEiouYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGVGZWF0dXJlc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2UiABL+AwoITGlzdFRhZ3MSIi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QaIy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1Jlc3BvbnNlIqgDkkGUAwoDdGFnEgRMaXN0GgpMaXN0IHRhZ3MuKg93ZWIudjEudGFnLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvdGFncxJwChFDcmVhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFVcGRhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFFbmFibGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJzChJEaXNhYmxlRmxhZ1RyaWdnZXISLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJSZXF1ZXN0Gi0uYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBSZXNldEZsYWdUcmlnZ2VyEiouYnVja2V0ZWVyLmZlYXR1cmUuUmVzZXRGbGFnVHJpZ2dlclJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFEZWxldGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJnCg5HZXRGbGFnVHJpZ2dlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBMaXN0RmxhZ1RyaWdnZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2UiABKUAQoSRmxhZ1RyaWdnZXJXZWJob29rEiwuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBotLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlIiGC0+STAhsiGS93ZWJob29rL3RyaWdnZXJzL3t0b2tlbn1CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqcAwoVcHJvdG8vcHVzaC9wdXNoLnByb3RvEg5idWNrZXRlZXIucHVzaCK6AgoEUHVzaBIOCgJpZBgBIAEoCVICaWQSEgoEdGFncxgDIAMoCVIEdGFncxIYCgdkZWxldGVkGAQgASgIUgdkZWxldGVkEhIKBG5hbWUYBSABKAlSBG5hbWUSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBIuChNmY21fc2VydmljZV9hY2NvdW50GAggASgJUhFmY21TZXJ2aWNlQWNjb3VudBIaCghkaXNhYmxlZBgJIAEoCFIIZGlzYWJsZWQSJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWQSKQoQZW52aXJvbm1lbnRfbmFtZRgLIAEoCVIPZW52aXJvbm1lbnROYW1lSgQIAhADQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzMK6gIKGHByb3RvL3B1c2gvY29tbWFuZC5wcm90bxIOYnVja2V0ZWVyLnB1c2gicQoRQ3JlYXRlUHVzaENvbW1hbmQSEgoEdGFncxgCIAMoCVIEdGFncxISCgRuYW1lGAMgASgJUgRuYW1lEi4KE2ZjbV9zZXJ2aWNlX2FjY291bnQYBCABKAxSEWZjbVNlcnZpY2VBY2NvdW50SgQIARACIigKEkFkZFB1c2hUYWdzQ29tbWFuZBISCgR0YWdzGAEgAygJUgR0YWdzIisKFURlbGV0ZVB1c2hUYWdzQ29tbWFuZBISCgR0YWdzGAEgAygJUgR0YWdzIhMKEURlbGV0ZVB1c2hDb21tYW5kIicKEVJlbmFtZVB1c2hDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWVCLlosZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3B1c2hiBnByb3RvMwrJIQoYcHJvdG8vcHVzaC9zZXJ2aWNlLnByb3RvEg5idWNrZXRlZXIucHVzaBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhVwcm90by9wdXNoL3B1c2gucHJvdG8aGHByb3RvL3B1c2gvY29tbWFuZC5wcm90byLZAQoRQ3JlYXRlUHVzaFJlcXVlc3QSPwoHY29tbWFuZBgCIAEoCzIhLmJ1Y2tldGVlci5wdXNoLkNyZWF0ZVB1c2hDb21tYW5kQgIYAVIHY29tbWFuZBISCgR0YWdzGAMgAygJUgR0YWdzEhIKBG5hbWUYBCABKAlSBG5hbWUSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgFIAEoDFIRZmNtU2VydmljZUFjY291bnQSJQoOZW52aXJvbm1lbnRfaWQYBiABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiPgoSQ3JlYXRlUHVzaFJlc3BvbnNlEigKBHB1c2gYASABKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgRwdXNoIqEEChFMaXN0UHVzaGVzUmVxdWVzdBIbCglwYWdlX3NpemUYAiABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgDIAEoCVIGY3Vyc29yEkQKCG9yZGVyX2J5GAQgASgOMikuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJZCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yMC5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQSJwoPb3JnYW5pemF0aW9uX2lkGAggASgJUg5vcmdhbml6YXRpb25JZBI2CghkaXNhYmxlZBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkIlwKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEg8KC0VOVklST05NRU5UEAQSCQoFU1RBVEUQBSIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIiewoSTGlzdFB1c2hlc1Jlc3BvbnNlEiwKBnB1c2hlcxgBIAMoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBnB1c2hlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKNAQoRRGVsZXRlUHVzaFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEjsKB2NvbW1hbmQYAyABKAsyIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiIUChJEZWxldGVQdXNoUmVzcG9uc2Ui7gMKEVVwZGF0ZVB1c2hSZXF1ZXN0EhMKAmlkGAIgASgJQgPgQQJSAmlkElkKFWFkZF9wdXNoX3RhZ3NfY29tbWFuZBgDIAEoCzIiLmJ1Y2tldGVlci5wdXNoLkFkZFB1c2hUYWdzQ29tbWFuZEICGAFSEmFkZFB1c2hUYWdzQ29tbWFuZBJiChhkZWxldGVfcHVzaF90YWdzX2NvbW1hbmQYBCABKAsyJS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoVGFnc0NvbW1hbmRCAhgBUhVkZWxldGVQdXNoVGFnc0NvbW1hbmQSVQoTcmVuYW1lX3B1c2hfY29tbWFuZBgFIAEoCzIhLmJ1Y2tldGVlci5wdXNoLlJlbmFtZVB1c2hDb21tYW5kQgIYAVIRcmVuYW1lUHVzaENvbW1hbmQSEgoEdGFncxgGIAMoCVIEdGFncxIwCgRuYW1lGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEioKDmVudmlyb25tZW50X2lkGAggASgJQgPgQQJSDWVudmlyb25tZW50SWQSNgoIZGlzYWJsZWQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZEoECAEQAiI+ChJVcGRhdGVQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2giUQoOR2V0UHVzaFJlcXVlc3QSKgoOZW52aXJvbm1lbnRfaWQYASABKAlCA+BBAlINZW52aXJvbm1lbnRJZBITCgJpZBgCIAEoCUID4EECUgJpZCI7Cg9HZXRQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2gygBEKC1B1c2hTZXJ2aWNlEoQECgpMaXN0UHVzaGVzEiEuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVzcG9uc2UirgOSQZgDCgRwdXNoEgRMaXN0GgxMaXN0IHB1c2hlcy4qEHdlYi52MS5wdXNoLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIMEgovdjEvcHVzaGVzEosECgpDcmVhdGVQdXNoEiEuYnVja2V0ZWVyLnB1c2guQ3JlYXRlUHVzaFJlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5DcmVhdGVQdXNoUmVzcG9uc2UitQOSQZ4DCgRwdXNoEgZDcmVhdGUaDkNyZWF0ZSBhIHB1c2guKhJ3ZWIudjEucHVzaC5jcmVhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINIggvdjEvcHVzaDoBKhKLBAoKVXBkYXRlUHVzaBIhLmJ1Y2tldGVlci5wdXNoLlVwZGF0ZVB1c2hSZXF1ZXN0GiIuYnVja2V0ZWVyLnB1c2guVXBkYXRlUHVzaFJlc3BvbnNlIrUDkkGeAwoEcHVzaBIGVXBkYXRlGg5VcGRhdGUgYSBwdXNoLioSd2ViLnYxLnB1c2gudXBkYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCDTIIL3YxL3B1c2g6ASoS9gMKB0dldFB1c2gSHi5idWNrZXRlZXIucHVzaC5HZXRQdXNoUmVxdWVzdBofLmJ1Y2tldGVlci5wdXNoLkdldFB1c2hSZXNwb25zZSKpA5JBlQMKBHB1c2gSA0dldBoLR2V0IGEgcHVzaC4qD3dlYi52MS5wdXNoLmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgoSCC92MS9wdXNoElUKCkRlbGV0ZVB1c2gSIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoUmVxdWVzdBoiLmJ1Y2tldGVlci5wdXNoLkRlbGV0ZVB1c2hSZXNwb25zZSIAQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrAEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEiqAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50GtcBCgRSb2xlIlkKC0Vudmlyb25tZW50EhoKFkVudmlyb25tZW50X1VOQVNTSUdORUQQABIWChJFbnZpcm9ubWVudF9WSUVXRVIQARIWChJFbnZpcm9ubWVudF9FRElUT1IQAiJ0CgxPcmdhbml6YXRpb24SGwoXT3JnYW5pemF0aW9uX1VOQVNTSUdORUQQABIXChNPcmdhbml6YXRpb25fTUVNQkVSEAESFgoST3JnYW5pemF0aW9uX0FETUlOEAISFgoST3JnYW5pemF0aW9uX09XTkVSEAMaewoPRW52aXJvbm1lbnRSb2xlEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkEKBHJvbGUYAiABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZSLqBgoOQ29uc29sZUFjY291bnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKYXZhdGFyX3VybBgDIAEoCVIJYXZhdGFyVXJsEiYKD2lzX3N5c3RlbV9hZG1pbhgEIAEoCFINaXNTeXN0ZW1BZG1pbhJHCgxvcmdhbml6YXRpb24YBSABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24SWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSXgoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyMS5idWNrZXRlZXIuYWNjb3VudC5Db25zb2xlQWNjb3VudC5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSRgoOc2VhcmNoX2ZpbHRlcnMYCCADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgJIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgKIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCyABKAlSCGxhbmd1YWdlEigKEGF2YXRhcl9maWxlX3R5cGUYDCABKAlSDmF2YXRhckZpbGVUeXBlEiEKDGF2YXRhcl9pbWFnZRgNIAEoDFILYXZhdGFySW1hZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhrWAQoPRW52aXJvbm1lbnRSb2xlEkYKC2Vudmlyb25tZW50GAEgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EjgKB3Byb2plY3QYAiABKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIHcHJvamVjdBJBCgRyb2xlGAMgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGVCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrmBgobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8iuwMKBkFQSUtleRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIyCgRyb2xlGAMgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHgoKbWFpbnRhaW5lchgHIAEoCVIKbWFpbnRhaW5lchIXCgdhcGlfa2V5GAggASgJUgZhcGlLZXkSIAoLZGVzY3JpcHRpb24YCSABKAlSC2Rlc2NyaXB0aW9uEikKEGVudmlyb25tZW50X25hbWUYCiABKAlSD2Vudmlyb25tZW50TmFtZSJ5CgRSb2xlEgsKB1VOS05PV04QABIOCgpTREtfQ0xJRU5UEAESDgoKU0RLX1NFUlZFUhACEhgKFFBVQkxJQ19BUElfUkVBRF9PTkxZEAMSFAoQUFVCTElDX0FQSV9XUklURRAEEhQKEFBVQkxJQ19BUElfQURNSU4QBSKVAgoRRW52aXJvbm1lbnRBUElLZXkSMgoHYXBpX2tleRgCIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5EjEKFGVudmlyb25tZW50X2Rpc2FibGVkGAMgASgIUhNlbnZpcm9ubWVudERpc2FibGVkEiEKCnByb2plY3RfaWQYBCABKAlCAhgBUglwcm9qZWN0SWQSRgoLZW52aXJvbm1lbnQYBSABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSKAoQcHJvamVjdF91cmxfY29kZRgGIAEoCVIOcHJvamVjdFVybENvZGVKBAgBEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrWEQobcHJvdG8vYWNjb3VudC9jb21tYW5kLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvGhtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8aIXByb3RvL2FjY291bnQvc2VhcmNoX2ZpbHRlci5wcm90byL8AgoWQ3JlYXRlQWNjb3VudFYyQ29tbWFuZBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBJbChFvcmdhbml6YXRpb25fcm9sZRgEIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgFIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSHQoKZmlyc3RfbmFtZRgGIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgHIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCCABKAlSCGxhbmd1YWdlIjAKGkNoYW5nZUFjY291bnRWMk5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQAofQ2hhbmdlQWNjb3VudFYyRmlyc3ROYW1lQ29tbWFuZBIdCgpmaXJzdF9uYW1lGAEgASgJUglmaXJzdE5hbWUiPQoeQ2hhbmdlQWNjb3VudFYyTGFzdE5hbWVDb21tYW5kEhsKCWxhc3RfbmFtZRgBIAEoCVIIbGFzdE5hbWUiPAoeQ2hhbmdlQWNjb3VudFYyTGFuZ3VhZ2VDb21tYW5kEhoKCGxhbmd1YWdlGAEgASgJUghsYW5ndWFnZSJQCiRDaGFuZ2VBY2NvdW50VjJBdmF0YXJJbWFnZVVybENvbW1hbmQSKAoQYXZhdGFyX2ltYWdlX3VybBgBIAEoCVIOYXZhdGFySW1hZ2VVcmwiawocQ2hhbmdlQWNjb3VudFYyQXZhdGFyQ29tbWFuZBIhCgxhdmF0YXJfaW1hZ2UYASABKAxSC2F2YXRhckltYWdlEigKEGF2YXRhcl9maWxlX3R5cGUYAiABKAlSDmF2YXRhckZpbGVUeXBlIj0KHkNoYW5nZUFjY291bnRWMkxhc3RTZWVuQ29tbWFuZBIbCglsYXN0X3NlZW4YASABKANSCGxhc3RTZWVuImwKJkNoYW5nZUFjY291bnRWMk9yZ2FuaXphdGlvblJvbGVDb21tYW5kEkIKBHJvbGUYASABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SBHJvbGUipQIKJkNoYW5nZUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDb21tYW5kEkIKBXJvbGVzGAEgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIFcm9sZXMSYgoKd3JpdGVfdHlwZRgCIAEoDjJDLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDb21tYW5kLldyaXRlVHlwZVIJd3JpdGVUeXBlIlMKCVdyaXRlVHlwZRIZChVXcml0ZVR5cGVfVU5TUEVDSUZJRUQQABIWChJXcml0ZVR5cGVfT1ZFUlJJREUQARITCg9Xcml0ZVR5cGVfUEFUQ0gQAiIYChZFbmFibGVBY2NvdW50VjJDb21tYW5kIhkKF0Rpc2FibGVBY2NvdW50VjJDb21tYW5kIhgKFkRlbGV0ZUFjY291bnRWMkNvbW1hbmQiXQoTQ3JlYXRlQVBJS2V5Q29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lEjIKBHJvbGUYAiABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZSItChdDaGFuZ2VBUElLZXlOYW1lQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIhUKE0VuYWJsZUFQSUtleUNvbW1hbmQiFgoURGlzYWJsZUFQSUtleUNvbW1hbmQi5gEKGUNyZWF0ZVNlYXJjaEZpbHRlckNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIUCgVxdWVyeRgCIAEoCVIFcXVlcnkSUQoSZmlsdGVyX3RhcmdldF90eXBlGAMgASgOMiMuYnVja2V0ZWVyLmFjY291bnQuRmlsdGVyVGFyZ2V0VHlwZVIQZmlsdGVyVGFyZ2V0VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZBIlCg5kZWZhdWx0X2ZpbHRlchgFIAEoCFINZGVmYXVsdEZpbHRlciJDCh1DaGFuZ2VTZWFyY2hGaWx0ZXJOYW1lQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJGCh5DaGFuZ2VTZWFyY2hGaWx0ZXJRdWVyeUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhQKBXF1ZXJ5GAIgASgJUgVxdWVyeSJZCiBDaGFuZ2VEZWZhdWx0U2VhcmNoRmlsdGVyQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSJQoOZGVmYXVsdF9maWx0ZXIYAiABKAhSDWRlZmF1bHRGaWx0ZXIiKwoZRGVsZXRlU2VhcmNoRmlsdGVyQ29tbWFuZBIOCgJpZBgBIAEoCVICaWRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwqtvgEKG3Byb3RvL2FjY291bnQvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvGhtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8aG3Byb3RvL2FjY291bnQvY29tbWFuZC5wcm90bxokcHJvdG8vZW52aXJvbm1lbnQvb3JnYW5pemF0aW9uLnByb3RvIjcKDEdldE1lUmVxdWVzdBInCg9vcmdhbml6YXRpb25faWQYASABKAlSDm9yZ2FuaXphdGlvbklkIkwKDUdldE1lUmVzcG9uc2USOwoHYWNjb3VudBgBIAEoCzIhLmJ1Y2tldGVlci5hY2NvdW50LkNvbnNvbGVBY2NvdW50UgdhY2NvdW50IhsKGUdldE15T3JnYW5pemF0aW9uc1JlcXVlc3QiOAogR2V0TXlPcmdhbml6YXRpb25zQnlFbWFpbFJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsImcKGkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlEkkKDW9yZ2FuaXphdGlvbnMYASADKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUg1vcmdhbml6YXRpb25zIu4DChZDcmVhdGVBY2NvdW50VjJSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQSRwoHY29tbWFuZBgCIAEoCzIpLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMkNvbW1hbmRCAhgBUgdjb21tYW5kEhQKBWVtYWlsGAMgASgJUgVlbWFpbBISCgRuYW1lGAQgASgJUgRuYW1lEigKEGF2YXRhcl9pbWFnZV91cmwYBSABKAlSDmF2YXRhckltYWdlVXJsElsKEW9yZ2FuaXphdGlvbl9yb2xlGAYgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAcgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIdCgpmaXJzdF9uYW1lGAggASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAkgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgKIAEoCVIIbGFuZ3VhZ2UiUQoXQ3JlYXRlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKgAQoWRW5hYmxlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAMgASgLMikuYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQiUQoXRW5hYmxlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKiAQoXRGlzYWJsZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSSAoHY29tbWFuZBgDIAEoCzIqLmJ1Y2tldGVlci5hY2NvdW50LkRpc2FibGVBY2NvdW50VjJDb21tYW5kQgIYAVIHY29tbWFuZCJSChhEaXNhYmxlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKgAQoWRGVsZXRlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAMgASgLMikuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQiGQoXRGVsZXRlQWNjb3VudFYyUmVzcG9uc2Ui5g8KFlVwZGF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSYQoTY2hhbmdlX25hbWVfY29tbWFuZBgDIAEoCzItLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMk5hbWVDb21tYW5kQgIYAVIRY2hhbmdlTmFtZUNvbW1hbmQSdgoZY2hhbmdlX2F2YXRhcl91cmxfY29tbWFuZBgEIAEoCzI3LmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkF2YXRhckltYWdlVXJsQ29tbWFuZEICGAFSFmNoYW5nZUF2YXRhclVybENvbW1hbmQShgEKIGNoYW5nZV9vcmdhbml6YXRpb25fcm9sZV9jb21tYW5kGAUgASgLMjkuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyT3JnYW5pemF0aW9uUm9sZUNvbW1hbmRCAhgBUh1jaGFuZ2VPcmdhbml6YXRpb25Sb2xlQ29tbWFuZBKGAQogY2hhbmdlX2Vudmlyb25tZW50X3JvbGVzX2NvbW1hbmQYBiABKAsyOS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZEICGAFSHWNoYW5nZUVudmlyb25tZW50Um9sZXNDb21tYW5kEnEKGWNoYW5nZV9maXJzdF9uYW1lX2NvbW1hbmQYByABKAsyMi5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJGaXJzdE5hbWVDb21tYW5kQgIYAVIWY2hhbmdlRmlyc3ROYW1lQ29tbWFuZBJuChhjaGFuZ2VfbGFzdF9uYW1lX2NvbW1hbmQYCCABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJMYXN0TmFtZUNvbW1hbmRCAhgBUhVjaGFuZ2VMYXN0TmFtZUNvbW1hbmQSbQoXY2hhbmdlX2xhbmd1YWdlX2NvbW1hbmQYCSABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJMYW5ndWFnZUNvbW1hbmRCAhgBUhVjaGFuZ2VMYW5ndWFnZUNvbW1hbmQSbgoYY2hhbmdlX2xhc3Rfc2Vlbl9jb21tYW5kGAogASgLMjEuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyTGFzdFNlZW5Db21tYW5kQgIYAVIVY2hhbmdlTGFzdFNlZW5Db21tYW5kEmcKFWNoYW5nZV9hdmF0YXJfY29tbWFuZBgLIAEoCzIvLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkF2YXRhckNvbW1hbmRCAhgBUhNjaGFuZ2VBdmF0YXJDb21tYW5kEjAKBG5hbWUYDCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSRgoQYXZhdGFyX2ltYWdlX3VybBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIOYXZhdGFySW1hZ2VVcmwSbAoRb3JnYW5pemF0aW9uX3JvbGUYDiABKAsyPy5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0Lk9yZ2FuaXphdGlvblJvbGVWYWx1ZVIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgPIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSOwoKZmlyc3RfbmFtZRgQIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIJZmlyc3ROYW1lEjkKCWxhc3RfbmFtZRgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIIbGFzdE5hbWUSOAoIbGFuZ3VhZ2UYEiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSCGxhbmd1YWdlEjgKCWxhc3Rfc2VlbhgTIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlUghsYXN0U2VlbhJRCgZhdmF0YXIYFCABKAsyOS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0LkFjY291bnRWMkF2YXRhclIGYXZhdGFyEjYKCGRpc2FibGVkGBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQaXgoPQWNjb3VudFYyQXZhdGFyEiEKDGF2YXRhcl9pbWFnZRgBIAEoDFILYXZhdGFySW1hZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgCIAEoCVIOYXZhdGFyRmlsZVR5cGUaWwoVT3JnYW5pemF0aW9uUm9sZVZhbHVlEkIKBHJvbGUYASABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SBHJvbGUiUQoXVXBkYXRlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCJUChNHZXRBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkIk4KFEdldEFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiYQoiR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQiXQojR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKLBgoVTGlzdEFjY291bnRzVjJSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISJwoPb3JnYW5pemF0aW9uX2lkGAMgASgJUg5vcmdhbml6YXRpb25JZBJLCghvcmRlcl9ieRgEIAEoDjIwLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmAKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI3LmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSNgoIZGlzYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBJIChFvcmdhbml6YXRpb25fcm9sZRgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhBvcmdhbml6YXRpb25Sb2xlEkMKDmVudmlyb25tZW50X2lkGAkgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg1lbnZpcm9ubWVudElkEkYKEGVudmlyb25tZW50X3JvbGUYCiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIPZW52aXJvbm1lbnRSb2xlIokBCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIJCgVFTUFJTBABEg4KCkNSRUFURURfQVQQAhIOCgpVUERBVEVEX0FUEAMSFQoRT1JHQU5JWkFUSU9OX1JPTEUQBBIVChFFTlZJUk9OTUVOVF9DT1VOVBAFEg0KCUxBU1RfU0VFThAGEgkKBVNUQVRFEAciIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABIosBChZMaXN0QWNjb3VudHNWMlJlc3BvbnNlEjgKCGFjY291bnRzGAEgAygLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUghhY2NvdW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAgoTQ3JlYXRlQVBJS2V5UmVxdWVzdBJECgdjb21tYW5kGAEgASgLMiYuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQVBJS2V5Q29tbWFuZEICGAFSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWQSEgoEbmFtZRgEIAEoCVIEbmFtZRIyCgRyb2xlGAUgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSHgoKbWFpbnRhaW5lchgGIAEoCVIKbWFpbnRhaW5lchIgCgtkZXNjcmlwdGlvbhgHIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiSgoUQ3JlYXRlQVBJS2V5UmVzcG9uc2USMgoHYXBpX2tleRgBIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5IpwBChdDaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhoKGENoYW5nZUFQSUtleU5hbWVSZXNwb25zZSKUAQoTRW5hYmxlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQAoHY29tbWFuZBgCIAEoCzImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFgoURW5hYmxlQVBJS2V5UmVzcG9uc2UilgEKFERpc2FibGVBUElLZXlSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJBCgdjb21tYW5kGAIgASgLMicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGlzYWJsZUFQSUtleVJlc3BvbnNlIk8KEEdldEFQSUtleVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkcKEUdldEFQSUtleVJlc3BvbnNlEjIKB2FwaV9rZXkYASABKAsyGS5idWNrZXRlZXIuYWNjb3VudC5BUElLZXlSBmFwaUtleSLmBAoSTGlzdEFQSUtleXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSAoIb3JkZXJfYnkYBCABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJdCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNC5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSKQoOZW52aXJvbm1lbnRfaWQYCCABKAlCAhgBUg1lbnZpcm9ubWVudElkEicKD2Vudmlyb25tZW50X2lkcxgJIAMoCVIOZW52aXJvbm1lbnRJZHMSLAoPb3JnYW5pemF0aW9uX2lkGAogASgJQgPgQQJSDm9yZ2FuaXphdGlvbklkImYKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBFJPTEUQBBIPCgtFTlZJUk9OTUVOVBAFEgkKBVNUQVRFEAYiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIAxAEIoQBChNMaXN0QVBJS2V5c1Jlc3BvbnNlEjQKCGFwaV9rZXlzGAEgAygLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgdhcGlLZXlzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IjYKG0dldEVudmlyb25tZW50QVBJS2V5UmVxdWVzdBIXCgdhcGlfa2V5GAIgASgJUgZhcGlLZXkidAocR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZRJUChNlbnZpcm9ubWVudF9hcGlfa2V5GAEgASgLMiQuYnVja2V0ZWVyLmFjY291bnQuRW52aXJvbm1lbnRBUElLZXlSEWVudmlyb25tZW50QXBpS2V5IskBChlDcmVhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEkYKB2NvbW1hbmQYBCABKAsyLC5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJDb21tYW5kUgdjb21tYW5kIhwKGkNyZWF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlIsADChlVcGRhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEmAKE2NoYW5nZV9uYW1lX2NvbW1hbmQYBCABKAsyMC5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJOYW1lQ29tbWFuZFIRY2hhbmdlTmFtZUNvbW1hbmQSYwoUY2hhbmdlX3F1ZXJ5X2NvbW1hbmQYBSABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJRdWVyeUNvbW1hbmRSEmNoYW5nZVF1ZXJ5Q29tbWFuZBJ2Ch1jaGFuZ2VfZGVmYXVsdF9maWx0ZXJfY29tbWFuZBgGIAEoCzIzLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZURlZmF1bHRTZWFyY2hGaWx0ZXJDb21tYW5kUhpjaGFuZ2VEZWZhdWx0RmlsdGVyQ29tbWFuZCIcChpVcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLJAQoZRGVsZXRlU2VhcmNoRmlsdGVyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZBJGCgdjb21tYW5kGAQgASgLMiwuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlU2VhcmNoRmlsdGVyQ29tbWFuZFIHY29tbWFuZCIcChpEZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLoAgoTVXBkYXRlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SMgoEcm9sZRgFIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSPAoKbWFpbnRhaW5lchgHIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIKbWFpbnRhaW5lciIWChRVcGRhdGVBUElLZXlSZXNwb25zZTLOegoOQWNjb3VudFNlcnZpY2USngQKBUdldE1lEh8uYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXF1ZXN0GiAuYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXNwb25zZSLRA5JBswMKB0FjY291bnQSBkdldCBNZRodR2V0IHRoZSB1c2VyIGNvbnNvbGUgYWNjb3VudC4qFXdlYi52MS5hY2NvdW50LmdldF9tZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhQSEi92MS9hY2NvdW50L2dldF9tZRL4BAoSR2V0TXlPcmdhbml6YXRpb25zEiwuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlIoQEkkHcAwoHQWNjb3VudBIUR2V0IE15IE9yZ2FuaXphdGlvbnMaLkdldCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgZm9yIGEgc3BlY2lmaWMgdXNlci4qH3dlYi52MS5hY2NvdW50Lm15X29yZ2FuaXphdGlvbnNKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIeEhwvdjEvYWNjb3VudC9teV9vcmdhbml6YXRpb25zEpYFChlHZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsEjMuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zQnlFbWFpbFJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5HZXRNeU9yZ2FuaXphdGlvbnNSZXNwb25zZSKUBJJB4wMKB0FjY291bnQSHUdldCBNeSBPcmdhbml6YXRpb25zIEJ5IEVtYWlsGiNHZXQgYWxsIHRoZSBvcmdhbml6YXRpb25zIGJ5IGVtYWlsLiood2ViLnYxLmFjY291bnQubXlfb3JnYW5pemF0aW9uc19ieV9lbWFpbEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAicSJS92MS9hY2NvdW50L215X29yZ2FuaXphdGlvbnNfYnlfZW1haWwSugYKD0NyZWF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBY2NvdW50VjJSZXNwb25zZSLPBZJBpgUKB0FjY291bnQSBkNyZWF0ZRpcQ3JlYXRlIGFuIGFjY291bnQgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmNyZWF0ZV9hY2NvdW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2NyZWF0ZV9hY2NvdW50OgEqEs4DCg9FbmFibGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQWNjb3VudFYyUmVzcG9uc2Ui4wKSQboCCgdBY2NvdW50EgZFbmFibGUaXEVuYWJsZSBhbiBhY2NvdW50IHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC5lbmFibGVfYWNjb3VudEqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hY2NvdW50OgEqEsIGChBEaXNhYmxlQWNjb3VudFYyEiouYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFjY291bnRWMlJlcXVlc3QaKy5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQWNjb3VudFYyUmVzcG9uc2Ui1AWSQaoFCgdBY2NvdW50EgdEaXNhYmxlGl5EaXNhYmxlIGFuIGFjY291bnQgdG8gYmxvY2sgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh53ZWIudjEuYWNjb3VudC5kaXNhYmxlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCICIbL3YxL2FjY291bnQvZGlzYWJsZV9hY2NvdW50OgEqEpwGCg9VcGRhdGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQWNjb3VudFYyUmVzcG9uc2UisQWSQYgFCgdBY2NvdW50EgZVcGRhdGUaPlVwZGF0ZSBhbiBhY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC51cGRhdGVfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfIhovdjEvYWNjb3VudC91cGRhdGVfYWNjb3VudDoBKhKcBgoPRGVsZXRlQWNjb3VudFYyEikuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyUmVxdWVzdBoqLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZUFjY291bnRWMlJlc3BvbnNlIrEFkkGIBQoHQWNjb3VudBIGRGVsZXRlGj5EZWxldGUgYW4gYWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuZGVsZXRlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvZGVsZXRlX2FjY291bnQ6ASoSrAQKDEdldEFjY291bnRWMhImLmJ1Y2tldGVlci5hY2NvdW50LkdldEFjY291bnRWMlJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJSZXNwb25zZSLKA5JBpwMKB0FjY291bnQSA0dldBoPR2V0IGFuIGFjY291bnQuKhp3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hY2NvdW50Ep0FChtHZXRBY2NvdW50VjJCeUVudmlyb25tZW50SUQSNS5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXF1ZXN0GjYuYnVja2V0ZWVyLmFjY291bnQuR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2UijgSSQdwDCgdBY2NvdW50EhpHZXQgQWNjb3VudCBCeSBFbnZpcm9ubWVudBoeR2V0IGFuIGFjY291bnQgYnkgZW52aXJvbm1lbnQuKil3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudF9ieV9lbnZpcm9ubWVudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAigSJi92MS9hY2NvdW50L2dldF9hY2NvdW50X2J5X2Vudmlyb25tZW50ErYECg5MaXN0QWNjb3VudHNWMhIoLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdBopLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVzcG9uc2UizgOSQakDCgdBY2NvdW50EgRMaXN0Gg5MaXN0IGFjY291bnRzLiocd2ViLnYxLmFjY291bnQubGlzdF9hY2NvdW50c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYWNjb3VudHMSsAYKDENyZWF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBUElLZXlSZXNwb25zZSLOBZJBpQUKB0FQSSBLZXkSBkNyZWF0ZRpbQ3JlYXRlIGFuIEFQSSBrZXkgdG8gYmUgdXNlZCBvbiB0aGUgY2xpZW50IFNESy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuY3JlYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvY3JlYXRlX2FwaV9rZXk6ASoSvAYKEENoYW5nZUFQSUtleU5hbWUSKi5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBorLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVSZXNwb25zZSLOBZJBoAUKB0FQSSBLZXkSE0NoYW5nZSBBUEkgS2V5IE5hbWUaRENoYW5nZSB0aGUgQVBJIEtleSBOYW1lLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKiJ3ZWIudjEuYWNjb3VudC5jaGFuZ2VfYXBpX2tleV9uYW1lSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiQiHy92MS9hY2NvdW50L2NoYW5nZV9hcGlfa2V5X25hbWU6ASoSkwYKDEVuYWJsZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBUElLZXlSZXNwb25zZSKxBZJBiAUKB0FQSSBLZXkSBkVuYWJsZRo+RW5hYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmVuYWJsZV9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hcGlfa2V5OgEqEpoGCg1EaXNhYmxlQVBJS2V5EicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleVJlcXVlc3QaKC5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQVBJS2V5UmVzcG9uc2UitQWSQYsFCgdBUEkgS2V5EgdEaXNhYmxlGj9EaXNhYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHndlYi52MS5hY2NvdW50LmRpc2FibGVfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIgIhsvdjEvYWNjb3VudC9kaXNhYmxlX2FwaV9rZXk6ASoSowQKCUdldEFQSUtleRIjLmJ1Y2tldGVlci5hY2NvdW50LkdldEFQSUtleVJlcXVlc3QaJC5idWNrZXRlZXIuYWNjb3VudC5HZXRBUElLZXlSZXNwb25zZSLKA5JBpwMKB0FQSSBLZXkSA0dldBoPR2V0IGFuIEFQSSBLZXkuKhp3ZWIudjEuYWNjb3VudC5nZXRfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hcGlfa2V5Eq0ECgtMaXN0QVBJS2V5cxIlLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVxdWVzdBomLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVzcG9uc2UizgOSQakDCgdBUEkgS2V5EgRMaXN0Gg5MaXN0IEFQSSBLZXlzLiocd2ViLnYxLmFjY291bnQubGlzdF9hcGlfa2V5c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYXBpX2tleXMS/AQKFEdldEVudmlyb25tZW50QVBJS2V5Ei4uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXF1ZXN0Gi8uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZSKCBJJB0wMKB0FQSSBLZXkSF0dldCBFbnZpcm9ubWVudCBBUEkgS2V5GhtHZXQgYW4gZW52aXJvbm1lbnQgQVBJIEtleS4qJndlYi52MS5hY2NvdW50LmdldF9lbnZpcm9ubWVudF9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJRIjL3YxL2FjY291bnQvZ2V0X2Vudmlyb25tZW50X2FwaV9rZXkSxQYKEkNyZWF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFENyZWF0ZSBTZWFyY2ggRmlsdGVyGkRDcmVhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuY3JlYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvY3JlYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKElVwZGF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFFVwZGF0ZSBTZWFyY2ggRmlsdGVyGkRVcGRhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQudXBkYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvdXBkYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKEkRlbGV0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFERlbGV0ZSBTZWFyY2ggRmlsdGVyGkREZWxldGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuZGVsZXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvZGVsZXRlX3NlYXJjaF9maWx0ZXI6ASoSmwYKDFVwZGF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBUElLZXlSZXNwb25zZSK5BZJBkAUKB0FQSSBLZXkSDlVwZGF0ZSBBUEkgS2V5Gj5VcGRhdGUgYW4gQVBJIEtleS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQudXBkYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHzIaL3YxL2FjY291bnQvdXBkYXRlX2FwaV9rZXk6ASpCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwr7AQoeZ29vZ2xlL3Byb3RvYnVmL2R1cmF0aW9uLnByb3RvEg9nb29nbGUucHJvdG9idWYiOgoIRHVyYXRpb24SGAoHc2Vjb25kcxgBIAEoA1IHc2Vjb25kcxIUCgVuYW5vcxgCIAEoBVIFbmFub3NCgwEKE2NvbS5nb29nbGUucHJvdG9idWZCDUR1cmF0aW9uUHJvdG9QAVoxZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZHVyYXRpb25wYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCsY0Ch5wcm90by9ldmVudC9jbGllbnQvZXZlbnQucHJvdG8SFmJ1Y2tldGVlci5ldmVudC5jbGllbnQaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90bxoecHJvdG8vZmVhdHVyZS9ldmFsdWF0aW9uLnByb3RvGhpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvInAKBUV2ZW50Eg4KAmlkGAEgASgJUgJpZBIqCgVldmVudBgCIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBWV2ZW50EiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIpIECg9FdmFsdWF0aW9uRXZlbnQSHAoJdGltZXN0YW1wGAEgASgDUgl0aW1lc3RhbXASHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SFwoHdXNlcl9pZBgEIAEoCVIGdXNlcklkEiEKDHZhcmlhdGlvbl9pZBgFIAEoCVILdmFyaWF0aW9uSWQSKAoEdXNlchgGIAEoCzIULmJ1Y2tldGVlci51c2VyLlVzZXJSBHVzZXISMQoGcmVhc29uGAcgASgLMhkuYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uUgZyZWFzb24SEAoDdGFnGAggASgJUgN0YWcSPQoJc291cmNlX2lkGAkgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YCiABKAlSCnNka1ZlcnNpb24SUQoIbWV0YWRhdGEYCyADKAsyNS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkV2YWx1YXRpb25FdmVudC5NZXRhZGF0YUVudHJ5UghtZXRhZGF0YRo7Cg1NZXRhZGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi3AMKCUdvYWxFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIXCgdnb2FsX2lkGAIgASgJUgZnb2FsSWQSFwoHdXNlcl9pZBgDIAEoCVIGdXNlcklkEhQKBXZhbHVlGAQgASgBUgV2YWx1ZRIoCgR1c2VyGAUgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchJDCgtldmFsdWF0aW9ucxgGIAMoCzIdLmJ1Y2tldGVlci5mZWF0dXJlLkV2YWx1YXRpb25CAhgBUgtldmFsdWF0aW9ucxIQCgN0YWcYByABKAlSA3RhZxI9Cglzb3VyY2VfaWQYCCABKA4yIC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlNvdXJjZUlkUghzb3VyY2VJZBIfCgtzZGtfdmVyc2lvbhgJIAEoCVIKc2RrVmVyc2lvbhJLCghtZXRhZGF0YRgKIAMoCzIvLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR29hbEV2ZW50Lk1ldGFkYXRhRW50cnlSCG1ldGFkYXRhGjsKDU1ldGFkYXRhRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLFAgoMTWV0cmljc0V2ZW50EhwKCXRpbWVzdGFtcBgBIAEoA1IJdGltZXN0YW1wEioKBWV2ZW50GAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIFZXZlbnQSPQoJc291cmNlX2lkGAMgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBCABKAlSCnNka1ZlcnNpb24STgoIbWV0YWRhdGEYBSADKAsyMi5idWNrZXRlZXIuZXZlbnQuY2xpZW50Lk1ldHJpY3NFdmVudC5NZXRhZGF0YUVudHJ5UghtZXRhZGF0YRo7Cg1NZXRhZGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi9gEKIEdldEV2YWx1YXRpb25MYXRlbmN5TWV0cmljc0V2ZW50ElwKBmxhYmVscxgBIAMoCzJELmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR2V0RXZhbHVhdGlvbkxhdGVuY3lNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxI1CghkdXJhdGlvbhgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvblIIZHVyYXRpb24aOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4AToCGAEi1gEKHUdldEV2YWx1YXRpb25TaXplTWV0cmljc0V2ZW50ElkKBmxhYmVscxgBIAMoCzJBLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR2V0RXZhbHVhdGlvblNpemVNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxIbCglzaXplX2J5dGUYAiABKAVSCHNpemVCeXRlGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAE6AhgBIrkCChNMYXRlbmN5TWV0cmljc0V2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkEk8KBmxhYmVscxgCIAMoCzI3LmJ1Y2tldGVlci5ldmVudC5jbGllbnQuTGF0ZW5jeU1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzEjkKCGR1cmF0aW9uGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQgIYAVIIZHVyYXRpb24SJQoObGF0ZW5jeV9zZWNvbmQYBCABKAFSDWxhdGVuY3lTZWNvbmQaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLuAQoQU2l6ZU1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJMCgZsYWJlbHMYAiADKAsyNC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlNpemVNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxIbCglzaXplX2J5dGUYAyABKAVSCHNpemVCeXRlGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEiNQodVGltZW91dEVycm9yQ291bnRNZXRyaWNzRXZlbnQSEAoDdGFnGAEgASgJUgN0YWc6AhgBIjYKHkludGVybmFsRXJyb3JDb3VudE1ldHJpY3NFdmVudBIQCgN0YWcYASABKAlSA3RhZzoCGAEi8QEKIFJlZGlyZWN0aW9uUmVxdWVzdEV4Y2VwdGlvbkV2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkElwKBmxhYmVscxgCIAMoCzJELmJ1Y2tldGVlci5ldmVudC5jbGllbnQuUmVkaXJlY3Rpb25SZXF1ZXN0RXhjZXB0aW9uRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIucBChtCYWRSZXF1ZXN0RXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVwoGbGFiZWxzGAIgAygLMj8uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5CYWRSZXF1ZXN0RXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIusBCh1VbmF1dGhvcml6ZWRFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJZCgZsYWJlbHMYAiADKAsyQS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlVuYXV0aG9yaXplZEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLlAQoaRm9yYmlkZGVuRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVgoGbGFiZWxzGAIgAygLMj4uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Gb3JiaWRkZW5FcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4wEKGU5vdEZvdW5kRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVQoGbGFiZWxzGAIgAygLMj0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Ob3RGb3VuZEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLrAQodUGF5bG9hZFRvb0xhcmdlRXhjZXB0aW9uRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSWQoGbGFiZWxzGAIgAygLMkEuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5QYXlsb2FkVG9vTGFyZ2VFeGNlcHRpb25FdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi+QEKJENsaWVudENsb3NlZFJlcXVlc3RFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJgCgZsYWJlbHMYAiADKAsySC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkNsaWVudENsb3NlZFJlcXVlc3RFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi7wEKH0ludGVybmFsU2VydmVyRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSWwoGbGFiZWxzGAIgAygLMkMuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5JbnRlcm5hbFNlcnZlckVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASL3AQojU2VydmljZVVuYXZhaWxhYmxlRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSXwoGbGFiZWxzGAIgAygLMkcuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5TZXJ2aWNlVW5hdmFpbGFibGVFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4QEKGFRpbWVvdXRFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJUCgZsYWJlbHMYAiADKAsyPC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlRpbWVvdXRFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4wEKGUludGVybmFsRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVQoGbGFiZWxzGAIgAygLMj0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5JbnRlcm5hbEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLhAQoYTmV0d29ya0Vycm9yTWV0cmljc0V2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkElQKBmxhYmVscxgCIAMoCzI8LmJ1Y2tldGVlci5ldmVudC5jbGllbnQuTmV0d29ya0Vycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLpAQocSW50ZXJuYWxTZGtFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJYCgZsYWJlbHMYAiADKAsyQC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkludGVybmFsU2RrRXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIuEBChhVbmtub3duRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVAoGbGFiZWxzGAIgAygLMjwuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Vbmtub3duRXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIsUBCghPcHNFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJwoPZmVhdHVyZV92ZXJzaW9uGAMgASgFUg5mZWF0dXJlVmVyc2lvbhIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkEhcKB2dvYWxfaWQYBSABKAlSBmdvYWxJZBIXCgd1c2VyX2lkGAYgASgJUgZ1c2VySWQiXAoNVXNlckdvYWxFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIXCgdnb2FsX2lkGAIgASgJUgZnb2FsSWQSFAoFdmFsdWUYAyABKAFSBXZhbHVlKnAKCFNvdXJjZUlkEgsKB1VOS05PV04QABILCgdBTkRST0lEEAESBwoDSU9TEAISCwoDV0VCEAMaAggBEg0KCUdPX1NFUlZFUhAFEg8KC05PREVfU0VSVkVSEAYSDgoKSkFWQVNDUklQVBAHIgQIBBAEKpsBCgVBcGlJZBIPCgtVTktOT1dOX0FQSRAAEhIKDkdFVF9FVkFMVUFUSU9OEAESEwoPR0VUX0VWQUxVQVRJT05TEAISEwoPUkVHSVNURVJfRVZFTlRTEAMSFQoRR0VUX0ZFQVRVUkVfRkxBR1MQBBIVChFHRVRfU0VHTUVOVF9VU0VSUxAFEhUKEVNES19HRVRfVkFSSUFUSU9OEGRCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V2ZW50L2NsaWVudGIGcHJvdG8zCtOBAQobcHJvdG8vZ2F0ZXdheS9zZXJ2aWNlLnByb3RvEhFidWNrZXRlZXIuZ2F0ZXdheRocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhVwcm90by91c2VyL3VzZXIucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvGhtwcm90by9mZWF0dXJlL3NlcnZpY2UucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGhpwcm90by9mZWF0dXJlL3RhcmdldC5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGhVwcm90by9wdXNoL3B1c2gucHJvdG8aGHByb3RvL3B1c2gvc2VydmljZS5wcm90bxobcHJvdG8vYWNjb3VudC9zZXJ2aWNlLnByb3RvGhtwcm90by9hY2NvdW50L2FjY291bnQucHJvdG8aHnByb3RvL2V2ZW50L2NsaWVudC9ldmVudC5wcm90byINCgtQaW5nUmVxdWVzdCIiCgxQaW5nUmVzcG9uc2USEgoEdGltZRgBIAEoA1IEdGltZSLXAQoWR2V0RmVhdHVyZUZsYWdzUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoChBmZWF0dXJlX2ZsYWdzX2lkGAIgASgJUg5mZWF0dXJlRmxhZ3NJZBIhCgxyZXF1ZXN0ZWRfYXQYAyABKANSC3JlcXVlc3RlZEF0Ej0KCXNvdXJjZV9pZBgEIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkEh8KC3Nka192ZXJzaW9uGAUgASgJUgpzZGtWZXJzaW9uIvwBChdHZXRGZWF0dXJlRmxhZ3NSZXNwb25zZRIoChBmZWF0dXJlX2ZsYWdzX2lkGAEgASgJUg5mZWF0dXJlRmxhZ3NJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEjkKGWFyY2hpdmVkX2ZlYXR1cmVfZmxhZ19pZHMYAyADKAlSFmFyY2hpdmVkRmVhdHVyZUZsYWdJZHMSIQoMcmVxdWVzdGVkX2F0GAQgASgDUgtyZXF1ZXN0ZWRBdBIhCgxmb3JjZV91cGRhdGUYBSABKAhSC2ZvcmNlVXBkYXRlIrwBChZHZXRTZWdtZW50VXNlcnNSZXF1ZXN0Eh8KC3NlZ21lbnRfaWRzGAEgAygJUgpzZWdtZW50SWRzEiEKDHJlcXVlc3RlZF9hdBgCIAEoA1ILcmVxdWVzdGVkQXQSPQoJc291cmNlX2lkGAMgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBCABKAlSCnNka1ZlcnNpb24i1QEKF0dldFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEkQKDXNlZ21lbnRfdXNlcnMYASADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlcnNSDHNlZ21lbnRVc2VycxIuChNkZWxldGVkX3NlZ21lbnRfaWRzGAIgAygJUhFkZWxldGVkU2VnbWVudElkcxIhCgxyZXF1ZXN0ZWRfYXQYAyABKANSC3JlcXVlc3RlZEF0EiEKDGZvcmNlX3VwZGF0ZRgEIAEoCFILZm9yY2VVcGRhdGUi+gMKFUdldEV2YWx1YXRpb25zUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoCgR1c2VyGAIgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIuChN1c2VyX2V2YWx1YXRpb25zX2lkGAMgASgJUhF1c2VyRXZhbHVhdGlvbnNJZBIhCgpmZWF0dXJlX2lkGAQgASgJQgIYAVIJZmVhdHVyZUlkEj0KCXNvdXJjZV9pZBgFIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkEnwKGXVzZXJfZXZhbHVhdGlvbl9jb25kaXRpb24YBiABKAsyQC5idWNrZXRlZXIuZ2F0ZXdheS5HZXRFdmFsdWF0aW9uc1JlcXVlc3QuVXNlckV2YWx1YXRpb25Db25kaXRpb25SF3VzZXJFdmFsdWF0aW9uQ29uZGl0aW9uEh8KC3Nka192ZXJzaW9uGAcgASgJUgpzZGtWZXJzaW9uGnQKF1VzZXJFdmFsdWF0aW9uQ29uZGl0aW9uEiEKDGV2YWx1YXRlZF9hdBgBIAEoA1ILZXZhbHVhdGVkQXQSNgoXdXNlcl9hdHRyaWJ1dGVzX3VwZGF0ZWQYAiABKAhSFXVzZXJBdHRyaWJ1dGVzVXBkYXRlZCLOAQoWR2V0RXZhbHVhdGlvbnNSZXNwb25zZRI+CgVzdGF0ZRgBIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLlVzZXJFdmFsdWF0aW9ucy5TdGF0ZVIFc3RhdGUSRAoLZXZhbHVhdGlvbnMYAiABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Vc2VyRXZhbHVhdGlvbnNSC2V2YWx1YXRpb25zEi4KE3VzZXJfZXZhbHVhdGlvbnNfaWQYAyABKAlSEXVzZXJFdmFsdWF0aW9uc0lkItEBChRHZXRFdmFsdWF0aW9uUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoCgR1c2VyGAIgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIdCgpmZWF0dXJlX2lkGAMgASgJUglmZWF0dXJlSWQSPQoJc291cmNlX2lkGAQgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBSABKAlSCnNka1ZlcnNpb24iVgoVR2V0RXZhbHVhdGlvblJlc3BvbnNlEj0KCmV2YWx1YXRpb24YASABKAsyHS5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0aW9uUgpldmFsdWF0aW9uIq4BChVSZWdpc3RlckV2ZW50c1JlcXVlc3QSNQoGZXZlbnRzGAEgAygLMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5FdmVudFIGZXZlbnRzEh8KC3Nka192ZXJzaW9uGAIgASgJUgpzZGtWZXJzaW9uEj0KCXNvdXJjZV9pZBgDIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkIpQCChZSZWdpc3RlckV2ZW50c1Jlc3BvbnNlEk0KBmVycm9ycxgBIAMoCzI1LmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVzcG9uc2UuRXJyb3JzRW50cnlSBmVycm9ycxo/CgVFcnJvchIcCglyZXRyaWFibGUYASABKAhSCXJldHJpYWJsZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlGmoKC0Vycm9yc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkUKBXZhbHVlGAIgASgLMi8uYnVja2V0ZWVyLmdhdGV3YXkuUmVnaXN0ZXJFdmVudHNSZXNwb25zZS5FcnJvclIFdmFsdWU6AjgBIpwBCgxUcmFja1JlcXVlc3QSFgoGYXBpa2V5GAEgASgJUgZhcGlrZXkSFgoGdXNlcmlkGAIgASgJUgZ1c2VyaWQSFgoGZ29hbGlkGAMgASgJUgZnb2FsaWQSEAoDdGFnGAQgASgJUgN0YWcSHAoJdGltZXN0YW1wGAUgASgDUgl0aW1lc3RhbXASFAoFdmFsdWUYBiABKAFSBXZhbHVlIg8KDVRyYWNrUmVzcG9uc2Ui3QIKFENyZWF0ZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJPCg52YXJpYXRpb25fdHlwZRgEIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRI8Cgp2YXJpYXRpb25zGAUgAygLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgp2YXJpYXRpb25zEhIKBHRhZ3MYBiADKAlSBHRhZ3MSLAoSb25fdmFyaWF0aW9uX2luZGV4GAcgASgFUhBvblZhcmlhdGlvbkluZGV4Ei4KE29mZl92YXJpYXRpb25faW5kZXgYCCABKAVSEW9mZlZhcmlhdGlvbkluZGV4Ik0KFUNyZWF0ZUZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSIjChFHZXRGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQiSgoSR2V0RmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIvUBChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYAyABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZlYXR1cmVzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24iTgoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcyKoBQoUVXBkYXRlRmVhdHVyZVJlcXVlc3QSGAoHY29tbWVudBgBIAEoCVIHY29tbWVudBIOCgJpZBgCIAEoCVICaWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SEgoEdGFncxgFIAMoCVIEdGFncxI0CgdlbmFibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIHZW5hYmxlZBI2CghhcmNoaXZlZBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEjwKCnZhcmlhdGlvbnMYCCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSRQoNcHJlcmVxdWlzaXRlcxgJIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIzCgd0YXJnZXRzGAogAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGAsgAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgMIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSQQoNb2ZmX3ZhcmlhdGlvbhgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIMb2ZmVmFyaWF0aW9uIk0KFVVwZGF0ZUZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSKQAgoRTGlzdFB1c2hlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJECghvcmRlcl9ieRgDIAEoDjIpLmJ1Y2tldGVlci5wdXNoLkxpc3RQdXNoZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSWQoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjAuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkInsKEkxpc3RQdXNoZXNSZXNwb25zZRIsCgZwdXNoZXMYASADKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgZwdXNoZXMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiawoRQ3JlYXRlUHVzaFJlcXVlc3QSEgoEdGFncxgBIAMoCVIEdGFncxISCgRuYW1lGAIgASgJUgRuYW1lEi4KE2ZjbV9zZXJ2aWNlX2FjY291bnQYAyABKAxSEWZjbVNlcnZpY2VBY2NvdW50Ij4KEkNyZWF0ZVB1c2hSZXNwb25zZRIoCgRwdXNoGAEgASgLMhQuYnVja2V0ZWVyLnB1c2guUHVzaFIEcHVzaCIgCg5HZXRQdXNoUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQiOwoPR2V0UHVzaFJlc3BvbnNlEigKBHB1c2gYASABKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgRwdXNoIoACChFVcGRhdGVQdXNoUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSEgoEdGFncxgCIAMoCVIEdGFncxIwCgRuYW1lGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEpQBCgdkZWxldGVkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJekkFbKgdkZWxldGVkMlBpZiB0cnVlLCB0aGUgcHVzaCBub3RpZmljYXRpb24gd2lsbCBiZSBkZWxldGVkIGFuZCBvdGhlciBmaWVsZHMgd2lsbCBiZSBpZ25vcmVkLlIHZGVsZXRlZCI+ChJVcGRhdGVQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2gipQMKFkNyZWF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSJwoPb3JnYW5pemF0aW9uX2lkGAQgASgJUg5vcmdhbml6YXRpb25JZBJbChFvcmdhbml6YXRpb25fcm9sZRgFIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgGIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSHQoKZmlyc3RfbmFtZRgHIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgIIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCSABKAlSCGxhbmd1YWdlIlEKF0NyZWF0ZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiiQgKFlVwZGF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRJGChBhdmF0YXJfaW1hZ2VfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg5hdmF0YXJJbWFnZVVybBJsChFvcmdhbml6YXRpb25fcm9sZRgFIAEoCzI/LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuT3JnYW5pemF0aW9uUm9sZVZhbHVlUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxI7CgpmaXJzdF9uYW1lGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUglmaXJzdE5hbWUSOQoJbGFzdF9uYW1lGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUghsYXN0TmFtZRI4CghsYW5ndWFnZRgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIIbGFuZ3VhZ2USOAoJbGFzdF9zZWVuGAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWVSCGxhc3RTZWVuElEKBmF2YXRhchgLIAEoCzI5LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuQWNjb3VudFYyQXZhdGFyUgZhdmF0YXISoAEKCGRpc2FibGVkGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJokkFlKghkaXNhYmxlZDJZaWYgZGlzYWJsZWQgaXMgdHJ1ZSwgdGhlIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZC4gSWYgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgZW5hYmxlZC5SCGRpc2FibGVkEooBCgdkZWxldGVkGA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJUkkFRKgdkZWxldGVkMkZpZiB0cnVlLCB0aGUgYWNjb3VudCB3aWxsIGJlIGRlbGV0ZWQgYW5kIG90aGVyIGZpZWxkcyB3aWxsIGJlIGlnbm9yZWQuUgdkZWxldGVkIlEKF1VwZGF0ZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiVAoTR2V0QWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZCJOChRHZXRBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50ImEKIkdldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkIl0KI0dldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiNwoMR2V0TWVSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQiTAoNR2V0TWVSZXNwb25zZRI7CgdhY2NvdW50GAEgASgLMiEuYnVja2V0ZWVyLmFjY291bnQuQ29uc29sZUFjY291bnRSB2FjY291bnQi2gQKFUxpc3RBY2NvdW50c1YyUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEicKD29yZ2FuaXphdGlvbl9pZBgDIAEoCVIOb3JnYW5pemF0aW9uSWQSSwoIb3JkZXJfYnkYBCABKA4yMC5idWNrZXRlZXIuYWNjb3VudC5MaXN0QWNjb3VudHNWMlJlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJgCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNy5idWNrZXRlZXIuYWNjb3VudC5MaXN0QWNjb3VudHNWMlJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSSAoRb3JnYW5pemF0aW9uX3JvbGUYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIQb3JnYW5pemF0aW9uUm9sZRJDCg5lbnZpcm9ubWVudF9pZBgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVINZW52aXJvbm1lbnRJZBJGChBlbnZpcm9ubWVudF9yb2xlGAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSD2Vudmlyb25tZW50Um9sZSKLAQoWTGlzdEFjY291bnRzVjJSZXNwb25zZRI4CghhY2NvdW50cxgBIAMoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIIYWNjb3VudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQy6zcKB0dhdGV3YXkS9AIKDkdldEV2YWx1YXRpb25zEiguYnVja2V0ZWVyLmdhdGV3YXkuR2V0RXZhbHVhdGlvbnNSZXF1ZXN0GikuYnVja2V0ZWVyLmdhdGV3YXkuR2V0RXZhbHVhdGlvbnNSZXNwb25zZSKMApJB7QEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSD0dldCBFdmFsdWF0aW9ucxphR2V0cyBhbGwgdGhlIGV2YWx1YXRpb25zIGZvciBhIHNwZWNpZmljIHVzZXIuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYENMSUVOVGAgQVBJIEtleSByb2xlLiobYXBpLmdhdGV3YXkuZ2V0X2V2YWx1YXRpb25zckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhUiEC9nZXRfZXZhbHVhdGlvbnM6ASoS7gIKDUdldEV2YWx1YXRpb24SJy5idWNrZXRlZXIuZ2F0ZXdheS5HZXRFdmFsdWF0aW9uUmVxdWVzdBooLmJ1Y2tldGVlci5nYXRld2F5LkdldEV2YWx1YXRpb25SZXNwb25zZSKJApJB6wEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSDkdldCBFdmFsdWF0aW9uGmFHZXRzIGEgc2luZ2xlIGV2YWx1YXRpb24gZm9yIGEgc3BlY2lmaWMgdXNlci4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgQ0xJRU5UYCBBUEkgS2V5IHJvbGUuKhphcGkuZ2F0ZXdheS5nZXRfZXZhbHVhdGlvbnJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIUIg8vZ2V0X2V2YWx1YXRpb246ASoS+gIKD0dldEZlYXR1cmVGbGFncxIpLmJ1Y2tldGVlci5nYXRld2F5LkdldEZlYXR1cmVGbGFnc1JlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRGZWF0dXJlRmxhZ3NSZXNwb25zZSKPApJB7gEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSEUdldCBGZWF0dXJlIEZsYWdzGl5HZXRzIGFsbCB0aGUgZmVhdHVyZSBmbGFnIGluIGFuIGVudmlyb25tZW50LiBUbyBjYWxsIHRoaXMgQVBJLCBpdCBuZWVkcyBgU0VSVkVSYCBBUEkgS2V5IHJvbGUuKh1hcGkuZ2F0ZXdheS5nZXRfZmVhdHVyZV9mbGFnc3JCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIXIhIvZ2V0X2ZlYXR1cmVfZmxhZ3M6ASoS+wIKD0dldFNlZ21lbnRVc2VycxIpLmJ1Y2tldGVlci5nYXRld2F5LkdldFNlZ21lbnRVc2Vyc1JlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRTZWdtZW50VXNlcnNSZXNwb25zZSKQApJB7wEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSEUdldCBTZWdtZW50IFVzZXJzGl9HZXRzIGFsbCB0aGUgc2VnbWVudCB1c2VycyBpbiBhbiBlbnZpcm9ubWVudC4gVG8gY2FsbCB0aGlzIEFQSSwgaXQgbmVlZHMgYFNFUlZFUmAgQVBJIEtleSByb2xlLiodYXBpLmdhdGV3YXkuZ2V0X3NlZ21lbnRfdXNlcnNyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCFyISL2dldF9zZWdtZW50X3VzZXJzOgEqEvkCCg5SZWdpc3RlckV2ZW50cxIoLmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVxdWVzdBopLmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVzcG9uc2UikQKSQfIBChZDbGllbnQgYW5kIFNlcnZlciBTREtzEg9SZWdpc3RlciBFdmVudHMaZlRoaXMgQVBJIGlzIGZvciByZXBvcnRpbmcgR29hbCBldmVudHMuIFRvIGNhbGwgdGhpcyBBUEksIGl0IG5lZWRzIGEgYENMSUVOVGAgb3IgYFNFUlZFUmAgQVBJIEtleSByb2xlLiobYXBpLmdhdGV3YXkucmVnaXN0ZXJfZXZlbnRzckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhUiEC9yZWdpc3Rlcl9ldmVudHM6ASoSjwIKBVRyYWNrEh8uYnVja2V0ZWVyLmdhdGV3YXkuVHJhY2tSZXF1ZXN0GiAuYnVja2V0ZWVyLmdhdGV3YXkuVHJhY2tSZXNwb25zZSLCAZJBsAEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSBVRyYWNrGnxUaGlzIEFQSSBpcyBhbiBpbnRlZ3JhdGlvbiBmb3IgR29vZ2xlIFRhYiBNYW5hZ2VyIHRvIHJlcG9ydCBHb2FsIGV2ZW50cy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgQ0xJRU5UYCBBUEkgS2V5IHJvbGUuKhFhcGkuZ2F0ZXdheS50cmFja4LT5JMCCBIGL3RyYWNrEtUCCg1DcmVhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmdhdGV3YXkuQ3JlYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVGZWF0dXJlUmVzcG9uc2Ui8AGSQdUBCg1GZWF0dXJlIEZsYWdzEgZDcmVhdGUaWENyZWF0ZSBhIG5ldyBGZWF0dXJlIEZsYWcuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHmFwaS5nYXRld2F5LnYxLmZlYXR1cmVzLmNyZWF0ZXJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIRIgwvdjEvZmVhdHVyZXM6ASoStQIKCkdldEZlYXR1cmUSJC5idWNrZXRlZXIuZ2F0ZXdheS5HZXRGZWF0dXJlUmVxdWVzdBolLmJ1Y2tldGVlci5nYXRld2F5LkdldEZlYXR1cmVSZXNwb25zZSLZAZJBvAEKDUZlYXR1cmUgRmxhZ3MSA0dldBpFR2V0IGEgRmVhdHVyZSBGbGFnLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhthcGkuZ2F0ZXdheS52MS5mZWF0dXJlcy5nZXRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCExIRL3YxL2ZlYXR1cmVzL3tpZH0SuAIKDExpc3RGZWF0dXJlcxImLmJ1Y2tldGVlci5nYXRld2F5Lkxpc3RGZWF0dXJlc1JlcXVlc3QaJy5idWNrZXRlZXIuZ2F0ZXdheS5MaXN0RmVhdHVyZXNSZXNwb25zZSLWAZJBvgEKDUZlYXR1cmUgRmxhZ3MSBExpc3QaRUxpc3QgRmVhdHVyZSBGbGFncy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiocYXBpLmdhdGV3YXkudjEuZmVhdHVyZXMubGlzdHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIOEgwvdjEvZmVhdHVyZXMS1gIKDVVwZGF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5nYXRld2F5LlVwZGF0ZUZlYXR1cmVSZXNwb25zZSLxAZJB0QEKDUZlYXR1cmUgRmxhZ3MSBlVwZGF0ZRpUVXBkYXRlIGEgRmVhdHVyZSBGbGFnLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKh5hcGkuZ2F0ZXdheS52MS5mZWF0dXJlcy51cGRhdGVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCFjIRL3YxL2ZlYXR1cmVzL3tpZH06ASoS7gEKBFBpbmcSHi5idWNrZXRlZXIuZ2F0ZXdheS5QaW5nUmVxdWVzdBofLmJ1Y2tldGVlci5nYXRld2F5LlBpbmdSZXNwb25zZSKkAZJBkwEKB1V0aWxpdHkSBFBpbmcaKlBpbmcgdGhlIHNlcnZlciB0byBjaGVjayBpdHMgYXZhaWxhYmlsaXR5LioQYXBpLmdhdGV3YXkucGluZ2IAckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAgcSBS9waW5nEqACCgpMaXN0UHVzaGVzEiQuYnVja2V0ZWVyLmdhdGV3YXkuTGlzdFB1c2hlc1JlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5MaXN0UHVzaGVzUmVzcG9uc2UixAGSQa4BCgZQdXNoZXMSBExpc3QaPkxpc3QgcHVzaGVzLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhphcGkuZ2F0ZXdheS52MS5wdXNoZXMubGlzdHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIMEgovdjEvcHVzaGVzEvMCCgpDcmVhdGVQdXNoEiQuYnVja2V0ZWVyLmdhdGV3YXkuQ3JlYXRlUHVzaFJlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVQdXNoUmVzcG9uc2UilwKSQYACCgZQdXNoZXMSBkNyZWF0ZRqLAUNyZWF0ZSBhIG5ldyBQdXNoIG5vdGlmaWNhdGlvbiB0aHJvdWdoIEdvb2dsZSBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKEZDTSkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHGFwaS5nYXRld2F5LnYxLnB1c2hlcy5jcmVhdGVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCDSIIL3YxL3B1c2g6ASoSpAIKB0dldFB1c2gSIS5idWNrZXRlZXIuZ2F0ZXdheS5HZXRQdXNoUmVxdWVzdBoiLmJ1Y2tldGVlci5nYXRld2F5LkdldFB1c2hSZXNwb25zZSLRAZJBuAEKBlB1c2hlcxIDR2V0GkpHZXQgYSBQdXNoIG5vdGlmaWNhdGlvbi4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLioZYXBpLmdhdGV3YXkudjEucHVzaGVzLmdldHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIPEg0vdjEvcHVzaC97aWR9EsACCgpVcGRhdGVQdXNoEiQuYnVja2V0ZWVyLmdhdGV3YXkuVXBkYXRlUHVzaFJlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVQdXNoUmVzcG9uc2Ui5AGSQcgBCgZQdXNoZXMSBlVwZGF0ZRpUVXBkYXRlIGEgUHVzaCBub3RpZmljYXRpb24uIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKhxhcGkuZ2F0ZXdheS52MS5wdXNoZXMudXBkYXRlckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhIyDS92MS9wdXNoL3tpZH06ASoSzgIKD0NyZWF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5nYXRld2F5LkNyZWF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVBY2NvdW50VjJSZXNwb25zZSLjAZJByQEKB0FjY291bnQSBkNyZWF0ZRpTQ3JlYXRlIGEgbmV3IEFjY291bnQuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHWFwaS5nYXRld2F5LnYxLmFjY291bnQuY3JlYXRlckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhAiCy92MS9hY2NvdW50OgEqEuUCCg9VcGRhdGVBY2NvdW50VjISKS5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmdhdGV3YXkuVXBkYXRlQWNjb3VudFYyUmVzcG9uc2Ui+gGSQcYBCgdBY2NvdW50EgZVcGRhdGUaUFVwZGF0ZSBhbiBBY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKh1hcGkuZ2F0ZXdheS52MS5hY2NvdW50LnVwZGF0ZXJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIqMiUvdjEvYWNjb3VudC97b3JnYW5pemF0aW9uX2lkfS97ZW1haWx9OgEqEtcCCgxHZXRBY2NvdW50VjISJi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRBY2NvdW50VjJSZXF1ZXN0GicuYnVja2V0ZWVyLmdhdGV3YXkuR2V0QWNjb3VudFYyUmVzcG9uc2Ui9QGSQcQBCgdBY2NvdW50EhZHZXQgYnkgT3JnYW5pemF0aW9uIElEGkFHZXQgYW4gQWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLioaYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCJxIlL3YxL2FjY291bnQve29yZ2FuaXphdGlvbl9pZH0ve2VtYWlsfRLBAwobR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEEjUuYnVja2V0ZWVyLmdhdGV3YXkuR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVxdWVzdBo2LmJ1Y2tldGVlci5nYXRld2F5LkdldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlc3BvbnNlIrICkkHnAQoHQWNjb3VudBIVR2V0IGJ5IEVudmlyb25tZW50IElEGlNHZXQgYW4gQWNjb3VudCBieSBFbnZpcm9ubWVudCBJRC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiosYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRfYnlfZW52aXJvbm1lbnRfaWRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCQRI/L3YxL2FjY291bnQvZ2V0LWFjY291bnQtYnktZW52aXJvbm1lbnQve2Vudmlyb25tZW50X2lkfS97ZW1haWx9EsYCCgVHZXRNZRIfLmJ1Y2tldGVlci5nYXRld2F5LkdldE1lUmVxdWVzdBogLmJ1Y2tldGVlci5nYXRld2F5LkdldE1lUmVzcG9uc2Ui+QGSQc0BCgdBY2NvdW50EhNHZXQgU2VydmljZSBBY2NvdW50GkpHZXQgdGhlIGN1cnJlbnQgQWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiodYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRfbWVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCIhIgL3YxL2FjY291bnQvbWUve29yZ2FuaXphdGlvbl9pZH0StgIKDkxpc3RBY2NvdW50c1YyEiguYnVja2V0ZWVyLmdhdGV3YXkuTGlzdEFjY291bnRzVjJSZXF1ZXN0GikuYnVja2V0ZWVyLmdhdGV3YXkuTGlzdEFjY291bnRzVjJSZXNwb25zZSLOAZJBtgEKB0FjY291bnQSBExpc3QaREdldCBsaXN0IEFjY291bnRzLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhthcGkuZ2F0ZXdheS52MS5hY2NvdW50Lmxpc3RyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCDhIML3YxL2FjY291bnRzQoQGWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZ2F0ZXdheZJBzwUSIAoZQnVja2V0ZWVyIEdhdGV3YXkgU2VydmljZTIDMS4wGghFTkRQT0lOVCoBAjIQYXBwbGljYXRpb24vanNvbjoQYXBwbGljYXRpb24vanNvblK0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfVKyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1SqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9WlAKTgoKQXBpS2V5QXV0aBJACAISK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4aDWF1dGhvcml6YXRpb24gAmIQCg4KCkFwaUtleUF1dGgSAGIGcHJvdG8z" + descriptor: "CocFChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkieQoESHR0cBIqCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBXJ1bGVzEkUKH2Z1bGx5X2RlY29kZV9yZXNlcnZlZF9leHBhbnNpb24YAiABKAhSHGZ1bGx5RGVjb2RlUmVzZXJ2ZWRFeHBhbnNpb24itQIKCEh0dHBSdWxlEhoKCHNlbGVjdG9yGAEgASgJUghzZWxlY3RvchISCgNnZXQYAiABKAlIAFIDZ2V0EhIKA3B1dBgDIAEoCUgAUgNwdXQSFAoEcG9zdBgEIAEoCUgAUgRwb3N0EhgKBmRlbGV0ZRgFIAEoCUgAUgZkZWxldGUSFgoFcGF0Y2gYBiABKAlIAFIFcGF0Y2gSNwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAUgZjdXN0b20SEgoEYm9keRgHIAEoCVIEYm9keRJFChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVISYWRkaXRpb25hbEJpbmRpbmdzQgkKB3BhdHRlcm4iOwoRQ3VzdG9tSHR0cFBhdHRlcm4SEgoEa2luZBgBIAEoCVIEa2luZBISCgRwYXRoGAIgASgJUgRwYXRoQmoKDmNvbS5nb29nbGUuYXBpQglIdHRwUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnP4AQGiAgRHQVBJYgZwcm90bzMK4UYKIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvEg9nb29nbGUucHJvdG9idWYiTQoRRmlsZURlc2NyaXB0b3JTZXQSOAoEZmlsZRgBIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvUgRmaWxlIv4EChNGaWxlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSGAoHcGFja2FnZRgCIAEoCVIHcGFja2FnZRIeCgpkZXBlbmRlbmN5GAMgAygJUgpkZXBlbmRlbmN5EisKEXB1YmxpY19kZXBlbmRlbmN5GAogAygFUhBwdWJsaWNEZXBlbmRlbmN5EicKD3dlYWtfZGVwZW5kZW5jeRgLIAMoBVIOd2Vha0RlcGVuZGVuY3kSQwoMbWVzc2FnZV90eXBlGAQgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1ILbWVzc2FnZVR5cGUSQQoJZW51bV90eXBlGAUgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlEkEKB3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2NyaXB0b3JQcm90b1IHc2VydmljZRJDCglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhI2CgdvcHRpb25zGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zUgdvcHRpb25zEkkKEHNvdXJjZV9jb2RlX2luZm8YCSABKAsyHy5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm9SDnNvdXJjZUNvZGVJbmZvEhYKBnN5bnRheBgMIAEoCVIGc3ludGF4EhgKB2VkaXRpb24YDSABKAlSB2VkaXRpb24iuQYKD0Rlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjsKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUgVmaWVsZBJDCglleHRlbnNpb24YBiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhJBCgtuZXN0ZWRfdHlwZRgDIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SCm5lc3RlZFR5cGUSQQoJZW51bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlElgKD2V4dGVuc2lvbl9yYW5nZRgFIAMoCzIvLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uRXh0ZW5zaW9uUmFuZ2VSDmV4dGVuc2lvblJhbmdlEkQKCm9uZW9mX2RlY2wYCCADKAsyJS5nb29nbGUucHJvdG9idWYuT25lb2ZEZXNjcmlwdG9yUHJvdG9SCW9uZW9mRGVjbBI5CgdvcHRpb25zGAcgASgLMh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zUgdvcHRpb25zElUKDnJlc2VydmVkX3JhbmdlGAkgAygLMi4uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYCiADKAlSDHJlc2VydmVkTmFtZRp6Cg5FeHRlbnNpb25SYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQSQAoHb3B0aW9ucxgDIAEoCzImLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnNSB29wdGlvbnMaNwoNUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQirQQKFUV4dGVuc2lvblJhbmdlT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbhJZCgtkZWNsYXJhdGlvbhgCIAMoCzIyLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuRGVjbGFyYXRpb25CA4gBAlILZGVjbGFyYXRpb24SaAoMdmVyaWZpY2F0aW9uGAMgASgOMjguZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5WZXJpZmljYXRpb25TdGF0ZToKVU5WRVJJRklFRFIMdmVyaWZpY2F0aW9uGrMBCgtEZWNsYXJhdGlvbhIWCgZudW1iZXIYASABKAVSBm51bWJlchIbCglmdWxsX25hbWUYAiABKAlSCGZ1bGxOYW1lEhIKBHR5cGUYAyABKAlSBHR5cGUSIwoLaXNfcmVwZWF0ZWQYBCABKAhCAhgBUgppc1JlcGVhdGVkEhoKCHJlc2VydmVkGAUgASgIUghyZXNlcnZlZBIaCghyZXBlYXRlZBgGIAEoCFIIcmVwZWF0ZWQiNAoRVmVyaWZpY2F0aW9uU3RhdGUSDwoLREVDTEFSQVRJT04QABIOCgpVTlZFUklGSUVEEAEqCQjoBxCAgICAAiLBBgoURmllbGREZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAyABKAVSBm51bWJlchJBCgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbFIFbGFiZWwSPgoEdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlUgR0eXBlEhsKCXR5cGVfbmFtZRgGIAEoCVIIdHlwZU5hbWUSGgoIZXh0ZW5kZWUYAiABKAlSCGV4dGVuZGVlEiMKDWRlZmF1bHRfdmFsdWUYByABKAlSDGRlZmF1bHRWYWx1ZRIfCgtvbmVvZl9pbmRleBgJIAEoBVIKb25lb2ZJbmRleBIbCglqc29uX25hbWUYCiABKAlSCGpzb25OYW1lEjcKB29wdGlvbnMYCCABKAsyHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zUgdvcHRpb25zEicKD3Byb3RvM19vcHRpb25hbBgRIAEoCFIOcHJvdG8zT3B0aW9uYWwitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpUWVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQSDgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklYRUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQRV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIPCgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVEMzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtUWVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoOTEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADImMKFE9uZW9mRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSNwoHb3B0aW9ucxgCIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnNSB29wdGlvbnMi4wIKE0VudW1EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI/CgV2YWx1ZRgCIAMoCzIpLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG9SBXZhbHVlEjYKB29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnNSB29wdGlvbnMSXQoOcmVzZXJ2ZWRfcmFuZ2UYBCADKAsyNi5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90by5FbnVtUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAUgAygJUgxyZXNlcnZlZE5hbWUaOwoRRW51bVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIoMBChhFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAiABKAVSBm51bWJlchI7CgdvcHRpb25zGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnNSB29wdGlvbnMipwEKFlNlcnZpY2VEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI+CgZtZXRob2QYAiADKAsyJi5nb29nbGUucHJvdG9idWYuTWV0aG9kRGVzY3JpcHRvclByb3RvUgZtZXRob2QSOQoHb3B0aW9ucxgDIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9uc1IHb3B0aW9ucyKJAgoVTWV0aG9kRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSHQoKaW5wdXRfdHlwZRgCIAEoCVIJaW5wdXRUeXBlEh8KC291dHB1dF90eXBlGAMgASgJUgpvdXRwdXRUeXBlEjgKB29wdGlvbnMYBCABKAsyHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9uc1IHb3B0aW9ucxIwChBjbGllbnRfc3RyZWFtaW5nGAUgASgIOgVmYWxzZVIPY2xpZW50U3RyZWFtaW5nEjAKEHNlcnZlcl9zdHJlYW1pbmcYBiABKAg6BWZhbHNlUg9zZXJ2ZXJTdHJlYW1pbmcikQkKC0ZpbGVPcHRpb25zEiEKDGphdmFfcGFja2FnZRgBIAEoCVILamF2YVBhY2thZ2USMAoUamF2YV9vdXRlcl9jbGFzc25hbWUYCCABKAlSEmphdmFPdXRlckNsYXNzbmFtZRI1ChNqYXZhX211bHRpcGxlX2ZpbGVzGAogASgIOgVmYWxzZVIRamF2YU11bHRpcGxlRmlsZXMSRAodamF2YV9nZW5lcmF0ZV9lcXVhbHNfYW5kX2hhc2gYFCABKAhCAhgBUhlqYXZhR2VuZXJhdGVFcXVhbHNBbmRIYXNoEjoKFmphdmFfc3RyaW5nX2NoZWNrX3V0ZjgYGyABKAg6BWZhbHNlUhNqYXZhU3RyaW5nQ2hlY2tVdGY4ElMKDG9wdGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucy5PcHRpbWl6ZU1vZGU6BVNQRUVEUgtvcHRpbWl6ZUZvchIdCgpnb19wYWNrYWdlGAsgASgJUglnb1BhY2thZ2USNQoTY2NfZ2VuZXJpY19zZXJ2aWNlcxgQIAEoCDoFZmFsc2VSEWNjR2VuZXJpY1NlcnZpY2VzEjkKFWphdmFfZ2VuZXJpY19zZXJ2aWNlcxgRIAEoCDoFZmFsc2VSE2phdmFHZW5lcmljU2VydmljZXMSNQoTcHlfZ2VuZXJpY19zZXJ2aWNlcxgSIAEoCDoFZmFsc2VSEXB5R2VuZXJpY1NlcnZpY2VzEjcKFHBocF9nZW5lcmljX3NlcnZpY2VzGCogASgIOgVmYWxzZVIScGhwR2VuZXJpY1NlcnZpY2VzEiUKCmRlcHJlY2F0ZWQYFyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEi4KEGNjX2VuYWJsZV9hcmVuYXMYHyABKAg6BHRydWVSDmNjRW5hYmxlQXJlbmFzEioKEW9iamNfY2xhc3NfcHJlZml4GCQgASgJUg9vYmpjQ2xhc3NQcmVmaXgSKQoQY3NoYXJwX25hbWVzcGFjZRglIAEoCVIPY3NoYXJwTmFtZXNwYWNlEiEKDHN3aWZ0X3ByZWZpeBgnIAEoCVILc3dpZnRQcmVmaXgSKAoQcGhwX2NsYXNzX3ByZWZpeBgoIAEoCVIOcGhwQ2xhc3NQcmVmaXgSIwoNcGhwX25hbWVzcGFjZRgpIAEoCVIMcGhwTmFtZXNwYWNlEjQKFnBocF9tZXRhZGF0YV9uYW1lc3BhY2UYLCABKAlSFHBocE1ldGFkYXRhTmFtZXNwYWNlEiEKDHJ1YnlfcGFja2FnZRgtIAEoCVILcnVieVBhY2thZ2USWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iOgoMT3B0aW1pemVNb2RlEgkKBVNQRUVEEAESDQoJQ09ERV9TSVpFEAISEAoMTElURV9SVU5USU1FEAMqCQjoBxCAgICAAkoECCYQJyK7AwoOTWVzc2FnZU9wdGlvbnMSPAoXbWVzc2FnZV9zZXRfd2lyZV9mb3JtYXQYASABKAg6BWZhbHNlUhRtZXNzYWdlU2V0V2lyZUZvcm1hdBJMCh9ub19zdGFuZGFyZF9kZXNjcmlwdG9yX2FjY2Vzc29yGAIgASgIOgVmYWxzZVIcbm9TdGFuZGFyZERlc2NyaXB0b3JBY2Nlc3NvchIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIbCgltYXBfZW50cnkYByABKAhSCG1hcEVudHJ5ElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAsgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBBAFSgQIBRAGSgQIBhAHSgQICBAJSgQICRAKIoUJCgxGaWVsZE9wdGlvbnMSQQoFY3R5cGUYASABKA4yIy5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkNUeXBlOgZTVFJJTkdSBWN0eXBlEhYKBnBhY2tlZBgCIAEoCFIGcGFja2VkEkcKBmpzdHlwZRgGIAEoDjIkLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuSlNUeXBlOglKU19OT1JNQUxSBmpzdHlwZRIZCgRsYXp5GAUgASgIOgVmYWxzZVIEbGF6eRIuCg91bnZlcmlmaWVkX2xhenkYDyABKAg6BWZhbHNlUg51bnZlcmlmaWVkTGF6eRIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIZCgR3ZWFrGAogASgIOgVmYWxzZVIEd2VhaxIoCgxkZWJ1Z19yZWRhY3QYECABKAg6BWZhbHNlUgtkZWJ1Z1JlZGFjdBJLCglyZXRlbnRpb24YESABKA4yLS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblJldGVudGlvblIJcmV0ZW50aW9uEkoKBnRhcmdldBgSIAEoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZUICGAFSBnRhcmdldBJICgd0YXJnZXRzGBMgAygOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlUgd0YXJnZXRzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIi8KBUNUeXBlEgoKBlNUUklORxAAEggKBENPUkQQARIQCgxTVFJJTkdfUElFQ0UQAiI1CgZKU1R5cGUSDQoJSlNfTk9STUFMEAASDQoJSlNfU1RSSU5HEAESDQoJSlNfTlVNQkVSEAIiVQoPT3B0aW9uUmV0ZW50aW9uEhUKEVJFVEVOVElPTl9VTktOT1dOEAASFQoRUkVURU5USU9OX1JVTlRJTUUQARIUChBSRVRFTlRJT05fU09VUkNFEAIijAIKEE9wdGlvblRhcmdldFR5cGUSFwoTVEFSR0VUX1RZUEVfVU5LTk9XThAAEhQKEFRBUkdFVF9UWVBFX0ZJTEUQARIfChtUQVJHRVRfVFlQRV9FWFRFTlNJT05fUkFOR0UQAhIXChNUQVJHRVRfVFlQRV9NRVNTQUdFEAMSFQoRVEFSR0VUX1RZUEVfRklFTEQQBBIVChFUQVJHRVRfVFlQRV9PTkVPRhAFEhQKEFRBUkdFVF9UWVBFX0VOVU0QBhIaChZUQVJHRVRfVFlQRV9FTlVNX0VOVFJZEAcSFwoTVEFSR0VUX1RZUEVfU0VSVklDRRAIEhYKElRBUkdFVF9UWVBFX01FVEhPRBAJKgkI6AcQgICAgAJKBAgEEAUicwoMT25lb2ZPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIimAIKC0VudW1PcHRpb25zEh8KC2FsbG93X2FsaWFzGAIgASgIUgphbGxvd0FsaWFzEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAYgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBRAGIp4BChBFbnVtVmFsdWVPcHRpb25zEiUKCmRlcHJlY2F0ZWQYASABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIinAEKDlNlcnZpY2VPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi4AIKDU1ldGhvZE9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQScQoRaWRlbXBvdGVuY3lfbGV2ZWwYIiABKA4yLy5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucy5JZGVtcG90ZW5jeUxldmVsOhNJREVNUE9URU5DWV9VTktOT1dOUhBpZGVtcG90ZW5jeUxldmVsElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIlAKEElkZW1wb3RlbmN5TGV2ZWwSFwoTSURFTVBPVEVOQ1lfVU5LTk9XThAAEhMKD05PX1NJREVfRUZGRUNUUxABEg4KCklERU1QT1RFTlQQAioJCOgHEICAgIACIpoDChNVbmludGVycHJldGVkT3B0aW9uEkEKBG5hbWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbi5OYW1lUGFydFIEbmFtZRIpChBpZGVudGlmaWVyX3ZhbHVlGAMgASgJUg9pZGVudGlmaWVyVmFsdWUSLAoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEUhBwb3NpdGl2ZUludFZhbHVlEiwKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoA1IQbmVnYXRpdmVJbnRWYWx1ZRIhCgxkb3VibGVfdmFsdWUYBiABKAFSC2RvdWJsZVZhbHVlEiEKDHN0cmluZ192YWx1ZRgHIAEoDFILc3RyaW5nVmFsdWUSJwoPYWdncmVnYXRlX3ZhbHVlGAggASgJUg5hZ2dyZWdhdGVWYWx1ZRpKCghOYW1lUGFydBIbCgluYW1lX3BhcnQYASACKAlSCG5hbWVQYXJ0EiEKDGlzX2V4dGVuc2lvbhgCIAIoCFILaXNFeHRlbnNpb24ipwIKDlNvdXJjZUNvZGVJbmZvEkQKCGxvY2F0aW9uGAEgAygLMiguZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvLkxvY2F0aW9uUghsb2NhdGlvbhrOAQoITG9jYXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSFgoEc3BhbhgCIAMoBUICEAFSBHNwYW4SKQoQbGVhZGluZ19jb21tZW50cxgDIAEoCVIPbGVhZGluZ0NvbW1lbnRzEisKEXRyYWlsaW5nX2NvbW1lbnRzGAQgASgJUhB0cmFpbGluZ0NvbW1lbnRzEjoKGWxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMYBiADKAlSF2xlYWRpbmdEZXRhY2hlZENvbW1lbnRzItACChFHZW5lcmF0ZWRDb2RlSW5mbxJNCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb25SCmFubm90YXRpb24a6wEKCkFubm90YXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSHwoLc291cmNlX2ZpbGUYAiABKAlSCnNvdXJjZUZpbGUSFAoFYmVnaW4YAyABKAVSBWJlZ2luEhAKA2VuZBgEIAEoBVIDZW5kElIKCHNlbWFudGljGAUgASgOMjYuZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb24uU2VtYW50aWNSCHNlbWFudGljIigKCFNlbWFudGljEggKBE5PTkUQABIHCgNTRVQQARIJCgVBTElBUxACQn4KE2NvbS5nb29nbGUucHJvdG9idWZCEERlc2NyaXB0b3JQcm90b3NIAVotZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMvZGVzY3JpcHRvcnBi+AEBogIDR1BCqgIaR29vZ2xlLlByb3RvYnVmLlJlZmxlY3Rpb24KqAIKHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8SCmdvb2dsZS5hcGkaFWdvb2dsZS9hcGkvaHR0cC5wcm90bxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG86SwoEaHR0cBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLDKvCIgASgLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIEaHR0cEJuCg5jb20uZ29vZ2xlLmFwaUIQQW5ub3RhdGlvbnNQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwqGBAoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvEg9nb29nbGUucHJvdG9idWYiIwoLRG91YmxlVmFsdWUSFAoFdmFsdWUYASABKAFSBXZhbHVlIiIKCkZsb2F0VmFsdWUSFAoFdmFsdWUYASABKAJSBXZhbHVlIiIKCkludDY0VmFsdWUSFAoFdmFsdWUYASABKANSBXZhbHVlIiMKC1VJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgEUgV2YWx1ZSIiCgpJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgFUgV2YWx1ZSIjCgtVSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoDVIFdmFsdWUiIQoJQm9vbFZhbHVlEhQKBXZhbHVlGAEgASgIUgV2YWx1ZSIjCgtTdHJpbmdWYWx1ZRIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUiIgoKQnl0ZXNWYWx1ZRIUCgV2YWx1ZRgBIAEoDFIFdmFsdWVCgwEKE2NvbS5nb29nbGUucHJvdG9idWZCDVdyYXBwZXJzUHJvdG9QAVoxZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vd3JhcHBlcnNwYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCuIFChxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYimAEKBlN0cnVjdBI7CgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5UgZmaWVsZHMaUQoLRmllbGRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASKyAgoFVmFsdWUSOwoKbnVsbF92YWx1ZRgBIAEoDjIaLmdvb2dsZS5wcm90b2J1Zi5OdWxsVmFsdWVIAFIJbnVsbFZhbHVlEiMKDG51bWJlcl92YWx1ZRgCIAEoAUgAUgtudW1iZXJWYWx1ZRIjCgxzdHJpbmdfdmFsdWUYAyABKAlIAFILc3RyaW5nVmFsdWUSHwoKYm9vbF92YWx1ZRgEIAEoCEgAUglib29sVmFsdWUSPAoMc3RydWN0X3ZhbHVlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAUgtzdHJ1Y3RWYWx1ZRI7CgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAUglsaXN0VmFsdWVCBgoEa2luZCI7CglMaXN0VmFsdWUSLgoGdmFsdWVzGAEgAygLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgZ2YWx1ZXMqGwoJTnVsbFZhbHVlEg4KCk5VTExfVkFMVUUQAEJ/ChNjb20uZ29vZ2xlLnByb3RvYnVmQgtTdHJ1Y3RQcm90b1ABWi9nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9zdHJ1Y3RwYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCqY+Cixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8iswgKB1N3YWdnZXISGAoHc3dhZ2dlchgBIAEoCVIHc3dhZ2dlchJDCgRpbmZvGAIgASgLMi8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mb1IEaW5mbxISCgRob3N0GAMgASgJUgRob3N0EhsKCWJhc2VfcGF0aBgEIAEoCVIIYmFzZVBhdGgSSwoHc2NoZW1lcxgFIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEl8KCXJlc3BvbnNlcxgKIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJxChRzZWN1cml0eV9kZWZpbml0aW9ucxgLIAEoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnNSE3NlY3VyaXR5RGVmaW5pdGlvbnMSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJCCgR0YWdzGA0gAygLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgR0YWdzEmUKDWV4dGVybmFsX2RvY3MYDiABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJiCgpleHRlbnNpb25zGA8gAygLMkIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJSgQICRAKItYHCglPcGVyYXRpb24SEgoEdGFncxgBIAMoCVIEdGFncxIYCgdzdW1tYXJ5GAIgASgJUgdzdW1tYXJ5EiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAQgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSIQoMb3BlcmF0aW9uX2lkGAUgASgJUgtvcGVyYXRpb25JZBIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEmEKCXJlc3BvbnNlcxgJIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEksKB3NjaGVtZXMYCiADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSHgoKZGVwcmVjYXRlZBgLIAEoCFIKZGVwcmVjYXRlZBJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EmQKCmV4dGVuc2lvbnMYDSADKAsyRC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zElUKCnBhcmFtZXRlcnMYDiABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5QYXJhbWV0ZXJzUgpwYXJhbWV0ZXJzGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCSJiCgpQYXJhbWV0ZXJzElQKB2hlYWRlcnMYASADKAsyOi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXJSB2hlYWRlcnMiowIKD0hlYWRlclBhcmFtZXRlchISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJTCgR0eXBlGAMgASgOMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyLlR5cGVSBHR5cGUSFgoGZm9ybWF0GAQgASgJUgZmb3JtYXQSGgoIcmVxdWlyZWQYBSABKAhSCHJlcXVpcmVkIkUKBFR5cGUSCwoHVU5LTk9XThAAEgoKBlNUUklORxABEgoKBk5VTUJFUhACEgsKB0lOVEVHRVIQAxILCgdCT09MRUFOEARKBAgGEAdKBAgHEAgi2AEKBkhlYWRlchIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEgoEdHlwZRgCIAEoCVIEdHlwZRIWCgZmb3JtYXQYAyABKAlSBmZvcm1hdBIYCgdkZWZhdWx0GAYgASgJUgdkZWZhdWx0EhgKB3BhdHRlcm4YDSABKAlSB3BhdHRlcm5KBAgEEAVKBAgFEAZKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxKBAgMEA1KBAgOEA9KBAgPEBBKBAgQEBFKBAgREBJKBAgSEBMimgUKCFJlc3BvbnNlEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhJJCgZzY2hlbWEYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSBnNjaGVtYRJaCgdoZWFkZXJzGAMgAygLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuSGVhZGVyc0VudHJ5UgdoZWFkZXJzEl0KCGV4YW1wbGVzGAQgAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXhhbXBsZXNFbnRyeVIIZXhhbXBsZXMSYwoKZXh0ZW5zaW9ucxgFIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxptCgxIZWFkZXJzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSRwoFdmFsdWUYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJSBXZhbHVlOgI4ARo7Cg1FeGFtcGxlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi1gMKBEluZm8SFAoFdGl0bGUYASABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIoChB0ZXJtc19vZl9zZXJ2aWNlGAMgASgJUg50ZXJtc09mU2VydmljZRJMCgdjb250YWN0GAQgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuQ29udGFjdFIHY29udGFjdBJMCgdsaWNlbnNlGAUgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuTGljZW5zZVIHbGljZW5zZRIYCgd2ZXJzaW9uGAYgASgJUgd2ZXJzaW9uEl8KCmV4dGVuc2lvbnMYByADKAsyPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJFCgdDb250YWN0EhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwSFAoFZW1haWwYAyABKAlSBWVtYWlsIi8KB0xpY2Vuc2USEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybCJLChVFeHRlcm5hbERvY3VtZW50YXRpb24SIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhAKA3VybBgCIAEoCVIDdXJsIqoCCgZTY2hlbWESVgoLanNvbl9zY2hlbWEYASABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUgpqc29uU2NoZW1hEiQKDWRpc2NyaW1pbmF0b3IYAiABKAlSDWRpc2NyaW1pbmF0b3ISGwoJcmVhZF9vbmx5GAMgASgIUghyZWFkT25seRJlCg1leHRlcm5hbF9kb2NzGAUgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSGAoHZXhhbXBsZRgGIAEoCVIHZXhhbXBsZUoECAQQBSLXCgoKSlNPTlNjaGVtYRIQCgNyZWYYAyABKAlSA3JlZhIUCgV0aXRsZRgFIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YBiABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlZmF1bHQYByABKAlSB2RlZmF1bHQSGwoJcmVhZF9vbmx5GAggASgIUghyZWFkT25seRIYCgdleGFtcGxlGAkgASgJUgdleGFtcGxlEh8KC211bHRpcGxlX29mGAogASgBUgptdWx0aXBsZU9mEhgKB21heGltdW0YCyABKAFSB21heGltdW0SKwoRZXhjbHVzaXZlX21heGltdW0YDCABKAhSEGV4Y2x1c2l2ZU1heGltdW0SGAoHbWluaW11bRgNIAEoAVIHbWluaW11bRIrChFleGNsdXNpdmVfbWluaW11bRgOIAEoCFIQZXhjbHVzaXZlTWluaW11bRIdCgptYXhfbGVuZ3RoGA8gASgEUgltYXhMZW5ndGgSHQoKbWluX2xlbmd0aBgQIAEoBFIJbWluTGVuZ3RoEhgKB3BhdHRlcm4YESABKAlSB3BhdHRlcm4SGwoJbWF4X2l0ZW1zGBQgASgEUghtYXhJdGVtcxIbCgltaW5faXRlbXMYFSABKARSCG1pbkl0ZW1zEiEKDHVuaXF1ZV9pdGVtcxgWIAEoCFILdW5pcXVlSXRlbXMSJQoObWF4X3Byb3BlcnRpZXMYGCABKARSDW1heFByb3BlcnRpZXMSJQoObWluX3Byb3BlcnRpZXMYGSABKARSDW1pblByb3BlcnRpZXMSGgoIcmVxdWlyZWQYGiADKAlSCHJlcXVpcmVkEhQKBWFycmF5GCIgAygJUgVhcnJheRJfCgR0eXBlGCMgAygOMksuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5KU09OU2NoZW1hU2ltcGxlVHlwZXNSBHR5cGUSFgoGZm9ybWF0GCQgASgJUgZmb3JtYXQSEgoEZW51bRguIAMoCVIEZW51bRJ6ChNmaWVsZF9jb25maWd1cmF0aW9uGOkHIAEoCzJILmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRmllbGRDb25maWd1cmF0aW9uUhJmaWVsZENvbmZpZ3VyYXRpb24SZQoKZXh0ZW5zaW9ucxgwIAMoCzJFLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGjwKEkZpZWxkQ29uZmlndXJhdGlvbhImCg9wYXRoX3BhcmFtX25hbWUYLyABKAlSDXBhdGhQYXJhbU5hbWUaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEidwoVSlNPTlNjaGVtYVNpbXBsZVR5cGVzEgsKB1VOS05PV04QABIJCgVBUlJBWRABEgsKB0JPT0xFQU4QAhILCgdJTlRFR0VSEAMSCAoETlVMTBAEEgoKBk5VTUJFUhAFEgoKBk9CSkVDVBAGEgoKBlNUUklORxAHSgQIARACSgQIAhADSgQIBBAFSgQIEhATSgQIExAUSgQIFxAYSgQIGxAcSgQIHBAdSgQIHRAeSgQIHhAiSgQIJRAqSgQIKhArSgQIKxAuItkCCgNUYWcSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgDIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEl4KCmV4dGVuc2lvbnMYBCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWcuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIvcBChNTZWN1cml0eURlZmluaXRpb25zEmgKCHNlY3VyaXR5GAEgAygLMkwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9ucy5TZWN1cml0eUVudHJ5UghzZWN1cml0eRp2Cg1TZWN1cml0eUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ek8KBXZhbHVlGAIgASgLMjkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWVSBXZhbHVlOgI4ASL/BgoOU2VjdXJpdHlTY2hlbWUSUgoEdHlwZRgBIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLlR5cGVSBHR5cGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhIKBG5hbWUYAyABKAlSBG5hbWUSTAoCaW4YBCABKA4yPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5JblICaW4SUgoEZmxvdxgFIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkZsb3dSBGZsb3cSKwoRYXV0aG9yaXphdGlvbl91cmwYBiABKAlSEGF1dGhvcml6YXRpb25VcmwSGwoJdG9rZW5fdXJsGAcgASgJUgh0b2tlblVybBJJCgZzY29wZXMYCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXNSBnNjb3BlcxJpCgpleHRlbnNpb25zGAkgAygLMkkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIksKBFR5cGUSEAoMVFlQRV9JTlZBTElEEAASDgoKVFlQRV9CQVNJQxABEhAKDFRZUEVfQVBJX0tFWRACEg8KC1RZUEVfT0FVVEgyEAMiMQoCSW4SDgoKSU5fSU5WQUxJRBAAEgwKCElOX1FVRVJZEAESDQoJSU5fSEVBREVSEAIiagoERmxvdxIQCgxGTE9XX0lOVkFMSUQQABIRCg1GTE9XX0lNUExJQ0lUEAESEQoNRkxPV19QQVNTV09SRBACEhQKEEZMT1dfQVBQTElDQVRJT04QAxIUChBGTE9XX0FDQ0VTU19DT0RFEAQi9gIKE1NlY3VyaXR5UmVxdWlyZW1lbnQSigEKFHNlY3VyaXR5X3JlcXVpcmVtZW50GAEgAygLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50RW50cnlSE3NlY3VyaXR5UmVxdWlyZW1lbnQaMAoYU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlEhQKBXNjb3BlGAEgAygJUgVzY29wZRqfAQoYU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Em0KBXZhbHVlGAIgASgLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50VmFsdWVSBXZhbHVlOgI4ASKWAQoGU2NvcGVzElIKBXNjb3BlGAEgAygLMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzLlNjb3BlRW50cnlSBXNjb3BlGjgKClNjb3BlRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASo7CgZTY2hlbWUSCwoHVU5LTk9XThAAEggKBEhUVFAQARIJCgVIVFRQUxACEgYKAldTEAMSBwoDV1NTEARCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCv0GCi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8aLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvOn4KEW9wZW5hcGl2Ml9zd2FnZ2VyEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGJIIIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXJSEG9wZW5hcGl2MlN3YWdnZXI6hgEKE29wZW5hcGl2Ml9vcGVyYXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiSCCABKAsyNC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb25SEm9wZW5hcGl2Mk9wZXJhdGlvbjp+ChBvcGVuYXBpdjJfc2NoZW1hEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGJIIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIPb3BlbmFwaXYyU2NoZW1hOnUKDW9wZW5hcGl2Ml90YWcSHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYkgggASgLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgxvcGVuYXBpdjJUYWc6fgoPb3BlbmFwaXYyX2ZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiSCCABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUg5vcGVuYXBpdjJGaWVsZEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMKwAQKFXByb3RvL3VzZXIvdXNlci5wcm90bxIOYnVja2V0ZWVyLnVzZXIi3gMKBFVzZXISDgoCaWQYASABKAlSAmlkEjIKBGRhdGEYAiADKAsyHi5idWNrZXRlZXIudXNlci5Vc2VyLkRhdGFFbnRyeVIEZGF0YRJFCgt0YWdnZWRfZGF0YRgDIAMoCzIkLmJ1Y2tldGVlci51c2VyLlVzZXIuVGFnZ2VkRGF0YUVudHJ5Ugp0YWdnZWREYXRhEhsKCWxhc3Rfc2VlbhgEIAEoA1IIbGFzdFNlZW4SHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0GnwKBERhdGESOgoFdmFsdWUYASADKAsyJC5idWNrZXRlZXIudXNlci5Vc2VyLkRhdGEuVmFsdWVFbnRyeVIFdmFsdWUaOAoKVmFsdWVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGjcKCURhdGFFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlgKD1RhZ2dlZERhdGFFbnRyeRIQCgNrZXkYASABKAlSA2tleRIvCgV2YWx1ZRgCIAEoCzIZLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YVIFdmFsdWU6AjgBQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by91c2VyYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCp4CChpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUisQEKBlJlYXNvbhIyCgR0eXBlGAEgASgOMh4uYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uLlR5cGVSBHR5cGUSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkIloKBFR5cGUSCgoGVEFSR0VUEAASCAoEUlVMRRABEgsKB0RFRkFVTFQQAxIKCgZDTElFTlQQBBIRCg1PRkZfVkFSSUFUSU9OEAUSEAoMUFJFUkVRVUlTSVRFEAZCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqYBgoecHJvdG8vZmVhdHVyZS9ldmFsdWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZRodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aGnByb3RvL2ZlYXR1cmUvcmVhc29uLnByb3RvIuMCCgpFdmFsdWF0aW9uEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJwoPZmVhdHVyZV92ZXJzaW9uGAMgASgFUg5mZWF0dXJlVmVyc2lvbhIXCgd1c2VyX2lkGAQgASgJUgZ1c2VySWQSIQoMdmFyaWF0aW9uX2lkGAUgASgJUgt2YXJpYXRpb25JZBI+Cgl2YXJpYXRpb24YBiABKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25CAhgBUgl2YXJpYXRpb24SMQoGcmVhc29uGAcgASgLMhkuYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uUgZyZWFzb24SJwoPdmFyaWF0aW9uX3ZhbHVlGAggASgJUg52YXJpYXRpb25WYWx1ZRIlCg52YXJpYXRpb25fbmFtZRgJIAEoCVINdmFyaWF0aW9uTmFtZSKGAgoPVXNlckV2YWx1YXRpb25zEhIKAmlkGAEgASgJQgIYAVICaWQSPwoLZXZhbHVhdGlvbnMYAiADKAsyHS5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0aW9uUgtldmFsdWF0aW9ucxIdCgpjcmVhdGVkX2F0GAMgASgDUgljcmVhdGVkQXQSMAoUYXJjaGl2ZWRfZmVhdHVyZV9pZHMYBCADKAlSEmFyY2hpdmVkRmVhdHVyZUlkcxIhCgxmb3JjZV91cGRhdGUYBSABKAhSC2ZvcmNlVXBkYXRlIioKBVN0YXRlEgoKBlFVRVVFRBAAEgsKB1BBUlRJQUwQARIICgRGVUxMEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwrHAwoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlItoCCgZDbGF1c2USDgoCaWQYASABKAlSAmlkEhwKCWF0dHJpYnV0ZRgCIAEoCVIJYXR0cmlidXRlEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchIWCgZ2YWx1ZXMYBCADKAlSBnZhbHVlcyLJAQoIT3BlcmF0b3ISCgoGRVFVQUxTEAASBgoCSU4QARINCglFTkRTX1dJVEgQAhIPCgtTVEFSVFNfV0lUSBADEgsKB1NFR01FTlQQBBILCgdHUkVBVEVSEAUSFAoQR1JFQVRFUl9PUl9FUVVBTBAGEggKBExFU1MQBxIRCg1MRVNTX09SX0VRVUFMEAgSCgoGQkVGT1JFEAkSCQoFQUZURVIQChIQCgxGRUFUVVJFX0ZMQUcQCxITCg9QQVJUSUFMTFlfTUFUQ0gQDEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCrsEChxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSItCg1GaXhlZFN0cmF0ZWd5EhwKCXZhcmlhdGlvbhgBIAEoCVIJdmFyaWF0aW9uIqIBCg9Sb2xsb3V0U3RyYXRlZ3kSTAoKdmFyaWF0aW9ucxgBIAMoCzIsLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneS5WYXJpYXRpb25SCnZhcmlhdGlvbnMaQQoJVmFyaWF0aW9uEhwKCXZhcmlhdGlvbhgBIAEoCVIJdmFyaWF0aW9uEhYKBndlaWdodBgCIAEoBVIGd2VpZ2h0IvgBCghTdHJhdGVneRI0CgR0eXBlGAEgASgOMiAuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3kuVHlwZVIEdHlwZRJHCg5maXhlZF9zdHJhdGVneRgCIAEoCzIgLmJ1Y2tldGVlci5mZWF0dXJlLkZpeGVkU3RyYXRlZ3lSDWZpeGVkU3RyYXRlZ3kSTQoQcm9sbG91dF9zdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIPcm9sbG91dFN0cmF0ZWd5Ih4KBFR5cGUSCQoFRklYRUQQABILCgdST0xMT1VUEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqpAgoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZRoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8ihAEKBFJ1bGUSDgoCaWQYASABKAlSAmlkEjcKCHN0cmF0ZWd5GAIgASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSCHN0cmF0ZWd5EjMKB2NsYXVzZXMYAyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSB2NsYXVzZXNCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqoAQoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIjwKBlRhcmdldBIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIUCgV1c2VycxgCIAMoCVIFdXNlcnNCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwr0AgoqcHJvdG8vZmVhdHVyZS9mZWF0dXJlX2xhc3RfdXNlZF9pbmZvLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSL3AQoTRmVhdHVyZUxhc3RVc2VkSW5mbxIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSGAoHdmVyc2lvbhgCIAEoBVIHdmVyc2lvbhIgCgxsYXN0X3VzZWRfYXQYAyABKANSCmxhc3RVc2VkQXQSHQoKY3JlYXRlZF9hdBgEIAEoA1IJY3JlYXRlZEF0EjIKFWNsaWVudF9vbGRlc3RfdmVyc2lvbhgFIAEoCVITY2xpZW50T2xkZXN0VmVyc2lvbhIyChVjbGllbnRfbGF0ZXN0X3ZlcnNpb24YBiABKAlSE2NsaWVudExhdGVzdFZlcnNpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwrCAQogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIlAKDFByZXJlcXVpc2l0ZRIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCrMMChtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlGhhwcm90by9mZWF0dXJlL3J1bGUucHJvdG8aGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoqcHJvdG8vZmVhdHVyZS9mZWF0dXJlX2xhc3RfdXNlZF9pbmZvLnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90byLSBwoHRmVhdHVyZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SGAoHZW5hYmxlZBgEIAEoCFIHZW5hYmxlZBIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkEjkKFmV2YWx1YXRpb25fdW5kZWxheWFibGUYBiABKAhCAhgBUhVldmFsdWF0aW9uVW5kZWxheWFibGUSEAoDdHRsGAcgASgFUgN0dGwSGAoHdmVyc2lvbhgIIAEoBVIHdmVyc2lvbhIdCgpjcmVhdGVkX2F0GAkgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgKIAEoA1IJdXBkYXRlZEF0EjwKCnZhcmlhdGlvbnMYCyADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSMwoHdGFyZ2V0cxgMIAMoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlRhcmdldFIHdGFyZ2V0cxItCgVydWxlcxgNIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEkYKEGRlZmF1bHRfc3RyYXRlZ3kYDiABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIPZGVmYXVsdFN0cmF0ZWd5EiMKDW9mZl92YXJpYXRpb24YDyABKAlSDG9mZlZhcmlhdGlvbhISCgR0YWdzGBAgAygJUgR0YWdzEkwKDmxhc3RfdXNlZF9pbmZvGBEgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZUxhc3RVc2VkSW5mb1IMbGFzdFVzZWRJbmZvEh4KCm1haW50YWluZXIYEiABKAlSCm1haW50YWluZXISTwoOdmFyaWF0aW9uX3R5cGUYEyABKA4yKC5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlLlZhcmlhdGlvblR5cGVSDXZhcmlhdGlvblR5cGUSGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkEkUKDXByZXJlcXVpc2l0ZXMYFSADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDXByZXJlcXVpc2l0ZXMSIwoNc2FtcGxpbmdfc2VlZBgWIAEoCVIMc2FtcGxpbmdTZWVkIj4KDVZhcmlhdGlvblR5cGUSCgoGU1RSSU5HEAASCwoHQk9PTEVBThABEgoKBk5VTUJFUhACEggKBEpTT04QAyJSCghGZWF0dXJlcxI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEg4KAmlkGAIgASgJUgJpZCJzChJFbnZpcm9ubWVudEZlYXR1cmUSJQoOZW52aXJvbm1lbnRfaWQYASABKAlSDWVudmlyb25tZW50SWQSNgoIZmVhdHVyZXMYAiADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcyJnCgNUYWcSDgoCaWQYASABKAlSAmlkEh0KCmNyZWF0ZWRfYXQYAiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAMgASgDUgl1cGRhdGVkQXQSEgoEbmFtZRgEIAEoCVIEbmFtZUIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK5AEKGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiI2CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVlQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKoAUKIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSKtBAoLRmxhZ1RyaWdnZXISDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SIwoNdHJpZ2dlcl9jb3VudBgHIAEoBVIMdHJpZ2dlckNvdW50EioKEWxhc3RfdHJpZ2dlcmVkX2F0GAggASgDUg9sYXN0VHJpZ2dlcmVkQXQSFAoFdG9rZW4YCSABKAlSBXRva2VuEhoKCGRpc2FibGVkGAogASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAsgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgMIAEoA1IJdXBkYXRlZEF0EiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIioKBFR5cGUSEAoMVHlwZV9VTktOT1dOEAASEAoMVHlwZV9XRUJIT09LEAEiOwoGQWN0aW9uEhIKDkFjdGlvbl9VTktOT1dOEAASDQoJQWN0aW9uX09OEAESDgoKQWN0aW9uX09GRhACSgQIAxAEQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKwCMKG3Byb3RvL2ZlYXR1cmUvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8iOQoHQ29tbWFuZBIuCgdjb21tYW5kGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIHY29tbWFuZCK1AwoUQ3JlYXRlRmVhdHVyZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSEgoEdGFncxgFIAMoCVIEdGFncxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlIhcKFUFyY2hpdmVGZWF0dXJlQ29tbWFuZCIZChdVbmFyY2hpdmVGZWF0dXJlQ29tbWFuZCIWChREZWxldGVGZWF0dXJlQ29tbWFuZCIqChRSZW5hbWVGZWF0dXJlQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIjwKGENoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iuAEKKUNoYW5nZUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNTdGF0dXNDb21tYW5kEjkKBnN0YXR1cxgBIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYAyABKANSBWNvdW50IiEKDUFkZFRhZ0NvbW1hbmQSEAoDdGFnGAEgASgJUgN0YWciJAoQUmVtb3ZlVGFnQ29tbWFuZBIQCgN0YWcYASABKAlSA3RhZyIWChRFbmFibGVGZWF0dXJlQ29tbWFuZCIXChVEaXNhYmxlRmVhdHVyZUNvbW1hbmQiYQoTQWRkVmFyaWF0aW9uQ29tbWFuZBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24iKAoWUmVtb3ZlVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiQwobQ2hhbmdlVmFyaWF0aW9uVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUiQAoaQ2hhbmdlVmFyaWF0aW9uTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohQ2hhbmdlVmFyaWF0aW9uRGVzY3JpcHRpb25Db21tYW5kEg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iKwoZQ2hhbmdlT2ZmVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiPwoZQWRkVXNlclRvVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEdXNlchgCIAEoCVIEdXNlciJECh5SZW1vdmVVc2VyRnJvbVZhcmlhdGlvbkNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBHVzZXIYAiABKAlSBHVzZXIiVwocQ2hhbmdlRGVmYXVsdFN0cmF0ZWd5Q29tbWFuZBI3CghzdHJhdGVneRgBIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI9Cg5BZGRSdWxlQ29tbWFuZBIrCgRydWxlGAEgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJ9ChlDaGFuZ2VSdWxlU3RyYXRlZ3lDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiNAoXQ2hhbmdlUnVsZXNPcmRlckNvbW1hbmQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiIwoRRGVsZXRlUnVsZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkIl4KEEFkZENsYXVzZUNvbW1hbmQSFwoHcnVsZV9pZBgBIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgCIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlIj4KE0RlbGV0ZUNsYXVzZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJlChxDaGFuZ2VDbGF1c2VBdHRyaWJ1dGVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSHAoJYXR0cmlidXRlGAMgASgJUglhdHRyaWJ1dGUihgEKG0NoYW5nZUNsYXVzZU9wZXJhdG9yQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJWChVBZGRDbGF1c2VWYWx1ZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIUCgV2YWx1ZRgDIAEoCVIFdmFsdWUiWQoYUmVtb3ZlQ2xhdXNlVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIoMBChpDaGFuZ2VGaXhlZFN0cmF0ZWd5Q29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjwKCHN0cmF0ZWd5GAMgASgLMiAuYnVja2V0ZWVyLmZlYXR1cmUuRml4ZWRTdHJhdGVneVIIc3RyYXRlZ3kihwEKHENoYW5nZVJvbGxvdXRTdHJhdGVneUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI+CghzdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIIc3RyYXRlZ3kiTAoUQ3JlYXRlU2VnbWVudENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iFgoURGVsZXRlU2VnbWVudENvbW1hbmQiLgoYQ2hhbmdlU2VnbWVudE5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQwofQ2hhbmdlU2VnbWVudERlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24ibgoVQWRkU2VnbWVudFVzZXJDb21tYW5kEhkKCHVzZXJfaWRzGAEgAygJUgd1c2VySWRzEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlInEKGERlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZBIZCgh1c2VyX2lkcxgBIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgCIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSJvCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZBISCgRkYXRhGAEgASgMUgRkYXRhEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIiAKHkluY3JlbWVudEZlYXR1cmVWZXJzaW9uQ29tbWFuZCJCChNDbG9uZUZlYXR1cmVDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGFJlc2V0U2FtcGxpbmdTZWVkQ29tbWFuZCJdChZBZGRQcmVyZXF1aXNpdGVDb21tYW5kEkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjoKGVJlbW92ZVByZXJlcXVpc2l0ZUNvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkImkKIkNoYW5nZVByZXJlcXVpc2l0ZVZhcmlhdGlvbkNvbW1hbmQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUi0wEKGENyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgCIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAMgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uIhkKF1Jlc2V0RmxhZ1RyaWdnZXJDb21tYW5kIkcKI0NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIaChhFbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQiGwoZRGlzYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZCIaChhEZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQiHwodVXBkYXRlRmxhZ1RyaWdnZXJVc2FnZUNvbW1hbmRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq+lgEKG3Byb3RvL2ZlYXR1cmUvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vZmVhdHVyZS9jb21tYW5kLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvGhtwcm90by9mZWF0dXJlL3NlZ21lbnQucHJvdG8aIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8iUAoRR2V0RmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkoKEkdldEZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSJTChJHZXRGZWF0dXJlc1JlcXVlc3QSEAoDaWRzGAIgAygJUgNpZHMSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiTQoTR2V0RmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzIvUFChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISEgoEdGFncxgDIAMoCVIEdGFncxJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEjQKB2VuYWJsZWQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEkEKDmhhc19leHBlcmltZW50GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaGFzRXhwZXJpbWVudBIlCg5zZWFyY2hfa2V5d29yZBgKIAEoCVINc2VhcmNoS2V5d29yZBI2CghhcmNoaXZlZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEkcKEWhhc19wcmVyZXF1aXNpdGVzGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIQaGFzUHJlcmVxdWlzaXRlcxIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCJXCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgRUQUdTEAQSCwoHRU5BQkxFRBAFIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAYQByKHAQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAQoaTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchISCgR0YWdzGAMgAygJUgR0YWdzEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIm0KG0xpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yIoYBChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiTQoVQ3JlYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIs8FChRVcGRhdGVGZWF0dXJlUmVxdWVzdBIYCgdjb21tZW50GAEgASgJUgdjb21tZW50EiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkEg4KAmlkGAMgASgJUgJpZBIwCgRuYW1lGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhISCgR0YWdzGAYgAygJUgR0YWdzEjQKB2VuYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSPAoKdmFyaWF0aW9ucxgJIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJFCg1wcmVyZXF1aXNpdGVzGAogAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzEjMKB3RhcmdldHMYCyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMSLQoFcnVsZXMYDCADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxJGChBkZWZhdWx0X3N0cmF0ZWd5GA0gASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSD2RlZmF1bHRTdHJhdGVneRJBCg1vZmZfdmFyaWF0aW9uGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgxvZmZWYXJpYXRpb24iTQoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIrABChRFbmFibGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRW5hYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVEaXNhYmxlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZEaXNhYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVBcmNoaXZlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BcmNoaXZlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrYBChdVbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYVW5hcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrABChREZWxldGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlRmVhdHVyZVJlc3BvbnNlIt8DChtVcGRhdGVGZWF0dXJlRGV0YWlsc1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEl0KFnJlbmFtZV9mZWF0dXJlX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5SZW5hbWVGZWF0dXJlQ29tbWFuZFIUcmVuYW1lRmVhdHVyZUNvbW1hbmQSaQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAyABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5DaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJKChBhZGRfdGFnX2NvbW1hbmRzGAQgAygLMiAuYnVja2V0ZWVyLmZlYXR1cmUuQWRkVGFnQ29tbWFuZFIOYWRkVGFnQ29tbWFuZHMSUwoTcmVtb3ZlX3RhZ19jb21tYW5kcxgFIAMoCzIjLmJ1Y2tldGVlci5mZWF0dXJlLlJlbW92ZVRhZ0NvbW1hbmRSEXJlbW92ZVRhZ0NvbW1hbmRzEhgKB2NvbW1lbnQYByABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgGEAciHgocVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSKvAQoeVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiIQofVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXNwb25zZSKhAgodVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEjYKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZFIIY29tbWFuZHMSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBJJCgRmcm9tGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QuRnJvbVIEZnJvbRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCImCgRGcm9tEgsKB1VOS05PV04QABIICgRVU0VSEAESBwoDT1BTEAJKBAgDEAQiIAoeVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIpQBChNDbG9uZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRDbG9uZUZlYXR1cmVSZXNwb25zZSLZAQoUQ3JlYXRlU2VnbWVudFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIXCgRuYW1lGAMgASgJQgPgQQJSBG5hbWUSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIgCgtkZXNjcmlwdGlvbhgFIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiTQoVQ3JlYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IloKEUdldFNlZ21lbnRSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAMgASgJQgPgQQJSDWVudmlyb25tZW50SWRKBAgCEAMiSgoSR2V0U2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50Iq8EChNMaXN0U2VnbWVudHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYBCABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSMwoGc3RhdHVzGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxJDChBpc19pbl91c2Vfc3RhdHVzGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxIqCg5lbnZpcm9ubWVudF9pZBgJIAEoCUID4EECUg1lbnZpcm9ubWVudElkIkAKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAMQBCKHAQoUTGlzdFNlZ21lbnRzUmVzcG9uc2USNgoIc2VnbWVudHMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UghzZWdtZW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKpAQoURGVsZXRlU2VnbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkElQKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50Q29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlU2VnbWVudFJlc3BvbnNlIpUCChRVcGRhdGVTZWdtZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSQoIY29tbWFuZHMYAiADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5Db21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIIY29tbWFuZHMSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIwCgRuYW1lGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbkoECAMQBCJNChVVcGRhdGVTZWdtZW50UmVzcG9uc2USNAoHc2VnbWVudBgBIAEoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRSB3NlZ21lbnQimAEKFUFkZFNlZ21lbnRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQgoHY29tbWFuZBgCIAEoCzIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBZGRTZWdtZW50VXNlclJlc3BvbnNlIp4BChhEZWxldGVTZWdtZW50VXNlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkUKB2NvbW1hbmQYAiABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50VXNlckNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGwoZRGVsZXRlU2VnbWVudFVzZXJSZXNwb25zZSK4AQoVR2V0U2VnbWVudFVzZXJSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgd1c2VyX2lkGAIgASgJUgZ1c2VySWQSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgEEAUiTAoWR2V0U2VnbWVudFVzZXJSZXNwb25zZRIyCgR1c2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXJSBHVzZXIi5gEKF0xpc3RTZWdtZW50VXNlcnNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHQoKc2VnbWVudF9pZBgDIAEoCVIJc2VnbWVudElkEjEKBXN0YXRlGAQgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBXN0YXRlEhcKB3VzZXJfaWQYBSABKAlSBnVzZXJJZBIlCg5lbnZpcm9ubWVudF9pZBgHIAEoCVINZW52aXJvbm1lbnRJZEoECAYQByJoChhMaXN0U2VnbWVudFVzZXJzUmVzcG9uc2USNAoFdXNlcnMYASADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3Ii0AIKHUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYAiABKAlSCXNlZ21lbnRJZBJdCgdjb21tYW5kGAMgASgLMjAuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc0NvbW1hbmRCERgBkkEMMgpkZXByZWNhdGVkUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkEkgKBGRhdGEYBSABKAxCNJJBMTIvc2VnbWVudCB1c2VyIGlkcyBzZXBhcmF0ZWQgYnkgY29tbWEgb3IgbmV3IGxpbmVSBGRhdGESOgoFc3RhdGUYBiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGVKBAgBEAIiIAoeQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIqkBCh9CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYAiABKAlSCXNlZ21lbnRJZBI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiI2CiBCdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXNwb25zZRISCgRkYXRhGAEgASgMUgRkYXRhIqEBChdFdmFsdWF0ZUZlYXR1cmVzUmVxdWVzdBIoCgR1c2VyGAEgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIQCgN0YWcYAyABKAlSA3RhZxIdCgpmZWF0dXJlX2lkGAQgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiaQoYRXZhbHVhdGVGZWF0dXJlc1Jlc3BvbnNlEk0KEHVzZXJfZXZhbHVhdGlvbnMYASABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Vc2VyRXZhbHVhdGlvbnNSD3VzZXJFdmFsdWF0aW9ucyKsAwoPTGlzdFRhZ3NSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgCIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISRQoIb3JkZXJfYnkYBCABKA4yKi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJaCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yMS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkIkgKB09yZGVyQnkSCwoHREVGQVVMVBAAEgYKAklEEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgROQU1FEAQiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIARACIncKEExpc3RUYWdzUmVzcG9uc2USKgoEdGFncxgBIAMoCzIWLmJ1Y2tldGVlci5mZWF0dXJlLlRhZ1IEdGFncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKzAQoYQ3JlYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0EmoKG2NyZWF0ZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZFIYY3JlYXRlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIARACInAKGUNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIsMBChhEZWxldGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEmoKG2RlbGV0ZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyQ29tbWFuZFIYZGVsZXRlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGURlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2Ui5gEKGFVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSjAEKJ2NoYW5nZV9mbGFnX3RyaWdnZXJfZGVzY3JpcHRpb25fY29tbWFuZBgDIAEoCzI2LmJ1Y2tldGVlci5mZWF0dXJlLkNoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kUiNjaGFuZ2VGbGFnVHJpZ2dlckRlc2NyaXB0aW9uQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyIbChlVcGRhdGVGbGFnVHJpZ2dlclJlc3BvbnNlIsMBChhFbmFibGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEmoKG2VuYWJsZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZFIYZW5hYmxlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGUVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UixwEKGURpc2FibGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEm0KHGRpc2FibGVfZmxhZ190cmlnZ2VyX2NvbW1hbmQYAyABKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJDb21tYW5kUhlkaXNhYmxlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhwKGkRpc2FibGVGbGFnVHJpZ2dlclJlc3BvbnNlIr8BChdSZXNldEZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSZwoacmVzZXRfZmxhZ190cmlnZ2VyX2NvbW1hbmQYAyABKAsyKi5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyQ29tbWFuZFIXcmVzZXRGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMibwoYUmVzZXRGbGFnVHJpZ2dlclJlc3BvbnNlEkEKDGZsYWdfdHJpZ2dlchgBIAEoCzIeLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyUgtmbGFnVHJpZ2dlchIQCgN1cmwYAiABKAlSA3VybCJUChVHZXRGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIm0KFkdldEZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIqoDChdMaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISGwoJcGFnZV9zaXplGAQgASgFUghwYWdlU2l6ZRJNCghvcmRlcl9ieRgFIAEoDjIyLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGbGFnVHJpZ2dlcnNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYgoPb3JkZXJfZGlyZWN0aW9uGAYgASgOMjkuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkIjYKB09yZGVyQnkSCwoHREVGQVVMVBAAEg4KCkNSRUFURURfQVQQARIOCgpVUERBVEVEX0FUEAIiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIAhADIqMCChhMaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2USYwoNZmxhZ190cmlnZ2VycxgBIAMoCzI+LmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZS5GbGFnVHJpZ2dlcldpdGhVcmxSDGZsYWdUcmlnZ2VycxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudBppChJGbGFnVHJpZ2dlcldpdGhVcmwSQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIjEKGUZsYWdUcmlnZ2VyV2ViaG9va1JlcXVlc3QSFAoFdG9rZW4YASABKAlSBXRva2VuIhwKGkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlMtI4Cg5GZWF0dXJlU2VydmljZRJbCgpHZXRGZWF0dXJlEiQuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZVJlcXVlc3QaJS5idWNrZXRlZXIuZmVhdHVyZS5HZXRGZWF0dXJlUmVzcG9uc2UiABJeCgtHZXRGZWF0dXJlcxIlLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVzUmVxdWVzdBomLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVzUmVzcG9uc2UiABJhCgxMaXN0RmVhdHVyZXMSJi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZlYXR1cmVzUmVzcG9uc2UiABJ2ChNMaXN0RW5hYmxlZEZlYXR1cmVzEi0uYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QaLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RW5hYmxlZEZlYXR1cmVzUmVzcG9uc2UiABJkCg1DcmVhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVGZWF0dXJlUmVzcG9uc2UiABJkCg1VcGRhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlUmVzcG9uc2UiABJnCg1FbmFibGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5FbmFibGVGZWF0dXJlUmVzcG9uc2UiA4gCARJqCg5EaXNhYmxlRmVhdHVyZRIoLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGZWF0dXJlUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGZWF0dXJlUmVzcG9uc2UiA4gCARJnCg5BcmNoaXZlRmVhdHVyZRIoLmJ1Y2tldGVlci5mZWF0dXJlLkFyY2hpdmVGZWF0dXJlUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFyY2hpdmVGZWF0dXJlUmVzcG9uc2UiABJtChBVbmFyY2hpdmVGZWF0dXJlEiouYnVja2V0ZWVyLmZlYXR1cmUuVW5hcmNoaXZlRmVhdHVyZVJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5VbmFyY2hpdmVGZWF0dXJlUmVzcG9uc2UiABJkCg1EZWxldGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVGZWF0dXJlUmVzcG9uc2UiABJ5ChRVcGRhdGVGZWF0dXJlRGV0YWlscxIuLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVEZXRhaWxzUmVxdWVzdBovLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVEZXRhaWxzUmVzcG9uc2UiABKCAQoXVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnMSMS5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVmFyaWF0aW9uc1JlcXVlc3QaMi5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVmFyaWF0aW9uc1Jlc3BvbnNlIgASfwoWVXBkYXRlRmVhdHVyZVRhcmdldGluZxIwLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVUYXJnZXRpbmdSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIgASYQoMQ2xvbmVGZWF0dXJlEiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlUmVxdWVzdBonLmJ1Y2tldGVlci5mZWF0dXJlLkNsb25lRmVhdHVyZVJlc3BvbnNlIgASpgQKDUNyZWF0ZVNlZ21lbnQSJy5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVTZWdtZW50UmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRSZXNwb25zZSLBA5JBpwMKB3NlZ21lbnQSBkNyZWF0ZRoRQ3JlYXRlIGEgc2VnbWVudC4qFXdlYi52MS5zZWdtZW50LmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhAiCy92MS9zZWdtZW50OgEqEpEECgpHZXRTZWdtZW50EiQuYnVja2V0ZWVyLmZlYXR1cmUuR2V0U2VnbWVudFJlcXVlc3QaJS5idWNrZXRlZXIuZmVhdHVyZS5HZXRTZWdtZW50UmVzcG9uc2UitQOSQZ4DCgdzZWdtZW50EgNHZXQaDkdldCBhIHNlZ21lbnQuKhJ3ZWIudjEuc2VnbWVudC5nZXRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINEgsvdjEvc2VnbWVudBKaBAoMTGlzdFNlZ21lbnRzEiYuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdBonLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RTZWdtZW50c1Jlc3BvbnNlIrgDkkGgAwoHc2VnbWVudBIETGlzdBoOTGlzdCBzZWdtZW50cy4qE3dlYi52MS5zZWdtZW50Lmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIOEgwvdjEvc2VnbWVudHMSowQKDURlbGV0ZVNlZ21lbnQSJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50UmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRSZXNwb25zZSK+A5JBpwMKB3NlZ21lbnQSBkRlbGV0ZRoRRGVsZXRlIGEgc2VnbWVudC4qFXdlYi52MS5zZWdtZW50LmRlbGV0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0qCy92MS9zZWdtZW50EqYECg1VcGRhdGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVTZWdtZW50UmVzcG9uc2UiwQOSQacDCgdzZWdtZW50EgZVcGRhdGUaEVVwZGF0ZSBhIHNlZ21lbnQuKhV3ZWIudjEuc2VnbWVudC51cGRhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIQMgsvdjEvc2VnbWVudDoBKhJqCg5BZGRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJzChFEZWxldGVTZWdtZW50VXNlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJqCg5HZXRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJtChBMaXN0U2VnbWVudFVzZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudFVzZXJzUmVzcG9uc2UiABLsBAoWQnVsa1VwbG9hZFNlZ21lbnRVc2VycxIwLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIuwDkkHAAwoHc2VnbWVudBILQnVsayB1cGxvYWQaGkJ1bGsgdXBsb2FkIHNlZ21lbnQgdXNlcnMuKiB3ZWIudjEuc2VnbWVudF91c2Vycy5idWxrX3VwbG9hZEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiIiHS92MS9zZWdtZW50X3VzZXJzL2J1bGtfdXBsb2FkOgEqEoUBChhCdWxrRG93bmxvYWRTZWdtZW50VXNlcnMSMi5idWNrZXRlZXIuZmVhdHVyZS5CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjMuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa0Rvd25sb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiABJtChBFdmFsdWF0ZUZlYXR1cmVzEiouYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGVGZWF0dXJlc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2UiABL+AwoITGlzdFRhZ3MSIi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QaIy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1Jlc3BvbnNlIqgDkkGUAwoDdGFnEgRMaXN0GgpMaXN0IHRhZ3MuKg93ZWIudjEudGFnLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvdGFncxJwChFDcmVhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFVcGRhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFFbmFibGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJzChJEaXNhYmxlRmxhZ1RyaWdnZXISLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJSZXF1ZXN0Gi0uYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBSZXNldEZsYWdUcmlnZ2VyEiouYnVja2V0ZWVyLmZlYXR1cmUuUmVzZXRGbGFnVHJpZ2dlclJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFEZWxldGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJnCg5HZXRGbGFnVHJpZ2dlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBMaXN0RmxhZ1RyaWdnZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2UiABKUAQoSRmxhZ1RyaWdnZXJXZWJob29rEiwuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBotLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlIiGC0+STAhsiGS93ZWJob29rL3RyaWdnZXJzL3t0b2tlbn1CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqcAwoVcHJvdG8vcHVzaC9wdXNoLnByb3RvEg5idWNrZXRlZXIucHVzaCK6AgoEUHVzaBIOCgJpZBgBIAEoCVICaWQSEgoEdGFncxgDIAMoCVIEdGFncxIYCgdkZWxldGVkGAQgASgIUgdkZWxldGVkEhIKBG5hbWUYBSABKAlSBG5hbWUSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBIuChNmY21fc2VydmljZV9hY2NvdW50GAggASgJUhFmY21TZXJ2aWNlQWNjb3VudBIaCghkaXNhYmxlZBgJIAEoCFIIZGlzYWJsZWQSJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWQSKQoQZW52aXJvbm1lbnRfbmFtZRgLIAEoCVIPZW52aXJvbm1lbnROYW1lSgQIAhADQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzMK6gIKGHByb3RvL3B1c2gvY29tbWFuZC5wcm90bxIOYnVja2V0ZWVyLnB1c2gicQoRQ3JlYXRlUHVzaENvbW1hbmQSEgoEdGFncxgCIAMoCVIEdGFncxISCgRuYW1lGAMgASgJUgRuYW1lEi4KE2ZjbV9zZXJ2aWNlX2FjY291bnQYBCABKAxSEWZjbVNlcnZpY2VBY2NvdW50SgQIARACIigKEkFkZFB1c2hUYWdzQ29tbWFuZBISCgR0YWdzGAEgAygJUgR0YWdzIisKFURlbGV0ZVB1c2hUYWdzQ29tbWFuZBISCgR0YWdzGAEgAygJUgR0YWdzIhMKEURlbGV0ZVB1c2hDb21tYW5kIicKEVJlbmFtZVB1c2hDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWVCLlosZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3B1c2hiBnByb3RvMwrJIQoYcHJvdG8vcHVzaC9zZXJ2aWNlLnByb3RvEg5idWNrZXRlZXIucHVzaBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhVwcm90by9wdXNoL3B1c2gucHJvdG8aGHByb3RvL3B1c2gvY29tbWFuZC5wcm90byLZAQoRQ3JlYXRlUHVzaFJlcXVlc3QSPwoHY29tbWFuZBgCIAEoCzIhLmJ1Y2tldGVlci5wdXNoLkNyZWF0ZVB1c2hDb21tYW5kQgIYAVIHY29tbWFuZBISCgR0YWdzGAMgAygJUgR0YWdzEhIKBG5hbWUYBCABKAlSBG5hbWUSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgFIAEoDFIRZmNtU2VydmljZUFjY291bnQSJQoOZW52aXJvbm1lbnRfaWQYBiABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiPgoSQ3JlYXRlUHVzaFJlc3BvbnNlEigKBHB1c2gYASABKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgRwdXNoIqEEChFMaXN0UHVzaGVzUmVxdWVzdBIbCglwYWdlX3NpemUYAiABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgDIAEoCVIGY3Vyc29yEkQKCG9yZGVyX2J5GAQgASgOMikuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJZCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yMC5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQSJwoPb3JnYW5pemF0aW9uX2lkGAggASgJUg5vcmdhbml6YXRpb25JZBI2CghkaXNhYmxlZBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkIlwKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEg8KC0VOVklST05NRU5UEAQSCQoFU1RBVEUQBSIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIiewoSTGlzdFB1c2hlc1Jlc3BvbnNlEiwKBnB1c2hlcxgBIAMoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBnB1c2hlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKNAQoRRGVsZXRlUHVzaFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEjsKB2NvbW1hbmQYAyABKAsyIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiIUChJEZWxldGVQdXNoUmVzcG9uc2Ui7gMKEVVwZGF0ZVB1c2hSZXF1ZXN0EhMKAmlkGAIgASgJQgPgQQJSAmlkElkKFWFkZF9wdXNoX3RhZ3NfY29tbWFuZBgDIAEoCzIiLmJ1Y2tldGVlci5wdXNoLkFkZFB1c2hUYWdzQ29tbWFuZEICGAFSEmFkZFB1c2hUYWdzQ29tbWFuZBJiChhkZWxldGVfcHVzaF90YWdzX2NvbW1hbmQYBCABKAsyJS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoVGFnc0NvbW1hbmRCAhgBUhVkZWxldGVQdXNoVGFnc0NvbW1hbmQSVQoTcmVuYW1lX3B1c2hfY29tbWFuZBgFIAEoCzIhLmJ1Y2tldGVlci5wdXNoLlJlbmFtZVB1c2hDb21tYW5kQgIYAVIRcmVuYW1lUHVzaENvbW1hbmQSEgoEdGFncxgGIAMoCVIEdGFncxIwCgRuYW1lGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEioKDmVudmlyb25tZW50X2lkGAggASgJQgPgQQJSDWVudmlyb25tZW50SWQSNgoIZGlzYWJsZWQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZEoECAEQAiI+ChJVcGRhdGVQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2giUQoOR2V0UHVzaFJlcXVlc3QSKgoOZW52aXJvbm1lbnRfaWQYASABKAlCA+BBAlINZW52aXJvbm1lbnRJZBITCgJpZBgCIAEoCUID4EECUgJpZCI7Cg9HZXRQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2gygBEKC1B1c2hTZXJ2aWNlEoQECgpMaXN0UHVzaGVzEiEuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVzcG9uc2UirgOSQZgDCgRwdXNoEgRMaXN0GgxMaXN0IHB1c2hlcy4qEHdlYi52MS5wdXNoLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIMEgovdjEvcHVzaGVzEosECgpDcmVhdGVQdXNoEiEuYnVja2V0ZWVyLnB1c2guQ3JlYXRlUHVzaFJlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5DcmVhdGVQdXNoUmVzcG9uc2UitQOSQZ4DCgRwdXNoEgZDcmVhdGUaDkNyZWF0ZSBhIHB1c2guKhJ3ZWIudjEucHVzaC5jcmVhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINIggvdjEvcHVzaDoBKhKLBAoKVXBkYXRlUHVzaBIhLmJ1Y2tldGVlci5wdXNoLlVwZGF0ZVB1c2hSZXF1ZXN0GiIuYnVja2V0ZWVyLnB1c2guVXBkYXRlUHVzaFJlc3BvbnNlIrUDkkGeAwoEcHVzaBIGVXBkYXRlGg5VcGRhdGUgYSBwdXNoLioSd2ViLnYxLnB1c2gudXBkYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCDTIIL3YxL3B1c2g6ASoS9gMKB0dldFB1c2gSHi5idWNrZXRlZXIucHVzaC5HZXRQdXNoUmVxdWVzdBofLmJ1Y2tldGVlci5wdXNoLkdldFB1c2hSZXNwb25zZSKpA5JBlQMKBHB1c2gSA0dldBoLR2V0IGEgcHVzaC4qD3dlYi52MS5wdXNoLmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgoSCC92MS9wdXNoElUKCkRlbGV0ZVB1c2gSIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoUmVxdWVzdBoiLmJ1Y2tldGVlci5wdXNoLkRlbGV0ZVB1c2hSZXNwb25zZSIAQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrAEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEiqAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50GtcBCgRSb2xlIlkKC0Vudmlyb25tZW50EhoKFkVudmlyb25tZW50X1VOQVNTSUdORUQQABIWChJFbnZpcm9ubWVudF9WSUVXRVIQARIWChJFbnZpcm9ubWVudF9FRElUT1IQAiJ0CgxPcmdhbml6YXRpb24SGwoXT3JnYW5pemF0aW9uX1VOQVNTSUdORUQQABIXChNPcmdhbml6YXRpb25fTUVNQkVSEAESFgoST3JnYW5pemF0aW9uX0FETUlOEAISFgoST3JnYW5pemF0aW9uX09XTkVSEAMaewoPRW52aXJvbm1lbnRSb2xlEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkEKBHJvbGUYAiABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZSLqBgoOQ29uc29sZUFjY291bnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKYXZhdGFyX3VybBgDIAEoCVIJYXZhdGFyVXJsEiYKD2lzX3N5c3RlbV9hZG1pbhgEIAEoCFINaXNTeXN0ZW1BZG1pbhJHCgxvcmdhbml6YXRpb24YBSABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24SWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSXgoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyMS5idWNrZXRlZXIuYWNjb3VudC5Db25zb2xlQWNjb3VudC5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSRgoOc2VhcmNoX2ZpbHRlcnMYCCADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgJIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgKIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCyABKAlSCGxhbmd1YWdlEigKEGF2YXRhcl9maWxlX3R5cGUYDCABKAlSDmF2YXRhckZpbGVUeXBlEiEKDGF2YXRhcl9pbWFnZRgNIAEoDFILYXZhdGFySW1hZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhrWAQoPRW52aXJvbm1lbnRSb2xlEkYKC2Vudmlyb25tZW50GAEgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EjgKB3Byb2plY3QYAiABKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIHcHJvamVjdBJBCgRyb2xlGAMgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGVCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrmBgobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8iuwMKBkFQSUtleRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIyCgRyb2xlGAMgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHgoKbWFpbnRhaW5lchgHIAEoCVIKbWFpbnRhaW5lchIXCgdhcGlfa2V5GAggASgJUgZhcGlLZXkSIAoLZGVzY3JpcHRpb24YCSABKAlSC2Rlc2NyaXB0aW9uEikKEGVudmlyb25tZW50X25hbWUYCiABKAlSD2Vudmlyb25tZW50TmFtZSJ5CgRSb2xlEgsKB1VOS05PV04QABIOCgpTREtfQ0xJRU5UEAESDgoKU0RLX1NFUlZFUhACEhgKFFBVQkxJQ19BUElfUkVBRF9PTkxZEAMSFAoQUFVCTElDX0FQSV9XUklURRAEEhQKEFBVQkxJQ19BUElfQURNSU4QBSKVAgoRRW52aXJvbm1lbnRBUElLZXkSMgoHYXBpX2tleRgCIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5EjEKFGVudmlyb25tZW50X2Rpc2FibGVkGAMgASgIUhNlbnZpcm9ubWVudERpc2FibGVkEiEKCnByb2plY3RfaWQYBCABKAlCAhgBUglwcm9qZWN0SWQSRgoLZW52aXJvbm1lbnQYBSABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSKAoQcHJvamVjdF91cmxfY29kZRgGIAEoCVIOcHJvamVjdFVybENvZGVKBAgBEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrWEQobcHJvdG8vYWNjb3VudC9jb21tYW5kLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvGhtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8aIXByb3RvL2FjY291bnQvc2VhcmNoX2ZpbHRlci5wcm90byL8AgoWQ3JlYXRlQWNjb3VudFYyQ29tbWFuZBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBJbChFvcmdhbml6YXRpb25fcm9sZRgEIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgFIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSHQoKZmlyc3RfbmFtZRgGIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgHIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCCABKAlSCGxhbmd1YWdlIjAKGkNoYW5nZUFjY291bnRWMk5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQAofQ2hhbmdlQWNjb3VudFYyRmlyc3ROYW1lQ29tbWFuZBIdCgpmaXJzdF9uYW1lGAEgASgJUglmaXJzdE5hbWUiPQoeQ2hhbmdlQWNjb3VudFYyTGFzdE5hbWVDb21tYW5kEhsKCWxhc3RfbmFtZRgBIAEoCVIIbGFzdE5hbWUiPAoeQ2hhbmdlQWNjb3VudFYyTGFuZ3VhZ2VDb21tYW5kEhoKCGxhbmd1YWdlGAEgASgJUghsYW5ndWFnZSJQCiRDaGFuZ2VBY2NvdW50VjJBdmF0YXJJbWFnZVVybENvbW1hbmQSKAoQYXZhdGFyX2ltYWdlX3VybBgBIAEoCVIOYXZhdGFySW1hZ2VVcmwiawocQ2hhbmdlQWNjb3VudFYyQXZhdGFyQ29tbWFuZBIhCgxhdmF0YXJfaW1hZ2UYASABKAxSC2F2YXRhckltYWdlEigKEGF2YXRhcl9maWxlX3R5cGUYAiABKAlSDmF2YXRhckZpbGVUeXBlIj0KHkNoYW5nZUFjY291bnRWMkxhc3RTZWVuQ29tbWFuZBIbCglsYXN0X3NlZW4YASABKANSCGxhc3RTZWVuImwKJkNoYW5nZUFjY291bnRWMk9yZ2FuaXphdGlvblJvbGVDb21tYW5kEkIKBHJvbGUYASABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SBHJvbGUipQIKJkNoYW5nZUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDb21tYW5kEkIKBXJvbGVzGAEgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIFcm9sZXMSYgoKd3JpdGVfdHlwZRgCIAEoDjJDLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDb21tYW5kLldyaXRlVHlwZVIJd3JpdGVUeXBlIlMKCVdyaXRlVHlwZRIZChVXcml0ZVR5cGVfVU5TUEVDSUZJRUQQABIWChJXcml0ZVR5cGVfT1ZFUlJJREUQARITCg9Xcml0ZVR5cGVfUEFUQ0gQAiIYChZFbmFibGVBY2NvdW50VjJDb21tYW5kIhkKF0Rpc2FibGVBY2NvdW50VjJDb21tYW5kIhgKFkRlbGV0ZUFjY291bnRWMkNvbW1hbmQiXQoTQ3JlYXRlQVBJS2V5Q29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lEjIKBHJvbGUYAiABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZSItChdDaGFuZ2VBUElLZXlOYW1lQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIhUKE0VuYWJsZUFQSUtleUNvbW1hbmQiFgoURGlzYWJsZUFQSUtleUNvbW1hbmQi5gEKGUNyZWF0ZVNlYXJjaEZpbHRlckNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIUCgVxdWVyeRgCIAEoCVIFcXVlcnkSUQoSZmlsdGVyX3RhcmdldF90eXBlGAMgASgOMiMuYnVja2V0ZWVyLmFjY291bnQuRmlsdGVyVGFyZ2V0VHlwZVIQZmlsdGVyVGFyZ2V0VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZBIlCg5kZWZhdWx0X2ZpbHRlchgFIAEoCFINZGVmYXVsdEZpbHRlciJDCh1DaGFuZ2VTZWFyY2hGaWx0ZXJOYW1lQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJGCh5DaGFuZ2VTZWFyY2hGaWx0ZXJRdWVyeUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhQKBXF1ZXJ5GAIgASgJUgVxdWVyeSJZCiBDaGFuZ2VEZWZhdWx0U2VhcmNoRmlsdGVyQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSJQoOZGVmYXVsdF9maWx0ZXIYAiABKAhSDWRlZmF1bHRGaWx0ZXIiKwoZRGVsZXRlU2VhcmNoRmlsdGVyQ29tbWFuZBIOCgJpZBgBIAEoCVICaWRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwqtvgEKG3Byb3RvL2FjY291bnQvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvGhtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8aG3Byb3RvL2FjY291bnQvY29tbWFuZC5wcm90bxokcHJvdG8vZW52aXJvbm1lbnQvb3JnYW5pemF0aW9uLnByb3RvIjcKDEdldE1lUmVxdWVzdBInCg9vcmdhbml6YXRpb25faWQYASABKAlSDm9yZ2FuaXphdGlvbklkIkwKDUdldE1lUmVzcG9uc2USOwoHYWNjb3VudBgBIAEoCzIhLmJ1Y2tldGVlci5hY2NvdW50LkNvbnNvbGVBY2NvdW50UgdhY2NvdW50IhsKGUdldE15T3JnYW5pemF0aW9uc1JlcXVlc3QiOAogR2V0TXlPcmdhbml6YXRpb25zQnlFbWFpbFJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsImcKGkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlEkkKDW9yZ2FuaXphdGlvbnMYASADKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUg1vcmdhbml6YXRpb25zIu4DChZDcmVhdGVBY2NvdW50VjJSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQSRwoHY29tbWFuZBgCIAEoCzIpLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMkNvbW1hbmRCAhgBUgdjb21tYW5kEhQKBWVtYWlsGAMgASgJUgVlbWFpbBISCgRuYW1lGAQgASgJUgRuYW1lEigKEGF2YXRhcl9pbWFnZV91cmwYBSABKAlSDmF2YXRhckltYWdlVXJsElsKEW9yZ2FuaXphdGlvbl9yb2xlGAYgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAcgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIdCgpmaXJzdF9uYW1lGAggASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAkgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgKIAEoCVIIbGFuZ3VhZ2UiUQoXQ3JlYXRlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKgAQoWRW5hYmxlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAMgASgLMikuYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQiUQoXRW5hYmxlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKiAQoXRGlzYWJsZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSSAoHY29tbWFuZBgDIAEoCzIqLmJ1Y2tldGVlci5hY2NvdW50LkRpc2FibGVBY2NvdW50VjJDb21tYW5kQgIYAVIHY29tbWFuZCJSChhEaXNhYmxlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKgAQoWRGVsZXRlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAMgASgLMikuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQiGQoXRGVsZXRlQWNjb3VudFYyUmVzcG9uc2Ui5g8KFlVwZGF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSYQoTY2hhbmdlX25hbWVfY29tbWFuZBgDIAEoCzItLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMk5hbWVDb21tYW5kQgIYAVIRY2hhbmdlTmFtZUNvbW1hbmQSdgoZY2hhbmdlX2F2YXRhcl91cmxfY29tbWFuZBgEIAEoCzI3LmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkF2YXRhckltYWdlVXJsQ29tbWFuZEICGAFSFmNoYW5nZUF2YXRhclVybENvbW1hbmQShgEKIGNoYW5nZV9vcmdhbml6YXRpb25fcm9sZV9jb21tYW5kGAUgASgLMjkuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyT3JnYW5pemF0aW9uUm9sZUNvbW1hbmRCAhgBUh1jaGFuZ2VPcmdhbml6YXRpb25Sb2xlQ29tbWFuZBKGAQogY2hhbmdlX2Vudmlyb25tZW50X3JvbGVzX2NvbW1hbmQYBiABKAsyOS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZEICGAFSHWNoYW5nZUVudmlyb25tZW50Um9sZXNDb21tYW5kEnEKGWNoYW5nZV9maXJzdF9uYW1lX2NvbW1hbmQYByABKAsyMi5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJGaXJzdE5hbWVDb21tYW5kQgIYAVIWY2hhbmdlRmlyc3ROYW1lQ29tbWFuZBJuChhjaGFuZ2VfbGFzdF9uYW1lX2NvbW1hbmQYCCABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJMYXN0TmFtZUNvbW1hbmRCAhgBUhVjaGFuZ2VMYXN0TmFtZUNvbW1hbmQSbQoXY2hhbmdlX2xhbmd1YWdlX2NvbW1hbmQYCSABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJMYW5ndWFnZUNvbW1hbmRCAhgBUhVjaGFuZ2VMYW5ndWFnZUNvbW1hbmQSbgoYY2hhbmdlX2xhc3Rfc2Vlbl9jb21tYW5kGAogASgLMjEuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyTGFzdFNlZW5Db21tYW5kQgIYAVIVY2hhbmdlTGFzdFNlZW5Db21tYW5kEmcKFWNoYW5nZV9hdmF0YXJfY29tbWFuZBgLIAEoCzIvLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkF2YXRhckNvbW1hbmRCAhgBUhNjaGFuZ2VBdmF0YXJDb21tYW5kEjAKBG5hbWUYDCABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSRgoQYXZhdGFyX2ltYWdlX3VybBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIOYXZhdGFySW1hZ2VVcmwSbAoRb3JnYW5pemF0aW9uX3JvbGUYDiABKAsyPy5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0Lk9yZ2FuaXphdGlvblJvbGVWYWx1ZVIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgPIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSOwoKZmlyc3RfbmFtZRgQIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIJZmlyc3ROYW1lEjkKCWxhc3RfbmFtZRgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIIbGFzdE5hbWUSOAoIbGFuZ3VhZ2UYEiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSCGxhbmd1YWdlEjgKCWxhc3Rfc2VlbhgTIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlUghsYXN0U2VlbhJRCgZhdmF0YXIYFCABKAsyOS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0LkFjY291bnRWMkF2YXRhclIGYXZhdGFyEjYKCGRpc2FibGVkGBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQaXgoPQWNjb3VudFYyQXZhdGFyEiEKDGF2YXRhcl9pbWFnZRgBIAEoDFILYXZhdGFySW1hZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgCIAEoCVIOYXZhdGFyRmlsZVR5cGUaWwoVT3JnYW5pemF0aW9uUm9sZVZhbHVlEkIKBHJvbGUYASABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SBHJvbGUiUQoXVXBkYXRlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCJUChNHZXRBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkIk4KFEdldEFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiYQoiR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQiXQojR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKLBgoVTGlzdEFjY291bnRzVjJSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISJwoPb3JnYW5pemF0aW9uX2lkGAMgASgJUg5vcmdhbml6YXRpb25JZBJLCghvcmRlcl9ieRgEIAEoDjIwLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmAKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI3LmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSNgoIZGlzYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBJIChFvcmdhbml6YXRpb25fcm9sZRgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhBvcmdhbml6YXRpb25Sb2xlEkMKDmVudmlyb25tZW50X2lkGAkgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg1lbnZpcm9ubWVudElkEkYKEGVudmlyb25tZW50X3JvbGUYCiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIPZW52aXJvbm1lbnRSb2xlIokBCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIJCgVFTUFJTBABEg4KCkNSRUFURURfQVQQAhIOCgpVUERBVEVEX0FUEAMSFQoRT1JHQU5JWkFUSU9OX1JPTEUQBBIVChFFTlZJUk9OTUVOVF9DT1VOVBAFEg0KCUxBU1RfU0VFThAGEgkKBVNUQVRFEAciIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABIosBChZMaXN0QWNjb3VudHNWMlJlc3BvbnNlEjgKCGFjY291bnRzGAEgAygLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUghhY2NvdW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAgoTQ3JlYXRlQVBJS2V5UmVxdWVzdBJECgdjb21tYW5kGAEgASgLMiYuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQVBJS2V5Q29tbWFuZEICGAFSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWQSEgoEbmFtZRgEIAEoCVIEbmFtZRIyCgRyb2xlGAUgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSHgoKbWFpbnRhaW5lchgGIAEoCVIKbWFpbnRhaW5lchIgCgtkZXNjcmlwdGlvbhgHIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiSgoUQ3JlYXRlQVBJS2V5UmVzcG9uc2USMgoHYXBpX2tleRgBIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5IpwBChdDaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhoKGENoYW5nZUFQSUtleU5hbWVSZXNwb25zZSKUAQoTRW5hYmxlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQAoHY29tbWFuZBgCIAEoCzImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFgoURW5hYmxlQVBJS2V5UmVzcG9uc2UilgEKFERpc2FibGVBUElLZXlSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJBCgdjb21tYW5kGAIgASgLMicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGlzYWJsZUFQSUtleVJlc3BvbnNlIk8KEEdldEFQSUtleVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkcKEUdldEFQSUtleVJlc3BvbnNlEjIKB2FwaV9rZXkYASABKAsyGS5idWNrZXRlZXIuYWNjb3VudC5BUElLZXlSBmFwaUtleSLmBAoSTGlzdEFQSUtleXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSAoIb3JkZXJfYnkYBCABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJdCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNC5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSKQoOZW52aXJvbm1lbnRfaWQYCCABKAlCAhgBUg1lbnZpcm9ubWVudElkEicKD2Vudmlyb25tZW50X2lkcxgJIAMoCVIOZW52aXJvbm1lbnRJZHMSLAoPb3JnYW5pemF0aW9uX2lkGAogASgJQgPgQQJSDm9yZ2FuaXphdGlvbklkImYKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBFJPTEUQBBIPCgtFTlZJUk9OTUVOVBAFEgkKBVNUQVRFEAYiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIAxAEIoQBChNMaXN0QVBJS2V5c1Jlc3BvbnNlEjQKCGFwaV9rZXlzGAEgAygLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgdhcGlLZXlzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IjYKG0dldEVudmlyb25tZW50QVBJS2V5UmVxdWVzdBIXCgdhcGlfa2V5GAIgASgJUgZhcGlLZXkidAocR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZRJUChNlbnZpcm9ubWVudF9hcGlfa2V5GAEgASgLMiQuYnVja2V0ZWVyLmFjY291bnQuRW52aXJvbm1lbnRBUElLZXlSEWVudmlyb25tZW50QXBpS2V5IskBChlDcmVhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEkYKB2NvbW1hbmQYBCABKAsyLC5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJDb21tYW5kUgdjb21tYW5kIhwKGkNyZWF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlIsADChlVcGRhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEmAKE2NoYW5nZV9uYW1lX2NvbW1hbmQYBCABKAsyMC5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJOYW1lQ29tbWFuZFIRY2hhbmdlTmFtZUNvbW1hbmQSYwoUY2hhbmdlX3F1ZXJ5X2NvbW1hbmQYBSABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJRdWVyeUNvbW1hbmRSEmNoYW5nZVF1ZXJ5Q29tbWFuZBJ2Ch1jaGFuZ2VfZGVmYXVsdF9maWx0ZXJfY29tbWFuZBgGIAEoCzIzLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZURlZmF1bHRTZWFyY2hGaWx0ZXJDb21tYW5kUhpjaGFuZ2VEZWZhdWx0RmlsdGVyQ29tbWFuZCIcChpVcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLJAQoZRGVsZXRlU2VhcmNoRmlsdGVyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZBJGCgdjb21tYW5kGAQgASgLMiwuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlU2VhcmNoRmlsdGVyQ29tbWFuZFIHY29tbWFuZCIcChpEZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLoAgoTVXBkYXRlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SMgoEcm9sZRgFIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSPAoKbWFpbnRhaW5lchgHIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIKbWFpbnRhaW5lciIWChRVcGRhdGVBUElLZXlSZXNwb25zZTLOegoOQWNjb3VudFNlcnZpY2USngQKBUdldE1lEh8uYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXF1ZXN0GiAuYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXNwb25zZSLRA5JBswMKB0FjY291bnQSBkdldCBNZRodR2V0IHRoZSB1c2VyIGNvbnNvbGUgYWNjb3VudC4qFXdlYi52MS5hY2NvdW50LmdldF9tZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhQSEi92MS9hY2NvdW50L2dldF9tZRL4BAoSR2V0TXlPcmdhbml6YXRpb25zEiwuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlIoQEkkHcAwoHQWNjb3VudBIUR2V0IE15IE9yZ2FuaXphdGlvbnMaLkdldCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgZm9yIGEgc3BlY2lmaWMgdXNlci4qH3dlYi52MS5hY2NvdW50Lm15X29yZ2FuaXphdGlvbnNKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIeEhwvdjEvYWNjb3VudC9teV9vcmdhbml6YXRpb25zEpYFChlHZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsEjMuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zQnlFbWFpbFJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5HZXRNeU9yZ2FuaXphdGlvbnNSZXNwb25zZSKUBJJB4wMKB0FjY291bnQSHUdldCBNeSBPcmdhbml6YXRpb25zIEJ5IEVtYWlsGiNHZXQgYWxsIHRoZSBvcmdhbml6YXRpb25zIGJ5IGVtYWlsLiood2ViLnYxLmFjY291bnQubXlfb3JnYW5pemF0aW9uc19ieV9lbWFpbEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAicSJS92MS9hY2NvdW50L215X29yZ2FuaXphdGlvbnNfYnlfZW1haWwSugYKD0NyZWF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBY2NvdW50VjJSZXNwb25zZSLPBZJBpgUKB0FjY291bnQSBkNyZWF0ZRpcQ3JlYXRlIGFuIGFjY291bnQgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmNyZWF0ZV9hY2NvdW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2NyZWF0ZV9hY2NvdW50OgEqEs4DCg9FbmFibGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQWNjb3VudFYyUmVzcG9uc2Ui4wKSQboCCgdBY2NvdW50EgZFbmFibGUaXEVuYWJsZSBhbiBhY2NvdW50IHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC5lbmFibGVfYWNjb3VudEqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hY2NvdW50OgEqEsIGChBEaXNhYmxlQWNjb3VudFYyEiouYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFjY291bnRWMlJlcXVlc3QaKy5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQWNjb3VudFYyUmVzcG9uc2Ui1AWSQaoFCgdBY2NvdW50EgdEaXNhYmxlGl5EaXNhYmxlIGFuIGFjY291bnQgdG8gYmxvY2sgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh53ZWIudjEuYWNjb3VudC5kaXNhYmxlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCICIbL3YxL2FjY291bnQvZGlzYWJsZV9hY2NvdW50OgEqEpwGCg9VcGRhdGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQWNjb3VudFYyUmVzcG9uc2UisQWSQYgFCgdBY2NvdW50EgZVcGRhdGUaPlVwZGF0ZSBhbiBhY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC51cGRhdGVfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfIhovdjEvYWNjb3VudC91cGRhdGVfYWNjb3VudDoBKhKcBgoPRGVsZXRlQWNjb3VudFYyEikuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyUmVxdWVzdBoqLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZUFjY291bnRWMlJlc3BvbnNlIrEFkkGIBQoHQWNjb3VudBIGRGVsZXRlGj5EZWxldGUgYW4gYWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuZGVsZXRlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvZGVsZXRlX2FjY291bnQ6ASoSrAQKDEdldEFjY291bnRWMhImLmJ1Y2tldGVlci5hY2NvdW50LkdldEFjY291bnRWMlJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJSZXNwb25zZSLKA5JBpwMKB0FjY291bnQSA0dldBoPR2V0IGFuIGFjY291bnQuKhp3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hY2NvdW50Ep0FChtHZXRBY2NvdW50VjJCeUVudmlyb25tZW50SUQSNS5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXF1ZXN0GjYuYnVja2V0ZWVyLmFjY291bnQuR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2UijgSSQdwDCgdBY2NvdW50EhpHZXQgQWNjb3VudCBCeSBFbnZpcm9ubWVudBoeR2V0IGFuIGFjY291bnQgYnkgZW52aXJvbm1lbnQuKil3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudF9ieV9lbnZpcm9ubWVudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAigSJi92MS9hY2NvdW50L2dldF9hY2NvdW50X2J5X2Vudmlyb25tZW50ErYECg5MaXN0QWNjb3VudHNWMhIoLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdBopLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVzcG9uc2UizgOSQakDCgdBY2NvdW50EgRMaXN0Gg5MaXN0IGFjY291bnRzLiocd2ViLnYxLmFjY291bnQubGlzdF9hY2NvdW50c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYWNjb3VudHMSsAYKDENyZWF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBUElLZXlSZXNwb25zZSLOBZJBpQUKB0FQSSBLZXkSBkNyZWF0ZRpbQ3JlYXRlIGFuIEFQSSBrZXkgdG8gYmUgdXNlZCBvbiB0aGUgY2xpZW50IFNESy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuY3JlYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvY3JlYXRlX2FwaV9rZXk6ASoSvAYKEENoYW5nZUFQSUtleU5hbWUSKi5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBorLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVSZXNwb25zZSLOBZJBoAUKB0FQSSBLZXkSE0NoYW5nZSBBUEkgS2V5IE5hbWUaRENoYW5nZSB0aGUgQVBJIEtleSBOYW1lLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKiJ3ZWIudjEuYWNjb3VudC5jaGFuZ2VfYXBpX2tleV9uYW1lSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiQiHy92MS9hY2NvdW50L2NoYW5nZV9hcGlfa2V5X25hbWU6ASoSkwYKDEVuYWJsZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBUElLZXlSZXNwb25zZSKxBZJBiAUKB0FQSSBLZXkSBkVuYWJsZRo+RW5hYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmVuYWJsZV9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hcGlfa2V5OgEqEpoGCg1EaXNhYmxlQVBJS2V5EicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleVJlcXVlc3QaKC5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQVBJS2V5UmVzcG9uc2UitQWSQYsFCgdBUEkgS2V5EgdEaXNhYmxlGj9EaXNhYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHndlYi52MS5hY2NvdW50LmRpc2FibGVfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIgIhsvdjEvYWNjb3VudC9kaXNhYmxlX2FwaV9rZXk6ASoSowQKCUdldEFQSUtleRIjLmJ1Y2tldGVlci5hY2NvdW50LkdldEFQSUtleVJlcXVlc3QaJC5idWNrZXRlZXIuYWNjb3VudC5HZXRBUElLZXlSZXNwb25zZSLKA5JBpwMKB0FQSSBLZXkSA0dldBoPR2V0IGFuIEFQSSBLZXkuKhp3ZWIudjEuYWNjb3VudC5nZXRfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hcGlfa2V5Eq0ECgtMaXN0QVBJS2V5cxIlLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVxdWVzdBomLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVzcG9uc2UizgOSQakDCgdBUEkgS2V5EgRMaXN0Gg5MaXN0IEFQSSBLZXlzLiocd2ViLnYxLmFjY291bnQubGlzdF9hcGlfa2V5c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYXBpX2tleXMS/AQKFEdldEVudmlyb25tZW50QVBJS2V5Ei4uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXF1ZXN0Gi8uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZSKCBJJB0wMKB0FQSSBLZXkSF0dldCBFbnZpcm9ubWVudCBBUEkgS2V5GhtHZXQgYW4gZW52aXJvbm1lbnQgQVBJIEtleS4qJndlYi52MS5hY2NvdW50LmdldF9lbnZpcm9ubWVudF9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJRIjL3YxL2FjY291bnQvZ2V0X2Vudmlyb25tZW50X2FwaV9rZXkSxQYKEkNyZWF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFENyZWF0ZSBTZWFyY2ggRmlsdGVyGkRDcmVhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuY3JlYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvY3JlYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKElVwZGF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFFVwZGF0ZSBTZWFyY2ggRmlsdGVyGkRVcGRhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQudXBkYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvdXBkYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKEkRlbGV0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFERlbGV0ZSBTZWFyY2ggRmlsdGVyGkREZWxldGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuZGVsZXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvZGVsZXRlX3NlYXJjaF9maWx0ZXI6ASoSmwYKDFVwZGF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBUElLZXlSZXNwb25zZSK5BZJBkAUKB0FQSSBLZXkSDlVwZGF0ZSBBUEkgS2V5Gj5VcGRhdGUgYW4gQVBJIEtleS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQudXBkYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHzIaL3YxL2FjY291bnQvdXBkYXRlX2FwaV9rZXk6ASpCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwr7AQoeZ29vZ2xlL3Byb3RvYnVmL2R1cmF0aW9uLnByb3RvEg9nb29nbGUucHJvdG9idWYiOgoIRHVyYXRpb24SGAoHc2Vjb25kcxgBIAEoA1IHc2Vjb25kcxIUCgVuYW5vcxgCIAEoBVIFbmFub3NCgwEKE2NvbS5nb29nbGUucHJvdG9idWZCDUR1cmF0aW9uUHJvdG9QAVoxZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZHVyYXRpb25wYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCsY0Ch5wcm90by9ldmVudC9jbGllbnQvZXZlbnQucHJvdG8SFmJ1Y2tldGVlci5ldmVudC5jbGllbnQaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi9kdXJhdGlvbi5wcm90bxoecHJvdG8vZmVhdHVyZS9ldmFsdWF0aW9uLnByb3RvGhpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvInAKBUV2ZW50Eg4KAmlkGAEgASgJUgJpZBIqCgVldmVudBgCIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBWV2ZW50EiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIpIECg9FdmFsdWF0aW9uRXZlbnQSHAoJdGltZXN0YW1wGAEgASgDUgl0aW1lc3RhbXASHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SFwoHdXNlcl9pZBgEIAEoCVIGdXNlcklkEiEKDHZhcmlhdGlvbl9pZBgFIAEoCVILdmFyaWF0aW9uSWQSKAoEdXNlchgGIAEoCzIULmJ1Y2tldGVlci51c2VyLlVzZXJSBHVzZXISMQoGcmVhc29uGAcgASgLMhkuYnVja2V0ZWVyLmZlYXR1cmUuUmVhc29uUgZyZWFzb24SEAoDdGFnGAggASgJUgN0YWcSPQoJc291cmNlX2lkGAkgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YCiABKAlSCnNka1ZlcnNpb24SUQoIbWV0YWRhdGEYCyADKAsyNS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkV2YWx1YXRpb25FdmVudC5NZXRhZGF0YUVudHJ5UghtZXRhZGF0YRo7Cg1NZXRhZGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi3AMKCUdvYWxFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIXCgdnb2FsX2lkGAIgASgJUgZnb2FsSWQSFwoHdXNlcl9pZBgDIAEoCVIGdXNlcklkEhQKBXZhbHVlGAQgASgBUgV2YWx1ZRIoCgR1c2VyGAUgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchJDCgtldmFsdWF0aW9ucxgGIAMoCzIdLmJ1Y2tldGVlci5mZWF0dXJlLkV2YWx1YXRpb25CAhgBUgtldmFsdWF0aW9ucxIQCgN0YWcYByABKAlSA3RhZxI9Cglzb3VyY2VfaWQYCCABKA4yIC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlNvdXJjZUlkUghzb3VyY2VJZBIfCgtzZGtfdmVyc2lvbhgJIAEoCVIKc2RrVmVyc2lvbhJLCghtZXRhZGF0YRgKIAMoCzIvLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR29hbEV2ZW50Lk1ldGFkYXRhRW50cnlSCG1ldGFkYXRhGjsKDU1ldGFkYXRhRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLFAgoMTWV0cmljc0V2ZW50EhwKCXRpbWVzdGFtcBgBIAEoA1IJdGltZXN0YW1wEioKBWV2ZW50GAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIFZXZlbnQSPQoJc291cmNlX2lkGAMgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBCABKAlSCnNka1ZlcnNpb24STgoIbWV0YWRhdGEYBSADKAsyMi5idWNrZXRlZXIuZXZlbnQuY2xpZW50Lk1ldHJpY3NFdmVudC5NZXRhZGF0YUVudHJ5UghtZXRhZGF0YRo7Cg1NZXRhZGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi9gEKIEdldEV2YWx1YXRpb25MYXRlbmN5TWV0cmljc0V2ZW50ElwKBmxhYmVscxgBIAMoCzJELmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR2V0RXZhbHVhdGlvbkxhdGVuY3lNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxI1CghkdXJhdGlvbhgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvblIIZHVyYXRpb24aOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4AToCGAEi1gEKHUdldEV2YWx1YXRpb25TaXplTWV0cmljc0V2ZW50ElkKBmxhYmVscxgBIAMoCzJBLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuR2V0RXZhbHVhdGlvblNpemVNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxIbCglzaXplX2J5dGUYAiABKAVSCHNpemVCeXRlGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAE6AhgBIrkCChNMYXRlbmN5TWV0cmljc0V2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkEk8KBmxhYmVscxgCIAMoCzI3LmJ1Y2tldGVlci5ldmVudC5jbGllbnQuTGF0ZW5jeU1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzEjkKCGR1cmF0aW9uGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQgIYAVIIZHVyYXRpb24SJQoObGF0ZW5jeV9zZWNvbmQYBCABKAFSDWxhdGVuY3lTZWNvbmQaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLuAQoQU2l6ZU1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJMCgZsYWJlbHMYAiADKAsyNC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlNpemVNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxIbCglzaXplX2J5dGUYAyABKAVSCHNpemVCeXRlGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEiNQodVGltZW91dEVycm9yQ291bnRNZXRyaWNzRXZlbnQSEAoDdGFnGAEgASgJUgN0YWc6AhgBIjYKHkludGVybmFsRXJyb3JDb3VudE1ldHJpY3NFdmVudBIQCgN0YWcYASABKAlSA3RhZzoCGAEi8QEKIFJlZGlyZWN0aW9uUmVxdWVzdEV4Y2VwdGlvbkV2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkElwKBmxhYmVscxgCIAMoCzJELmJ1Y2tldGVlci5ldmVudC5jbGllbnQuUmVkaXJlY3Rpb25SZXF1ZXN0RXhjZXB0aW9uRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIucBChtCYWRSZXF1ZXN0RXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVwoGbGFiZWxzGAIgAygLMj8uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5CYWRSZXF1ZXN0RXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIusBCh1VbmF1dGhvcml6ZWRFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJZCgZsYWJlbHMYAiADKAsyQS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlVuYXV0aG9yaXplZEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLlAQoaRm9yYmlkZGVuRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVgoGbGFiZWxzGAIgAygLMj4uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Gb3JiaWRkZW5FcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4wEKGU5vdEZvdW5kRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVQoGbGFiZWxzGAIgAygLMj0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Ob3RGb3VuZEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLrAQodUGF5bG9hZFRvb0xhcmdlRXhjZXB0aW9uRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSWQoGbGFiZWxzGAIgAygLMkEuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5QYXlsb2FkVG9vTGFyZ2VFeGNlcHRpb25FdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi+QEKJENsaWVudENsb3NlZFJlcXVlc3RFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJgCgZsYWJlbHMYAiADKAsySC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkNsaWVudENsb3NlZFJlcXVlc3RFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi7wEKH0ludGVybmFsU2VydmVyRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSWwoGbGFiZWxzGAIgAygLMkMuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5JbnRlcm5hbFNlcnZlckVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASL3AQojU2VydmljZVVuYXZhaWxhYmxlRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSXwoGbGFiZWxzGAIgAygLMkcuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5TZXJ2aWNlVW5hdmFpbGFibGVFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4QEKGFRpbWVvdXRFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJUCgZsYWJlbHMYAiADKAsyPC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LlRpbWVvdXRFcnJvck1ldHJpY3NFdmVudC5MYWJlbHNFbnRyeVIGbGFiZWxzGjkKC0xhYmVsc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi4wEKGUludGVybmFsRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVQoGbGFiZWxzGAIgAygLMj0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5JbnRlcm5hbEVycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLhAQoYTmV0d29ya0Vycm9yTWV0cmljc0V2ZW50EjQKBmFwaV9pZBgBIAEoDjIdLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuQXBpSWRSBWFwaUlkElQKBmxhYmVscxgCIAMoCzI8LmJ1Y2tldGVlci5ldmVudC5jbGllbnQuTmV0d29ya0Vycm9yTWV0cmljc0V2ZW50LkxhYmVsc0VudHJ5UgZsYWJlbHMaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLpAQocSW50ZXJuYWxTZGtFcnJvck1ldHJpY3NFdmVudBI0CgZhcGlfaWQYASABKA4yHS5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkFwaUlkUgVhcGlJZBJYCgZsYWJlbHMYAiADKAsyQC5idWNrZXRlZXIuZXZlbnQuY2xpZW50LkludGVybmFsU2RrRXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIuEBChhVbmtub3duRXJyb3JNZXRyaWNzRXZlbnQSNAoGYXBpX2lkGAEgASgOMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5BcGlJZFIFYXBpSWQSVAoGbGFiZWxzGAIgAygLMjwuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Vbmtub3duRXJyb3JNZXRyaWNzRXZlbnQuTGFiZWxzRW50cnlSBmxhYmVscxo5CgtMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIsUBCghPcHNFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJwoPZmVhdHVyZV92ZXJzaW9uGAMgASgFUg5mZWF0dXJlVmVyc2lvbhIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkEhcKB2dvYWxfaWQYBSABKAlSBmdvYWxJZBIXCgd1c2VyX2lkGAYgASgJUgZ1c2VySWQiXAoNVXNlckdvYWxFdmVudBIcCgl0aW1lc3RhbXAYASABKANSCXRpbWVzdGFtcBIXCgdnb2FsX2lkGAIgASgJUgZnb2FsSWQSFAoFdmFsdWUYAyABKAFSBXZhbHVlKnAKCFNvdXJjZUlkEgsKB1VOS05PV04QABILCgdBTkRST0lEEAESBwoDSU9TEAISCwoDV0VCEAMaAggBEg0KCUdPX1NFUlZFUhAFEg8KC05PREVfU0VSVkVSEAYSDgoKSkFWQVNDUklQVBAHIgQIBBAEKpsBCgVBcGlJZBIPCgtVTktOT1dOX0FQSRAAEhIKDkdFVF9FVkFMVUFUSU9OEAESEwoPR0VUX0VWQUxVQVRJT05TEAISEwoPUkVHSVNURVJfRVZFTlRTEAMSFQoRR0VUX0ZFQVRVUkVfRkxBR1MQBBIVChFHRVRfU0VHTUVOVF9VU0VSUxAFEhUKEVNES19HRVRfVkFSSUFUSU9OEGRCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V2ZW50L2NsaWVudGIGcHJvdG8zCtOBAQobcHJvdG8vZ2F0ZXdheS9zZXJ2aWNlLnByb3RvEhFidWNrZXRlZXIuZ2F0ZXdheRocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhVwcm90by91c2VyL3VzZXIucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvGhtwcm90by9mZWF0dXJlL3NlcnZpY2UucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGhpwcm90by9mZWF0dXJlL3RhcmdldC5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGhVwcm90by9wdXNoL3B1c2gucHJvdG8aGHByb3RvL3B1c2gvc2VydmljZS5wcm90bxobcHJvdG8vYWNjb3VudC9zZXJ2aWNlLnByb3RvGhtwcm90by9hY2NvdW50L2FjY291bnQucHJvdG8aHnByb3RvL2V2ZW50L2NsaWVudC9ldmVudC5wcm90byINCgtQaW5nUmVxdWVzdCIiCgxQaW5nUmVzcG9uc2USEgoEdGltZRgBIAEoA1IEdGltZSLXAQoWR2V0RmVhdHVyZUZsYWdzUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoChBmZWF0dXJlX2ZsYWdzX2lkGAIgASgJUg5mZWF0dXJlRmxhZ3NJZBIhCgxyZXF1ZXN0ZWRfYXQYAyABKANSC3JlcXVlc3RlZEF0Ej0KCXNvdXJjZV9pZBgEIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkEh8KC3Nka192ZXJzaW9uGAUgASgJUgpzZGtWZXJzaW9uIvwBChdHZXRGZWF0dXJlRmxhZ3NSZXNwb25zZRIoChBmZWF0dXJlX2ZsYWdzX2lkGAEgASgJUg5mZWF0dXJlRmxhZ3NJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEjkKGWFyY2hpdmVkX2ZlYXR1cmVfZmxhZ19pZHMYAyADKAlSFmFyY2hpdmVkRmVhdHVyZUZsYWdJZHMSIQoMcmVxdWVzdGVkX2F0GAQgASgDUgtyZXF1ZXN0ZWRBdBIhCgxmb3JjZV91cGRhdGUYBSABKAhSC2ZvcmNlVXBkYXRlIrwBChZHZXRTZWdtZW50VXNlcnNSZXF1ZXN0Eh8KC3NlZ21lbnRfaWRzGAEgAygJUgpzZWdtZW50SWRzEiEKDHJlcXVlc3RlZF9hdBgCIAEoA1ILcmVxdWVzdGVkQXQSPQoJc291cmNlX2lkGAMgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBCABKAlSCnNka1ZlcnNpb24i1QEKF0dldFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEkQKDXNlZ21lbnRfdXNlcnMYASADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlcnNSDHNlZ21lbnRVc2VycxIuChNkZWxldGVkX3NlZ21lbnRfaWRzGAIgAygJUhFkZWxldGVkU2VnbWVudElkcxIhCgxyZXF1ZXN0ZWRfYXQYAyABKANSC3JlcXVlc3RlZEF0EiEKDGZvcmNlX3VwZGF0ZRgEIAEoCFILZm9yY2VVcGRhdGUi+gMKFUdldEV2YWx1YXRpb25zUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoCgR1c2VyGAIgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIuChN1c2VyX2V2YWx1YXRpb25zX2lkGAMgASgJUhF1c2VyRXZhbHVhdGlvbnNJZBIhCgpmZWF0dXJlX2lkGAQgASgJQgIYAVIJZmVhdHVyZUlkEj0KCXNvdXJjZV9pZBgFIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkEnwKGXVzZXJfZXZhbHVhdGlvbl9jb25kaXRpb24YBiABKAsyQC5idWNrZXRlZXIuZ2F0ZXdheS5HZXRFdmFsdWF0aW9uc1JlcXVlc3QuVXNlckV2YWx1YXRpb25Db25kaXRpb25SF3VzZXJFdmFsdWF0aW9uQ29uZGl0aW9uEh8KC3Nka192ZXJzaW9uGAcgASgJUgpzZGtWZXJzaW9uGnQKF1VzZXJFdmFsdWF0aW9uQ29uZGl0aW9uEiEKDGV2YWx1YXRlZF9hdBgBIAEoA1ILZXZhbHVhdGVkQXQSNgoXdXNlcl9hdHRyaWJ1dGVzX3VwZGF0ZWQYAiABKAhSFXVzZXJBdHRyaWJ1dGVzVXBkYXRlZCLOAQoWR2V0RXZhbHVhdGlvbnNSZXNwb25zZRI+CgVzdGF0ZRgBIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLlVzZXJFdmFsdWF0aW9ucy5TdGF0ZVIFc3RhdGUSRAoLZXZhbHVhdGlvbnMYAiABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Vc2VyRXZhbHVhdGlvbnNSC2V2YWx1YXRpb25zEi4KE3VzZXJfZXZhbHVhdGlvbnNfaWQYAyABKAlSEXVzZXJFdmFsdWF0aW9uc0lkItEBChRHZXRFdmFsdWF0aW9uUmVxdWVzdBIQCgN0YWcYASABKAlSA3RhZxIoCgR1c2VyGAIgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIdCgpmZWF0dXJlX2lkGAMgASgJUglmZWF0dXJlSWQSPQoJc291cmNlX2lkGAQgASgOMiAuYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5Tb3VyY2VJZFIIc291cmNlSWQSHwoLc2RrX3ZlcnNpb24YBSABKAlSCnNka1ZlcnNpb24iVgoVR2V0RXZhbHVhdGlvblJlc3BvbnNlEj0KCmV2YWx1YXRpb24YASABKAsyHS5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0aW9uUgpldmFsdWF0aW9uIq4BChVSZWdpc3RlckV2ZW50c1JlcXVlc3QSNQoGZXZlbnRzGAEgAygLMh0uYnVja2V0ZWVyLmV2ZW50LmNsaWVudC5FdmVudFIGZXZlbnRzEh8KC3Nka192ZXJzaW9uGAIgASgJUgpzZGtWZXJzaW9uEj0KCXNvdXJjZV9pZBgDIAEoDjIgLmJ1Y2tldGVlci5ldmVudC5jbGllbnQuU291cmNlSWRSCHNvdXJjZUlkIpQCChZSZWdpc3RlckV2ZW50c1Jlc3BvbnNlEk0KBmVycm9ycxgBIAMoCzI1LmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVzcG9uc2UuRXJyb3JzRW50cnlSBmVycm9ycxo/CgVFcnJvchIcCglyZXRyaWFibGUYASABKAhSCXJldHJpYWJsZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlGmoKC0Vycm9yc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkUKBXZhbHVlGAIgASgLMi8uYnVja2V0ZWVyLmdhdGV3YXkuUmVnaXN0ZXJFdmVudHNSZXNwb25zZS5FcnJvclIFdmFsdWU6AjgBIpwBCgxUcmFja1JlcXVlc3QSFgoGYXBpa2V5GAEgASgJUgZhcGlrZXkSFgoGdXNlcmlkGAIgASgJUgZ1c2VyaWQSFgoGZ29hbGlkGAMgASgJUgZnb2FsaWQSEAoDdGFnGAQgASgJUgN0YWcSHAoJdGltZXN0YW1wGAUgASgDUgl0aW1lc3RhbXASFAoFdmFsdWUYBiABKAFSBXZhbHVlIg8KDVRyYWNrUmVzcG9uc2Ui3QIKFENyZWF0ZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJPCg52YXJpYXRpb25fdHlwZRgEIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRI8Cgp2YXJpYXRpb25zGAUgAygLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgp2YXJpYXRpb25zEhIKBHRhZ3MYBiADKAlSBHRhZ3MSLAoSb25fdmFyaWF0aW9uX2luZGV4GAcgASgFUhBvblZhcmlhdGlvbkluZGV4Ei4KE29mZl92YXJpYXRpb25faW5kZXgYCCABKAVSEW9mZlZhcmlhdGlvbkluZGV4Ik0KFUNyZWF0ZUZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSIjChFHZXRGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQiSgoSR2V0RmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIvUBChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYAyABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZlYXR1cmVzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24iTgoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcyKoBQoUVXBkYXRlRmVhdHVyZVJlcXVlc3QSGAoHY29tbWVudBgBIAEoCVIHY29tbWVudBIOCgJpZBgCIAEoCVICaWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SEgoEdGFncxgFIAMoCVIEdGFncxI0CgdlbmFibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIHZW5hYmxlZBI2CghhcmNoaXZlZBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEjwKCnZhcmlhdGlvbnMYCCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSRQoNcHJlcmVxdWlzaXRlcxgJIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIzCgd0YXJnZXRzGAogAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGAsgAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgMIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSQQoNb2ZmX3ZhcmlhdGlvbhgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIMb2ZmVmFyaWF0aW9uIk0KFVVwZGF0ZUZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSKQAgoRTGlzdFB1c2hlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJECghvcmRlcl9ieRgDIAEoDjIpLmJ1Y2tldGVlci5wdXNoLkxpc3RQdXNoZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSWQoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjAuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkInsKEkxpc3RQdXNoZXNSZXNwb25zZRIsCgZwdXNoZXMYASADKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgZwdXNoZXMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiawoRQ3JlYXRlUHVzaFJlcXVlc3QSEgoEdGFncxgBIAMoCVIEdGFncxISCgRuYW1lGAIgASgJUgRuYW1lEi4KE2ZjbV9zZXJ2aWNlX2FjY291bnQYAyABKAxSEWZjbVNlcnZpY2VBY2NvdW50Ij4KEkNyZWF0ZVB1c2hSZXNwb25zZRIoCgRwdXNoGAEgASgLMhQuYnVja2V0ZWVyLnB1c2guUHVzaFIEcHVzaCIgCg5HZXRQdXNoUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQiOwoPR2V0UHVzaFJlc3BvbnNlEigKBHB1c2gYASABKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgRwdXNoIoACChFVcGRhdGVQdXNoUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSEgoEdGFncxgCIAMoCVIEdGFncxIwCgRuYW1lGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEpQBCgdkZWxldGVkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJekkFbKgdkZWxldGVkMlBpZiB0cnVlLCB0aGUgcHVzaCBub3RpZmljYXRpb24gd2lsbCBiZSBkZWxldGVkIGFuZCBvdGhlciBmaWVsZHMgd2lsbCBiZSBpZ25vcmVkLlIHZGVsZXRlZCI+ChJVcGRhdGVQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2gipQMKFkNyZWF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSJwoPb3JnYW5pemF0aW9uX2lkGAQgASgJUg5vcmdhbml6YXRpb25JZBJbChFvcmdhbml6YXRpb25fcm9sZRgFIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgGIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSHQoKZmlyc3RfbmFtZRgHIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgIIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCSABKAlSCGxhbmd1YWdlIlEKF0NyZWF0ZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiiQgKFlVwZGF0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRJGChBhdmF0YXJfaW1hZ2VfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg5hdmF0YXJJbWFnZVVybBJsChFvcmdhbml6YXRpb25fcm9sZRgFIAEoCzI/LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuT3JnYW5pemF0aW9uUm9sZVZhbHVlUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxI7CgpmaXJzdF9uYW1lGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUglmaXJzdE5hbWUSOQoJbGFzdF9uYW1lGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUghsYXN0TmFtZRI4CghsYW5ndWFnZRgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIIbGFuZ3VhZ2USOAoJbGFzdF9zZWVuGAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWVSCGxhc3RTZWVuElEKBmF2YXRhchgLIAEoCzI5LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuQWNjb3VudFYyQXZhdGFyUgZhdmF0YXISoAEKCGRpc2FibGVkGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJokkFlKghkaXNhYmxlZDJZaWYgZGlzYWJsZWQgaXMgdHJ1ZSwgdGhlIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZC4gSWYgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgZW5hYmxlZC5SCGRpc2FibGVkEooBCgdkZWxldGVkGA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJUkkFRKgdkZWxldGVkMkZpZiB0cnVlLCB0aGUgYWNjb3VudCB3aWxsIGJlIGRlbGV0ZWQgYW5kIG90aGVyIGZpZWxkcyB3aWxsIGJlIGlnbm9yZWQuUgdkZWxldGVkIlEKF1VwZGF0ZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiVAoTR2V0QWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZCJOChRHZXRBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50ImEKIkdldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkIl0KI0dldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiNwoMR2V0TWVSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQiTAoNR2V0TWVSZXNwb25zZRI7CgdhY2NvdW50GAEgASgLMiEuYnVja2V0ZWVyLmFjY291bnQuQ29uc29sZUFjY291bnRSB2FjY291bnQi2gQKFUxpc3RBY2NvdW50c1YyUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEicKD29yZ2FuaXphdGlvbl9pZBgDIAEoCVIOb3JnYW5pemF0aW9uSWQSSwoIb3JkZXJfYnkYBCABKA4yMC5idWNrZXRlZXIuYWNjb3VudC5MaXN0QWNjb3VudHNWMlJlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJgCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNy5idWNrZXRlZXIuYWNjb3VudC5MaXN0QWNjb3VudHNWMlJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSSAoRb3JnYW5pemF0aW9uX3JvbGUYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIQb3JnYW5pemF0aW9uUm9sZRJDCg5lbnZpcm9ubWVudF9pZBgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVINZW52aXJvbm1lbnRJZBJGChBlbnZpcm9ubWVudF9yb2xlGAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSD2Vudmlyb25tZW50Um9sZSKLAQoWTGlzdEFjY291bnRzVjJSZXNwb25zZRI4CghhY2NvdW50cxgBIAMoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIIYWNjb3VudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQy6zcKB0dhdGV3YXkS9AIKDkdldEV2YWx1YXRpb25zEiguYnVja2V0ZWVyLmdhdGV3YXkuR2V0RXZhbHVhdGlvbnNSZXF1ZXN0GikuYnVja2V0ZWVyLmdhdGV3YXkuR2V0RXZhbHVhdGlvbnNSZXNwb25zZSKMApJB7QEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSD0dldCBFdmFsdWF0aW9ucxphR2V0cyBhbGwgdGhlIGV2YWx1YXRpb25zIGZvciBhIHNwZWNpZmljIHVzZXIuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYENMSUVOVGAgQVBJIEtleSByb2xlLiobYXBpLmdhdGV3YXkuZ2V0X2V2YWx1YXRpb25zckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhUiEC9nZXRfZXZhbHVhdGlvbnM6ASoS7gIKDUdldEV2YWx1YXRpb24SJy5idWNrZXRlZXIuZ2F0ZXdheS5HZXRFdmFsdWF0aW9uUmVxdWVzdBooLmJ1Y2tldGVlci5nYXRld2F5LkdldEV2YWx1YXRpb25SZXNwb25zZSKJApJB6wEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSDkdldCBFdmFsdWF0aW9uGmFHZXRzIGEgc2luZ2xlIGV2YWx1YXRpb24gZm9yIGEgc3BlY2lmaWMgdXNlci4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgQ0xJRU5UYCBBUEkgS2V5IHJvbGUuKhphcGkuZ2F0ZXdheS5nZXRfZXZhbHVhdGlvbnJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIUIg8vZ2V0X2V2YWx1YXRpb246ASoS+gIKD0dldEZlYXR1cmVGbGFncxIpLmJ1Y2tldGVlci5nYXRld2F5LkdldEZlYXR1cmVGbGFnc1JlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRGZWF0dXJlRmxhZ3NSZXNwb25zZSKPApJB7gEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSEUdldCBGZWF0dXJlIEZsYWdzGl5HZXRzIGFsbCB0aGUgZmVhdHVyZSBmbGFnIGluIGFuIGVudmlyb25tZW50LiBUbyBjYWxsIHRoaXMgQVBJLCBpdCBuZWVkcyBgU0VSVkVSYCBBUEkgS2V5IHJvbGUuKh1hcGkuZ2F0ZXdheS5nZXRfZmVhdHVyZV9mbGFnc3JCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIXIhIvZ2V0X2ZlYXR1cmVfZmxhZ3M6ASoS+wIKD0dldFNlZ21lbnRVc2VycxIpLmJ1Y2tldGVlci5nYXRld2F5LkdldFNlZ21lbnRVc2Vyc1JlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRTZWdtZW50VXNlcnNSZXNwb25zZSKQApJB7wEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSEUdldCBTZWdtZW50IFVzZXJzGl9HZXRzIGFsbCB0aGUgc2VnbWVudCB1c2VycyBpbiBhbiBlbnZpcm9ubWVudC4gVG8gY2FsbCB0aGlzIEFQSSwgaXQgbmVlZHMgYFNFUlZFUmAgQVBJIEtleSByb2xlLiodYXBpLmdhdGV3YXkuZ2V0X3NlZ21lbnRfdXNlcnNyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCFyISL2dldF9zZWdtZW50X3VzZXJzOgEqEvkCCg5SZWdpc3RlckV2ZW50cxIoLmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVxdWVzdBopLmJ1Y2tldGVlci5nYXRld2F5LlJlZ2lzdGVyRXZlbnRzUmVzcG9uc2UikQKSQfIBChZDbGllbnQgYW5kIFNlcnZlciBTREtzEg9SZWdpc3RlciBFdmVudHMaZlRoaXMgQVBJIGlzIGZvciByZXBvcnRpbmcgR29hbCBldmVudHMuIFRvIGNhbGwgdGhpcyBBUEksIGl0IG5lZWRzIGEgYENMSUVOVGAgb3IgYFNFUlZFUmAgQVBJIEtleSByb2xlLiobYXBpLmdhdGV3YXkucmVnaXN0ZXJfZXZlbnRzckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhUiEC9yZWdpc3Rlcl9ldmVudHM6ASoSjwIKBVRyYWNrEh8uYnVja2V0ZWVyLmdhdGV3YXkuVHJhY2tSZXF1ZXN0GiAuYnVja2V0ZWVyLmdhdGV3YXkuVHJhY2tSZXNwb25zZSLCAZJBsAEKFkNsaWVudCBhbmQgU2VydmVyIFNES3MSBVRyYWNrGnxUaGlzIEFQSSBpcyBhbiBpbnRlZ3JhdGlvbiBmb3IgR29vZ2xlIFRhYiBNYW5hZ2VyIHRvIHJlcG9ydCBHb2FsIGV2ZW50cy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgQ0xJRU5UYCBBUEkgS2V5IHJvbGUuKhFhcGkuZ2F0ZXdheS50cmFja4LT5JMCCBIGL3RyYWNrEtUCCg1DcmVhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmdhdGV3YXkuQ3JlYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVGZWF0dXJlUmVzcG9uc2Ui8AGSQdUBCg1GZWF0dXJlIEZsYWdzEgZDcmVhdGUaWENyZWF0ZSBhIG5ldyBGZWF0dXJlIEZsYWcuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHmFwaS5nYXRld2F5LnYxLmZlYXR1cmVzLmNyZWF0ZXJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIRIgwvdjEvZmVhdHVyZXM6ASoStQIKCkdldEZlYXR1cmUSJC5idWNrZXRlZXIuZ2F0ZXdheS5HZXRGZWF0dXJlUmVxdWVzdBolLmJ1Y2tldGVlci5nYXRld2F5LkdldEZlYXR1cmVSZXNwb25zZSLZAZJBvAEKDUZlYXR1cmUgRmxhZ3MSA0dldBpFR2V0IGEgRmVhdHVyZSBGbGFnLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhthcGkuZ2F0ZXdheS52MS5mZWF0dXJlcy5nZXRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCExIRL3YxL2ZlYXR1cmVzL3tpZH0SuAIKDExpc3RGZWF0dXJlcxImLmJ1Y2tldGVlci5nYXRld2F5Lkxpc3RGZWF0dXJlc1JlcXVlc3QaJy5idWNrZXRlZXIuZ2F0ZXdheS5MaXN0RmVhdHVyZXNSZXNwb25zZSLWAZJBvgEKDUZlYXR1cmUgRmxhZ3MSBExpc3QaRUxpc3QgRmVhdHVyZSBGbGFncy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiocYXBpLmdhdGV3YXkudjEuZmVhdHVyZXMubGlzdHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIOEgwvdjEvZmVhdHVyZXMS1gIKDVVwZGF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5nYXRld2F5LlVwZGF0ZUZlYXR1cmVSZXNwb25zZSLxAZJB0QEKDUZlYXR1cmUgRmxhZ3MSBlVwZGF0ZRpUVXBkYXRlIGEgRmVhdHVyZSBGbGFnLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKh5hcGkuZ2F0ZXdheS52MS5mZWF0dXJlcy51cGRhdGVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCFjIRL3YxL2ZlYXR1cmVzL3tpZH06ASoS7gEKBFBpbmcSHi5idWNrZXRlZXIuZ2F0ZXdheS5QaW5nUmVxdWVzdBofLmJ1Y2tldGVlci5nYXRld2F5LlBpbmdSZXNwb25zZSKkAZJBkwEKB1V0aWxpdHkSBFBpbmcaKlBpbmcgdGhlIHNlcnZlciB0byBjaGVjayBpdHMgYXZhaWxhYmlsaXR5LioQYXBpLmdhdGV3YXkucGluZ2IAckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAgcSBS9waW5nEqACCgpMaXN0UHVzaGVzEiQuYnVja2V0ZWVyLmdhdGV3YXkuTGlzdFB1c2hlc1JlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5MaXN0UHVzaGVzUmVzcG9uc2UixAGSQa4BCgZQdXNoZXMSBExpc3QaPkxpc3QgcHVzaGVzLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhphcGkuZ2F0ZXdheS52MS5wdXNoZXMubGlzdHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIMEgovdjEvcHVzaGVzEvMCCgpDcmVhdGVQdXNoEiQuYnVja2V0ZWVyLmdhdGV3YXkuQ3JlYXRlUHVzaFJlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVQdXNoUmVzcG9uc2UilwKSQYACCgZQdXNoZXMSBkNyZWF0ZRqLAUNyZWF0ZSBhIG5ldyBQdXNoIG5vdGlmaWNhdGlvbiB0aHJvdWdoIEdvb2dsZSBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKEZDTSkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHGFwaS5nYXRld2F5LnYxLnB1c2hlcy5jcmVhdGVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCDSIIL3YxL3B1c2g6ASoSpAIKB0dldFB1c2gSIS5idWNrZXRlZXIuZ2F0ZXdheS5HZXRQdXNoUmVxdWVzdBoiLmJ1Y2tldGVlci5nYXRld2F5LkdldFB1c2hSZXNwb25zZSLRAZJBuAEKBlB1c2hlcxIDR2V0GkpHZXQgYSBQdXNoIG5vdGlmaWNhdGlvbi4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLioZYXBpLmdhdGV3YXkudjEucHVzaGVzLmdldHJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIPEg0vdjEvcHVzaC97aWR9EsACCgpVcGRhdGVQdXNoEiQuYnVja2V0ZWVyLmdhdGV3YXkuVXBkYXRlUHVzaFJlcXVlc3QaJS5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVQdXNoUmVzcG9uc2Ui5AGSQcgBCgZQdXNoZXMSBlVwZGF0ZRpUVXBkYXRlIGEgUHVzaCBub3RpZmljYXRpb24uIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKhxhcGkuZ2F0ZXdheS52MS5wdXNoZXMudXBkYXRlckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhIyDS92MS9wdXNoL3tpZH06ASoSzgIKD0NyZWF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5nYXRld2F5LkNyZWF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuZ2F0ZXdheS5DcmVhdGVBY2NvdW50VjJSZXNwb25zZSLjAZJByQEKB0FjY291bnQSBkNyZWF0ZRpTQ3JlYXRlIGEgbmV3IEFjY291bnQuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCBvciBgQURNSU5gIEFQSSBLZXkgcm9sZS4qHWFwaS5nYXRld2F5LnYxLmFjY291bnQuY3JlYXRlckIKQAoNYXV0aG9yaXphdGlvbhIrVGhlIEFQSSBLZXkgZ2VuZXJhdGVkIG9uIHRoZSBBZG1pbiBDb25zb2xlLhgBKAGC0+STAhAiCy92MS9hY2NvdW50OgEqEuUCCg9VcGRhdGVBY2NvdW50VjISKS5idWNrZXRlZXIuZ2F0ZXdheS5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmdhdGV3YXkuVXBkYXRlQWNjb3VudFYyUmVzcG9uc2Ui+gGSQcYBCgdBY2NvdW50EgZVcGRhdGUaUFVwZGF0ZSBhbiBBY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgb3IgYEFETUlOYCBBUEkgS2V5IHJvbGUuKh1hcGkuZ2F0ZXdheS52MS5hY2NvdW50LnVwZGF0ZXJCCkAKDWF1dGhvcml6YXRpb24SK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4YASgBgtPkkwIqMiUvdjEvYWNjb3VudC97b3JnYW5pemF0aW9uX2lkfS97ZW1haWx9OgEqEtcCCgxHZXRBY2NvdW50VjISJi5idWNrZXRlZXIuZ2F0ZXdheS5HZXRBY2NvdW50VjJSZXF1ZXN0GicuYnVja2V0ZWVyLmdhdGV3YXkuR2V0QWNjb3VudFYyUmVzcG9uc2Ui9QGSQcQBCgdBY2NvdW50EhZHZXQgYnkgT3JnYW5pemF0aW9uIElEGkFHZXQgYW4gQWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLioaYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCJxIlL3YxL2FjY291bnQve29yZ2FuaXphdGlvbl9pZH0ve2VtYWlsfRLBAwobR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEEjUuYnVja2V0ZWVyLmdhdGV3YXkuR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVxdWVzdBo2LmJ1Y2tldGVlci5nYXRld2F5LkdldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlc3BvbnNlIrICkkHnAQoHQWNjb3VudBIVR2V0IGJ5IEVudmlyb25tZW50IElEGlNHZXQgYW4gQWNjb3VudCBieSBFbnZpcm9ubWVudCBJRC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiosYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRfYnlfZW52aXJvbm1lbnRfaWRyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCQRI/L3YxL2FjY291bnQvZ2V0LWFjY291bnQtYnktZW52aXJvbm1lbnQve2Vudmlyb25tZW50X2lkfS97ZW1haWx9EsYCCgVHZXRNZRIfLmJ1Y2tldGVlci5nYXRld2F5LkdldE1lUmVxdWVzdBogLmJ1Y2tldGVlci5nYXRld2F5LkdldE1lUmVzcG9uc2Ui+QGSQc0BCgdBY2NvdW50EhNHZXQgU2VydmljZSBBY2NvdW50GkpHZXQgdGhlIGN1cnJlbnQgQWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYSBgUkVBRGAgQVBJIEtleSByb2xlLiodYXBpLmdhdGV3YXkudjEuYWNjb3VudC5nZXRfbWVyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCIhIgL3YxL2FjY291bnQvbWUve29yZ2FuaXphdGlvbl9pZH0StgIKDkxpc3RBY2NvdW50c1YyEiguYnVja2V0ZWVyLmdhdGV3YXkuTGlzdEFjY291bnRzVjJSZXF1ZXN0GikuYnVja2V0ZWVyLmdhdGV3YXkuTGlzdEFjY291bnRzVjJSZXNwb25zZSLOAZJBtgEKB0FjY291bnQSBExpc3QaREdldCBsaXN0IEFjY291bnRzLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBSRUFEYCBBUEkgS2V5IHJvbGUuKhthcGkuZ2F0ZXdheS52MS5hY2NvdW50Lmxpc3RyQgpACg1hdXRob3JpemF0aW9uEitUaGUgQVBJIEtleSBnZW5lcmF0ZWQgb24gdGhlIEFkbWluIENvbnNvbGUuGAEoAYLT5JMCDhIML3YxL2FjY291bnRzQoQGWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZ2F0ZXdheZJBzwUSIAoZQnVja2V0ZWVyIEdhdGV3YXkgU2VydmljZTIDMS4wGghFTkRQT0lOVCoBAjIQYXBwbGljYXRpb24vanNvbjoQYXBwbGljYXRpb24vanNvblK0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfVKyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1SqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9WlAKTgoKQXBpS2V5QXV0aBJACAISK1RoZSBBUEkgS2V5IGdlbmVyYXRlZCBvbiB0aGUgQWRtaW4gQ29uc29sZS4aDWF1dGhvcml6YXRpb24gAmIQCg4KCkFwaUtleUF1dGgSAGIGcHJvdG8z" config: port: 9000 adminPort: 8001 diff --git a/manifests/bucketeer/charts/web/values.yaml b/manifests/bucketeer/charts/web/values.yaml index 7f68c4cc51..932e96923d 100644 --- a/manifests/bucketeer/charts/web/values.yaml +++ b/manifests/bucketeer/charts/web/values.yaml @@ -110,10 +110,10 @@ envoy: batchDescriptor: CuMFChlwcm90by9iYXRjaC9zZXJ2aWNlLnByb3RvEg9idWNrZXRlZXIuYmF0Y2giPgoPQmF0Y2hKb2JSZXF1ZXN0EisKA2pvYhgBIAEoDjIZLmJ1Y2tldGVlci5iYXRjaC5CYXRjaEpvYlIDam9iIhIKEEJhdGNoSm9iUmVzcG9uc2UqvQMKCEJhdGNoSm9iEhsKF0V4cGVyaW1lbnRTdGF0dXNVcGRhdGVyEAASHAoYRXhwZXJpbWVudFJ1bm5pbmdXYXRjaGVyEAESFwoTRmVhdHVyZVN0YWxlV2F0Y2hlchACEhMKD01hdUNvdW50V2F0Y2hlchADEhMKD0RhdGV0aW1lV2F0Y2hlchAEEhUKEUV2ZW50Q291bnRXYXRjaGVyEAUSFwoTRG9tYWluRXZlbnRJbmZvcm1lchAGEhcKE1JlZGlzQ291bnRlckRlbGV0ZXIQBxIdChlQcm9ncmVzc2l2ZVJvbGxvdXRXYXRjaGVyEAgSGAoURXhwZXJpbWVudENhbGN1bGF0b3IQCRIRCg1NYXVTdW1tYXJpemVyEAoSFwoTTWF1UGFydGl0aW9uRGVsZXRlchALEhcKE01hdVBhcnRpdGlvbkNyZWF0b3IQDBIVChFGZWF0dXJlRmxhZ0NhY2hlchANEhUKEVNlZ21lbnRVc2VyQ2FjaGVyEA4SEAoMQXBpS2V5Q2FjaGVyEA8SFgoSQXV0b09wc1J1bGVzQ2FjaGVyEBASFAoQRXhwZXJpbWVudENhY2hlchARMmgKDEJhdGNoU2VydmljZRJYCg9FeGVjdXRlQmF0Y2hKb2ISIC5idWNrZXRlZXIuYmF0Y2guQmF0Y2hKb2JSZXF1ZXN0GiEuYnVja2V0ZWVyLmJhdGNoLkJhdGNoSm9iUmVzcG9uc2UiAEIvWi1naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYmF0Y2hiBnByb3RvMw== environmentDescriptor: CtUMCh9wcm90by9lbnZpcm9ubWVudC9jb21tYW5kLnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQitQEKGkNyZWF0ZUVudmlyb25tZW50VjJDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAiABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBCABKAlSCXByb2plY3RJZBInCg9yZXF1aXJlX2NvbW1lbnQYBSABKAhSDnJlcXVpcmVDb21tZW50IjAKGlJlbmFtZUVudmlyb25tZW50VjJDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiSQolQ2hhbmdlRGVzY3JpcHRpb25FbnZpcm9ubWVudFYyQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iHQobQXJjaGl2ZUVudmlyb25tZW50VjJDb21tYW5kIh8KHVVuYXJjaGl2ZUVudmlyb25tZW50VjJDb21tYW5kIpABChRDcmVhdGVQcm9qZWN0Q29tbWFuZBInCg9vcmdhbml6YXRpb25faWQYASABKAlSDm9yZ2FuaXphdGlvbklkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhkKCHVybF9jb2RlGAQgASgJUgd1cmxDb2RlIpUBChlDcmVhdGVUcmlhbFByb2plY3RDb21tYW5kEhIKAmlkGAEgASgJQgIYAVICaWQSFAoFZW1haWwYAiABKAlSBWVtYWlsEhIKBG5hbWUYAyABKAlSBG5hbWUSGQoIdXJsX2NvZGUYBCABKAlSB3VybENvZGUSHwoLb3duZXJfZW1haWwYBSABKAlSCm93bmVyRW1haWwiKgoUUmVuYW1lUHJvamVjdENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSJDCh9DaGFuZ2VEZXNjcmlwdGlvblByb2plY3RDb21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIWChRFbmFibGVQcm9qZWN0Q29tbWFuZCIXChVEaXNhYmxlUHJvamVjdENvbW1hbmQiHAoaQ29udmVydFRyaWFsUHJvamVjdENvbW1hbmQi0AEKGUNyZWF0ZU9yZ2FuaXphdGlvbkNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgCIAEoCVIHdXJsQ29kZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SGQoIaXNfdHJpYWwYBCABKAhSB2lzVHJpYWwSJgoPaXNfc3lzdGVtX2FkbWluGAUgASgIUg1pc1N5c3RlbUFkbWluEh8KC293bmVyX2VtYWlsGAYgASgJUgpvd25lckVtYWlsIjMKHUNoYW5nZU5hbWVPcmdhbml6YXRpb25Db21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiSAokQ2hhbmdlRGVzY3JpcHRpb25Pcmdhbml6YXRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiJGCiNDaGFuZ2VPd25lckVtYWlsT3JnYW5pemF0aW9uQ29tbWFuZBIfCgtvd25lcl9lbWFpbBgBIAEoCVIKb3duZXJFbWFpbCJGChtDaGFuZ2VSZXF1aXJlQ29tbWVudENvbW1hbmQSJwoPcmVxdWlyZV9jb21tZW50GAEgASgIUg5yZXF1aXJlQ29tbWVudCIbChlFbmFibGVPcmdhbml6YXRpb25Db21tYW5kIhwKGkRpc2FibGVPcmdhbml6YXRpb25Db21tYW5kIhwKGkFyY2hpdmVPcmdhbml6YXRpb25Db21tYW5kIh4KHFVuYXJjaGl2ZU9yZ2FuaXphdGlvbkNvbW1hbmQiIQofQ29udmVydFRyaWFsT3JnYW5pemF0aW9uQ29tbWFuZEI1WjNnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZW52aXJvbm1lbnRiBnByb3RvMwrnAwojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8SFWJ1Y2tldGVlci5lbnZpcm9ubWVudCLpAgoNRW52aXJvbm1lbnRWMhIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgDIAEoCVIHdXJsQ29kZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SHQoKcHJvamVjdF9pZBgFIAEoCVIJcHJvamVjdElkEhoKCGFyY2hpdmVkGAYgASgIUghhcmNoaXZlZBIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EicKD29yZ2FuaXphdGlvbl9pZBgJIAEoCVIOb3JnYW5pemF0aW9uSWQSJwoPcmVxdWlyZV9jb21tZW50GAogASgIUg5yZXF1aXJlQ29tbWVudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYCyABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK4gUKHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiKYAQoGU3RydWN0EjsKBmZpZWxkcxgBIAMoCzIjLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QuRmllbGRzRW50cnlSBmZpZWxkcxpRCgtGaWVsZHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIrICCgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZUgAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCWJvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5kIjsKCUxpc3RWYWx1ZRIuCgZ2YWx1ZXMYASADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnZhbHVlcyobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKpj4KLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90byKzCAoHU3dhZ2dlchIYCgdzd2FnZ2VyGAEgASgJUgdzd2FnZ2VyEkMKBGluZm8YAiABKAsyLy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvUgRpbmZvEhIKBGhvc3QYAyABKAlSBGhvc3QSGwoJYmFzZV9wYXRoGAQgASgJUghiYXNlUGF0aBJLCgdzY2hlbWVzGAUgAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSXwoJcmVzcG9uc2VzGAogAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEnEKFHNlY3VyaXR5X2RlZmluaXRpb25zGAsgASgLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9uc1ITc2VjdXJpdHlEZWZpbml0aW9ucxJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EkIKBHRhZ3MYDSADKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSBHRhZ3MSZQoNZXh0ZXJuYWxfZG9jcxgOIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEmIKCmV4dGVuc2lvbnMYDyADKAsyQi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAlKBAgJEAoi1gcKCU9wZXJhdGlvbhISCgR0YWdzGAEgAygJUgR0YWdzEhgKB3N1bW1hcnkYAiABKAlSB3N1bW1hcnkSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYBCABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIhCgxvcGVyYXRpb25faWQYBSABKAlSC29wZXJhdGlvbklkEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSYQoJcmVzcG9uc2VzGAkgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMSSwoHc2NoZW1lcxgKIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIeCgpkZXByZWNhdGVkGAsgASgIUgpkZXByZWNhdGVkEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSZAoKZXh0ZW5zaW9ucxgNIAMoCzJELmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMSVQoKcGFyYW1ldGVycxgOIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlBhcmFtZXRlcnNSCnBhcmFtZXRlcnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJImIKClBhcmFtZXRlcnMSVAoHaGVhZGVycxgBIAMoCzI6LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlclIHaGVhZGVycyKjAgoPSGVhZGVyUGFyYW1ldGVyEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uElMKBHR5cGUYAyABKA4yPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXIuVHlwZVIEdHlwZRIWCgZmb3JtYXQYBCABKAlSBmZvcm1hdBIaCghyZXF1aXJlZBgFIAEoCFIIcmVxdWlyZWQiRQoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RSSU5HEAESCgoGTlVNQkVSEAISCwoHSU5URUdFUhADEgsKB0JPT0xFQU4QBEoECAYQB0oECAcQCCLYAQoGSGVhZGVyEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhISCgR0eXBlGAIgASgJUgR0eXBlEhYKBmZvcm1hdBgDIAEoCVIGZm9ybWF0EhgKB2RlZmF1bHQYBiABKAlSB2RlZmF1bHQSGAoHcGF0dGVybhgNIAEoCVIHcGF0dGVybkoECAQQBUoECAUQBkoECAcQCEoECAgQCUoECAkQCkoECAoQC0oECAsQDEoECAwQDUoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQEyKaBQoIUmVzcG9uc2USIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEkkKBnNjaGVtYRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIGc2NoZW1hEloKB2hlYWRlcnMYAyADKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5IZWFkZXJzRW50cnlSB2hlYWRlcnMSXQoIZXhhbXBsZXMYBCADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeGFtcGxlc0VudHJ5UghleGFtcGxlcxJjCgpleHRlbnNpb25zGAUgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGm0KDEhlYWRlcnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJHCgV2YWx1ZRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclIFdmFsdWU6AjgBGjsKDUV4YW1wbGVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLWAwoESW5mbxIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEigKEHRlcm1zX29mX3NlcnZpY2UYAyABKAlSDnRlcm1zT2ZTZXJ2aWNlEkwKB2NvbnRhY3QYBCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Db250YWN0Ugdjb250YWN0EkwKB2xpY2Vuc2UYBSABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5MaWNlbnNlUgdsaWNlbnNlEhgKB3ZlcnNpb24YBiABKAlSB3ZlcnNpb24SXwoKZXh0ZW5zaW9ucxgHIAMoCzI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm8uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIkUKB0NvbnRhY3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybBIUCgVlbWFpbBgDIAEoCVIFZW1haWwiLwoHTGljZW5zZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsIksKFUV4dGVybmFsRG9jdW1lbnRhdGlvbhIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEAoDdXJsGAIgASgJUgN1cmwiqgIKBlNjaGVtYRJWCgtqc29uX3NjaGVtYRgBIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSCmpzb25TY2hlbWESJAoNZGlzY3JpbWluYXRvchgCIAEoCVINZGlzY3JpbWluYXRvchIbCglyZWFkX29ubHkYAyABKAhSCHJlYWRPbmx5EmUKDWV4dGVybmFsX2RvY3MYBSABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIYCgdleGFtcGxlGAYgASgJUgdleGFtcGxlSgQIBBAFItcKCgpKU09OU2NoZW1hEhAKA3JlZhgDIAEoCVIDcmVmEhQKBXRpdGxlGAUgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SGAoHZGVmYXVsdBgHIAEoCVIHZGVmYXVsdBIbCglyZWFkX29ubHkYCCABKAhSCHJlYWRPbmx5EhgKB2V4YW1wbGUYCSABKAlSB2V4YW1wbGUSHwoLbXVsdGlwbGVfb2YYCiABKAFSCm11bHRpcGxlT2YSGAoHbWF4aW11bRgLIAEoAVIHbWF4aW11bRIrChFleGNsdXNpdmVfbWF4aW11bRgMIAEoCFIQZXhjbHVzaXZlTWF4aW11bRIYCgdtaW5pbXVtGA0gASgBUgdtaW5pbXVtEisKEWV4Y2x1c2l2ZV9taW5pbXVtGA4gASgIUhBleGNsdXNpdmVNaW5pbXVtEh0KCm1heF9sZW5ndGgYDyABKARSCW1heExlbmd0aBIdCgptaW5fbGVuZ3RoGBAgASgEUgltaW5MZW5ndGgSGAoHcGF0dGVybhgRIAEoCVIHcGF0dGVybhIbCgltYXhfaXRlbXMYFCABKARSCG1heEl0ZW1zEhsKCW1pbl9pdGVtcxgVIAEoBFIIbWluSXRlbXMSIQoMdW5pcXVlX2l0ZW1zGBYgASgIUgt1bmlxdWVJdGVtcxIlCg5tYXhfcHJvcGVydGllcxgYIAEoBFINbWF4UHJvcGVydGllcxIlCg5taW5fcHJvcGVydGllcxgZIAEoBFINbWluUHJvcGVydGllcxIaCghyZXF1aXJlZBgaIAMoCVIIcmVxdWlyZWQSFAoFYXJyYXkYIiADKAlSBWFycmF5El8KBHR5cGUYIyADKA4ySy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkpTT05TY2hlbWFTaW1wbGVUeXBlc1IEdHlwZRIWCgZmb3JtYXQYJCABKAlSBmZvcm1hdBISCgRlbnVtGC4gAygJUgRlbnVtEnoKE2ZpZWxkX2NvbmZpZ3VyYXRpb24Y6QcgASgLMkguZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5GaWVsZENvbmZpZ3VyYXRpb25SEmZpZWxkQ29uZmlndXJhdGlvbhJlCgpleHRlbnNpb25zGDAgAygLMkUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaPAoSRmllbGRDb25maWd1cmF0aW9uEiYKD3BhdGhfcGFyYW1fbmFtZRgvIAEoCVINcGF0aFBhcmFtTmFtZRpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJ3ChVKU09OU2NoZW1hU2ltcGxlVHlwZXMSCwoHVU5LTk9XThAAEgkKBUFSUkFZEAESCwoHQk9PTEVBThACEgsKB0lOVEVHRVIQAxIICgROVUxMEAQSCgoGTlVNQkVSEAUSCgoGT0JKRUNUEAYSCgoGU1RSSU5HEAdKBAgBEAJKBAgCEANKBAgEEAVKBAgSEBNKBAgTEBRKBAgXEBhKBAgbEBxKBAgcEB1KBAgdEB5KBAgeECJKBAglECpKBAgqECtKBAgrEC4i2QIKA1RhZxISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAMgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSXgoKZXh0ZW5zaW9ucxgEIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZy5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi9wEKE1NlY3VyaXR5RGVmaW5pdGlvbnMSaAoIc2VjdXJpdHkYASADKAsyTC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zLlNlY3VyaXR5RW50cnlSCHNlY3VyaXR5GnYKDVNlY3VyaXR5RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSTwoFdmFsdWUYAiABKAsyOS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZVIFdmFsdWU6AjgBIv8GCg5TZWN1cml0eVNjaGVtZRJSCgR0eXBlGAEgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuVHlwZVIEdHlwZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEbmFtZRgDIAEoCVIEbmFtZRJMCgJpbhgEIAEoDjI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkluUgJpbhJSCgRmbG93GAUgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRmxvd1IEZmxvdxIrChFhdXRob3JpemF0aW9uX3VybBgGIAEoCVIQYXV0aG9yaXphdGlvblVybBIbCgl0b2tlbl91cmwYByABKAlSCHRva2VuVXJsEkkKBnNjb3BlcxgIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blc1IGc2NvcGVzEmkKCmV4dGVuc2lvbnMYCSADKAsySS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiSwoEVHlwZRIQCgxUWVBFX0lOVkFMSUQQABIOCgpUWVBFX0JBU0lDEAESEAoMVFlQRV9BUElfS0VZEAISDwoLVFlQRV9PQVVUSDIQAyIxCgJJbhIOCgpJTl9JTlZBTElEEAASDAoISU5fUVVFUlkQARINCglJTl9IRUFERVIQAiJqCgRGbG93EhAKDEZMT1dfSU5WQUxJRBAAEhEKDUZMT1dfSU1QTElDSVQQARIRCg1GTE9XX1BBU1NXT1JEEAISFAoQRkxPV19BUFBMSUNBVElPThADEhQKEEZMT1dfQUNDRVNTX0NPREUQBCL2AgoTU2VjdXJpdHlSZXF1aXJlbWVudBKKAQoUc2VjdXJpdHlfcmVxdWlyZW1lbnQYASADKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeVITc2VjdXJpdHlSZXF1aXJlbWVudBowChhTZWN1cml0eVJlcXVpcmVtZW50VmFsdWUSFAoFc2NvcGUYASADKAlSBXNjb3BlGp8BChhTZWN1cml0eVJlcXVpcmVtZW50RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSbQoFdmFsdWUYAiABKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZVIFdmFsdWU6AjgBIpYBCgZTY29wZXMSUgoFc2NvcGUYASADKAsyPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXMuU2NvcGVFbnRyeVIFc2NvcGUaOAoKU2NvcGVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBKjsKBlNjaGVtZRILCgdVTktOT1dOEAASCAoESFRUUBABEgkKBUhUVFBTEAISBgoCV1MQAxIHCgNXU1MQBEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK/QYKLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG86fgoRb3BlbmFwaXYyX3N3YWdnZXISHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYkgggASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlclIQb3BlbmFwaXYyU3dhZ2dlcjqGAQoTb3BlbmFwaXYyX29wZXJhdGlvbhIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJIIIAEoCzI0LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvblISb3BlbmFwaXYyT3BlcmF0aW9uOn4KEG9wZW5hcGl2Ml9zY2hlbWESHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYkgggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUg9vcGVuYXBpdjJTY2hlbWE6dQoNb3BlbmFwaXYyX3RhZxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiSCCABKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSDG9wZW5hcGl2MlRhZzp+Cg9vcGVuYXBpdjJfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJIIIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSDm9wZW5hcGl2MkZpZWxkQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr61wEKH3Byb3RvL2Vudmlyb25tZW50L3NlcnZpY2UucHJvdG8SFWJ1Y2tldGVlci5lbnZpcm9ubWVudBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGiNwcm90by9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5wcm90bxofcHJvdG8vZW52aXJvbm1lbnQvcHJvamVjdC5wcm90bxokcHJvdG8vZW52aXJvbm1lbnQvb3JnYW5pemF0aW9uLnByb3RvGh9wcm90by9lbnZpcm9ubWVudC9jb21tYW5kLnByb3RvIikKF0dldEVudmlyb25tZW50VjJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZCJiChhHZXRFbnZpcm9ubWVudFYyUmVzcG9uc2USRgoLZW52aXJvbm1lbnQYASABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQixgQKGUxpc3RFbnZpcm9ubWVudHNWMlJlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJTCghvcmRlcl9ieRgDIAEoDjI4LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0RW52aXJvbm1lbnRzVjJSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSaAoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMj8uYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RFbnZpcm9ubWVudHNWMlJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBI2CghhcmNoaXZlZBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEiUKDnNlYXJjaF9rZXl3b3JkGAcgASgJUg1zZWFyY2hLZXl3b3JkEicKD29yZ2FuaXphdGlvbl9pZBgIIAEoCVIOb3JnYW5pemF0aW9uSWQiaQoHT3JkZXJCeRILCgdERUZBVUxUEAASBgoCSUQQARIICgROQU1FEAISDAoIVVJMX0NPREUQAxIOCgpDUkVBVEVEX0FUEAQSDgoKVVBEQVRFRF9BVBAFEhEKDUZFQVRVUkVfQ09VTlQQBiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAEinwEKGkxpc3RFbnZpcm9ubWVudHNWMlJlc3BvbnNlEkgKDGVudmlyb25tZW50cxgBIAMoCzIkLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFYyUgxlbnZpcm9ubWVudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiaQoaQ3JlYXRlRW52aXJvbm1lbnRWMlJlcXVlc3QSSwoHY29tbWFuZBgBIAEoCzIxLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVFbnZpcm9ubWVudFYyQ29tbWFuZFIHY29tbWFuZCJlChtDcmVhdGVFbnZpcm9ubWVudFYyUmVzcG9uc2USRgoLZW52aXJvbm1lbnQYASABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQi+wIKGlVwZGF0ZUVudmlyb25tZW50VjJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJYCg5yZW5hbWVfY29tbWFuZBgCIAEoCzIxLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5SZW5hbWVFbnZpcm9ubWVudFYyQ29tbWFuZFINcmVuYW1lQ29tbWFuZBJ6ChpjaGFuZ2VfZGVzY3JpcHRpb25fY29tbWFuZBgDIAEoCzI8LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DaGFuZ2VEZXNjcmlwdGlvbkVudmlyb25tZW50VjJDb21tYW5kUhhjaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmQSdwoeY2hhbmdlX3JlcXVpcmVfY29tbWVudF9jb21tYW5kGAQgASgLMjIuYnVja2V0ZWVyLmVudmlyb25tZW50LkNoYW5nZVJlcXVpcmVDb21tZW50Q29tbWFuZFIbY2hhbmdlUmVxdWlyZUNvbW1lbnRDb21tYW5kIh0KG1VwZGF0ZUVudmlyb25tZW50VjJSZXNwb25zZSJ7ChtBcmNoaXZlRW52aXJvbm1lbnRWMlJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkwKB2NvbW1hbmQYAiABKAsyMi5idWNrZXRlZXIuZW52aXJvbm1lbnQuQXJjaGl2ZUVudmlyb25tZW50VjJDb21tYW5kUgdjb21tYW5kIh4KHEFyY2hpdmVFbnZpcm9ubWVudFYyUmVzcG9uc2UifwodVW5hcmNoaXZlRW52aXJvbm1lbnRWMlJlcXVlc3QSDgoCaWQYASABKAlSAmlkEk4KB2NvbW1hbmQYAiABKAsyNC5idWNrZXRlZXIuZW52aXJvbm1lbnQuVW5hcmNoaXZlRW52aXJvbm1lbnRWMkNvbW1hbmRSB2NvbW1hbmQiIAoeVW5hcmNoaXZlRW52aXJvbm1lbnRWMlJlc3BvbnNlIkwKEUdldFByb2plY3RSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkIk4KEkdldFByb2plY3RSZXNwb25zZRI4Cgdwcm9qZWN0GAEgASgLMh4uYnVja2V0ZWVyLmVudmlyb25tZW50LlByb2plY3RSB3Byb2plY3QiwgQKE0xpc3RQcm9qZWN0c1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJNCghvcmRlcl9ieRgDIAEoDjIyLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0UHJvamVjdHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYgoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjkuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RQcm9qZWN0c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSKQoQb3JnYW5pemF0aW9uX2lkcxgHIAMoCVIPb3JnYW5pemF0aW9uSWRzIpMBCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIGCgJJRBABEg4KCkNSRUFURURfQVQQAhIOCgpVUERBVEVEX0FUEAMSCAoETkFNRRAEEgwKCFVSTF9DT0RFEAUSFQoRRU5WSVJPTk1FTlRfQ09VTlQQBhIRCg1GRUFUVVJFX0NPVU5UEAcSEQoNQ1JFQVRPUl9FTUFJTBAIIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQASKLAQoUTGlzdFByb2plY3RzUmVzcG9uc2USOgoIcHJvamVjdHMYASADKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIIcHJvamVjdHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiXQoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSRQoHY29tbWFuZBgBIAEoCzIrLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVQcm9qZWN0Q29tbWFuZFIHY29tbWFuZCJRChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USOAoHcHJvamVjdBgBIAEoCzIeLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Qcm9qZWN0Ugdwcm9qZWN0ImcKGUNyZWF0ZVRyaWFsUHJvamVjdFJlcXVlc3QSSgoHY29tbWFuZBgBIAEoCzIwLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVUcmlhbFByb2plY3RDb21tYW5kUgdjb21tYW5kIhwKGkNyZWF0ZVRyaWFsUHJvamVjdFJlc3BvbnNlIvABChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSdAoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAiABKAsyNi5idWNrZXRlZXIuZW52aXJvbm1lbnQuQ2hhbmdlRGVzY3JpcHRpb25Qcm9qZWN0Q29tbWFuZFIYY2hhbmdlRGVzY3JpcHRpb25Db21tYW5kElIKDnJlbmFtZV9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmVudmlyb25tZW50LlJlbmFtZVByb2plY3RDb21tYW5kUg1yZW5hbWVDb21tYW5kIhcKFVVwZGF0ZVByb2plY3RSZXNwb25zZSJtChRFbmFibGVQcm9qZWN0UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRQoHY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbmFibGVQcm9qZWN0Q29tbWFuZFIHY29tbWFuZCIXChVFbmFibGVQcm9qZWN0UmVzcG9uc2UibwoVRGlzYWJsZVByb2plY3RSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJGCgdjb21tYW5kGAIgASgLMiwuYnVja2V0ZWVyLmVudmlyb25tZW50LkRpc2FibGVQcm9qZWN0Q29tbWFuZFIHY29tbWFuZCIYChZEaXNhYmxlUHJvamVjdFJlc3BvbnNlInkKGkNvbnZlcnRUcmlhbFByb2plY3RSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJLCgdjb21tYW5kGAIgASgLMjEuYnVja2V0ZWVyLmVudmlyb25tZW50LkNvbnZlcnRUcmlhbFByb2plY3RDb21tYW5kUgdjb21tYW5kIh0KG0NvbnZlcnRUcmlhbFByb2plY3RSZXNwb25zZSIoChZHZXRPcmdhbml6YXRpb25SZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZCJiChdHZXRPcmdhbml6YXRpb25SZXNwb25zZRJHCgxvcmdhbml6YXRpb24YASABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24i2wQKGExpc3RPcmdhbml6YXRpb25zUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yElIKCG9yZGVyX2J5GAMgASgOMjcuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RPcmdhbml6YXRpb25zUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmcKD29yZGVyX2RpcmVjdGlvbhgEIAEoDjI+LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0T3JnYW5pemF0aW9uc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSNgoIYXJjaGl2ZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghhcmNoaXZlZCKQAQoHT3JkZXJCeRILCgdERUZBVUxUEAASBgoCSUQQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBE5BTUUQBBIMCghVUkxfQ09ERRAFEhEKDVBST0pFQ1RfQ09VTlQQBhIVChFFTlZJUk9OTUVOVF9DT1VOVBAHEg4KClVTRVJfQ09VTlQQCCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAEinwEKGUxpc3RPcmdhbml6YXRpb25zUmVzcG9uc2USSQoNT3JnYW5pemF0aW9ucxgBIAMoCzIjLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Pcmdhbml6YXRpb25SDU9yZ2FuaXphdGlvbnMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQioAIKGUNyZWF0ZU9yZ2FuaXphdGlvblJlcXVlc3QSTgoHY29tbWFuZBgBIAEoCzIwLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVPcmdhbml6YXRpb25Db21tYW5kQgIYAVIHY29tbWFuZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIZCghpc190cmlhbBgFIAEoCFIHaXNUcmlhbBImCg9pc19zeXN0ZW1fYWRtaW4YBiABKAhSDWlzU3lzdGVtQWRtaW4SHwoLb3duZXJfZW1haWwYByABKAlSCm93bmVyRW1haWwiZQoaQ3JlYXRlT3JnYW5pemF0aW9uUmVzcG9uc2USRwoMT3JnYW5pemF0aW9uGAEgASgLMiMuYnVja2V0ZWVyLmVudmlyb25tZW50Lk9yZ2FuaXphdGlvblIMT3JnYW5pemF0aW9uIvwCChlVcGRhdGVPcmdhbml6YXRpb25SZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJbCg5yZW5hbWVfY29tbWFuZBgCIAEoCzI0LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DaGFuZ2VOYW1lT3JnYW5pemF0aW9uQ29tbWFuZFINcmVuYW1lQ29tbWFuZBJ5ChpjaGFuZ2VfZGVzY3JpcHRpb25fY29tbWFuZBgDIAEoCzI7LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DaGFuZ2VEZXNjcmlwdGlvbk9yZ2FuaXphdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJ3ChpjaGFuZ2Vfb3duZXJfZW1haWxfY29tbWFuZBgEIAEoCzI6LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DaGFuZ2VPd25lckVtYWlsT3JnYW5pemF0aW9uQ29tbWFuZFIXY2hhbmdlT3duZXJFbWFpbENvbW1hbmQiHAoaVXBkYXRlT3JnYW5pemF0aW9uUmVzcG9uc2UidwoZRW5hYmxlT3JnYW5pemF0aW9uUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSgoHY29tbWFuZBgCIAEoCzIwLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbmFibGVPcmdhbml6YXRpb25Db21tYW5kUgdjb21tYW5kIhwKGkVuYWJsZU9yZ2FuaXphdGlvblJlc3BvbnNlInkKGkRpc2FibGVPcmdhbml6YXRpb25SZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJLCgdjb21tYW5kGAIgASgLMjEuYnVja2V0ZWVyLmVudmlyb25tZW50LkRpc2FibGVPcmdhbml6YXRpb25Db21tYW5kUgdjb21tYW5kIh0KG0Rpc2FibGVPcmdhbml6YXRpb25SZXNwb25zZSJ5ChpBcmNoaXZlT3JnYW5pemF0aW9uUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSwoHY29tbWFuZBgCIAEoCzIxLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5BcmNoaXZlT3JnYW5pemF0aW9uQ29tbWFuZFIHY29tbWFuZCIdChtBcmNoaXZlT3JnYW5pemF0aW9uUmVzcG9uc2UifQocVW5hcmNoaXZlT3JnYW5pemF0aW9uUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSTQoHY29tbWFuZBgCIAEoCzIzLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5VbmFyY2hpdmVPcmdhbml6YXRpb25Db21tYW5kUgdjb21tYW5kIh8KHVVuYXJjaGl2ZU9yZ2FuaXphdGlvblJlc3BvbnNlIoMBCh9Db252ZXJ0VHJpYWxPcmdhbml6YXRpb25SZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJQCgdjb21tYW5kGAIgASgLMjYuYnVja2V0ZWVyLmVudmlyb25tZW50LkNvbnZlcnRUcmlhbE9yZ2FuaXphdGlvbkNvbW1hbmRSB2NvbW1hbmQiIgogQ29udmVydFRyaWFsT3JnYW5pemF0aW9uUmVzcG9uc2Ui9QQKFUxpc3RQcm9qZWN0c1YyUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEk8KCG9yZGVyX2J5GAMgASgOMjQuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RQcm9qZWN0c1YyUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmQKD29yZGVyX2RpcmVjdGlvbhgEIAEoDjI7LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0UHJvamVjdHNWMlJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSLQoQb3JnYW5pemF0aW9uX2lkcxgHIAMoCUICGAFSD29yZ2FuaXphdGlvbklkcxInCg9vcmdhbml6YXRpb25faWQYCCABKAlSDm9yZ2FuaXphdGlvbklkIpMBCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIGCgJJRBABEg4KCkNSRUFURURfQVQQAhIOCgpVUERBVEVEX0FUEAMSCAoETkFNRRAEEgwKCFVSTF9DT0RFEAUSFQoRRU5WSVJPTk1FTlRfQ09VTlQQBhIRCg1GRUFUVVJFX0NPVU5UEAcSEQoNQ1JFQVRPUl9FTUFJTBAIIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQASKNAQoWTGlzdFByb2plY3RzVjJSZXNwb25zZRI6Cghwcm9qZWN0cxgBIAMoCzIeLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Qcm9qZWN0Ughwcm9qZWN0cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudDKmngEKEkVudmlyb25tZW50U2VydmljZRK3BgoQR2V0RW52aXJvbm1lbnRWMhIuLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5HZXRFbnZpcm9ubWVudFYyUmVxdWVzdBovLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5HZXRFbnZpcm9ubWVudFYyUmVzcG9uc2UiwQWSQZYFCgtFbnZpcm9ubWVudBIDR2V0GkZHZXQgYW4gZW52aXJvbm1lbnQuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKiJ3ZWIudjEuZW52aXJvbm1lbnQuZ2V0X2Vudmlyb25tZW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiESHy92MS9lbnZpcm9ubWVudC9nZXRfZW52aXJvbm1lbnQSwQYKEkxpc3RFbnZpcm9ubWVudHNWMhIwLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0RW52aXJvbm1lbnRzVjJSZXF1ZXN0GjEuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RFbnZpcm9ubWVudHNWMlJlc3BvbnNlIsUFkkGYBQoLRW52aXJvbm1lbnQSBExpc3QaRUxpc3QgZW52aXJvbm1lbnRzLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiokd2ViLnYxLmVudmlyb25tZW50Lmxpc3RfZW52aXJvbm1lbnRzSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiMSIS92MS9lbnZpcm9ubWVudC9saXN0X2Vudmlyb25tZW50cxLPBgoTQ3JlYXRlRW52aXJvbm1lbnRWMhIxLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVFbnZpcm9ubWVudFYyUmVxdWVzdBoyLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVFbnZpcm9ubWVudFYyUmVzcG9uc2Ui0AWSQZ8FCgtFbnZpcm9ubWVudBIGQ3JlYXRlGklDcmVhdGUgYW4gZW52aXJvbm1lbnQuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKiV3ZWIudjEuZW52aXJvbm1lbnQuY3JlYXRlX2Vudmlyb25tZW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiciIi92MS9lbnZpcm9ubWVudC9jcmVhdGVfZW52aXJvbm1lbnQ6ASoSzwYKE1VwZGF0ZUVudmlyb25tZW50VjISMS5idWNrZXRlZXIuZW52aXJvbm1lbnQuVXBkYXRlRW52aXJvbm1lbnRWMlJlcXVlc3QaMi5idWNrZXRlZXIuZW52aXJvbm1lbnQuVXBkYXRlRW52aXJvbm1lbnRWMlJlc3BvbnNlItAFkkGfBQoLRW52aXJvbm1lbnQSBlVwZGF0ZRpJVXBkYXRlIGFuIGVudmlyb25tZW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiold2ViLnYxLmVudmlyb25tZW50LnVwZGF0ZV9lbnZpcm9ubWVudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwInIiIvdjEvZW52aXJvbm1lbnQvdXBkYXRlX2Vudmlyb25tZW50OgEqEtYGChRBcmNoaXZlRW52aXJvbm1lbnRWMhIyLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5BcmNoaXZlRW52aXJvbm1lbnRWMlJlcXVlc3QaMy5idWNrZXRlZXIuZW52aXJvbm1lbnQuQXJjaGl2ZUVudmlyb25tZW50VjJSZXNwb25zZSLUBZJBogUKC0Vudmlyb25tZW50EgdBcmNoaXZlGkpBcmNoaXZlIGFuIGVudmlyb25tZW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiomd2ViLnYxLmVudmlyb25tZW50LmFyY2hpdmVfZW52aXJvbm1lbnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCKCIjL3YxL2Vudmlyb25tZW50L2FyY2hpdmVfZW52aXJvbm1lbnQ6ASoS5AYKFlVuYXJjaGl2ZUVudmlyb25tZW50VjISNC5idWNrZXRlZXIuZW52aXJvbm1lbnQuVW5hcmNoaXZlRW52aXJvbm1lbnRWMlJlcXVlc3QaNS5idWNrZXRlZXIuZW52aXJvbm1lbnQuVW5hcmNoaXZlRW52aXJvbm1lbnRWMlJlc3BvbnNlItwFkkGoBQoLRW52aXJvbm1lbnQSCVVuYXJjaGl2ZRpMVW5hcmNoaXZlIGFuIGVudmlyb25tZW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiood2ViLnYxLmVudmlyb25tZW50LnVuYXJjaGl2ZV9lbnZpcm9ubWVudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIqIiUvdjEvZW52aXJvbm1lbnQvdW5hcmNoaXZlX2Vudmlyb25tZW50OgEqEpQGCgpHZXRQcm9qZWN0EiguYnVja2V0ZWVyLmVudmlyb25tZW50LkdldFByb2plY3RSZXF1ZXN0GikuYnVja2V0ZWVyLmVudmlyb25tZW50LkdldFByb2plY3RSZXNwb25zZSKwBZJBiQUKB1Byb2plY3QSA0dldBpBR2V0IGEgcHJvamVjdC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qHndlYi52MS5lbnZpcm9ubWVudC5nZXRfcHJvamVjdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIdEhsvdjEvZW52aXJvbm1lbnQvZ2V0X3Byb2plY3QSnwYKDExpc3RQcm9qZWN0cxIqLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0UHJvamVjdHNSZXF1ZXN0GisuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RQcm9qZWN0c1Jlc3BvbnNlIrUFkkGMBQoHUHJvamVjdBIETGlzdBpBTGlzdCBwcm9qZWN0cy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qIHdlYi52MS5lbnZpcm9ubWVudC5saXN0X3Byb2plY3RzSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8SHS92MS9lbnZpcm9ubWVudC9saXN0X3Byb2plY3RzEqwGCg1DcmVhdGVQcm9qZWN0EisuYnVja2V0ZWVyLmVudmlyb25tZW50LkNyZWF0ZVByb2plY3RSZXF1ZXN0GiwuYnVja2V0ZWVyLmVudmlyb25tZW50LkNyZWF0ZVByb2plY3RSZXNwb25zZSK/BZJBkgUKB1Byb2plY3QSBkNyZWF0ZRpEQ3JlYXRlIGEgcHJvamVjdC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qIXdlYi52MS5lbnZpcm9ubWVudC5jcmVhdGVfcHJvamVjdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIjIh4vdjEvZW52aXJvbm1lbnQvY3JlYXRlX3Byb2plY3Q6ASoS0wYKEkNyZWF0ZVRyaWFsUHJvamVjdBIwLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5DcmVhdGVUcmlhbFByb2plY3RSZXF1ZXN0GjEuYnVja2V0ZWVyLmVudmlyb25tZW50LkNyZWF0ZVRyaWFsUHJvamVjdFJlc3BvbnNlItcFkkGkBQoHUHJvamVjdBIMQ3JlYXRlIFRyaWFsGkpDcmVhdGUgYSB0cmlhbCBwcm9qZWN0LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiond2ViLnYxLmVudmlyb25tZW50LmNyZWF0ZV90cmlhbF9wcm9qZWN0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAikiJC92MS9lbnZpcm9ubWVudC9jcmVhdGVfdHJpYWxfcHJvamVjdDoBKhKsBgoNVXBkYXRlUHJvamVjdBIrLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5VcGRhdGVQcm9qZWN0UmVxdWVzdBosLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5VcGRhdGVQcm9qZWN0UmVzcG9uc2UivwWSQZIFCgdQcm9qZWN0EgZVcGRhdGUaRFVwZGF0ZSBhIHByb2plY3QuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKiF3ZWIudjEuZW52aXJvbm1lbnQudXBkYXRlX3Byb2plY3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCIyIeL3YxL2Vudmlyb25tZW50L3VwZGF0ZV9wcm9qZWN0OgEqEqwGCg1FbmFibGVQcm9qZWN0EisuYnVja2V0ZWVyLmVudmlyb25tZW50LkVuYWJsZVByb2plY3RSZXF1ZXN0GiwuYnVja2V0ZWVyLmVudmlyb25tZW50LkVuYWJsZVByb2plY3RSZXNwb25zZSK/BZJBkgUKB1Byb2plY3QSBkVuYWJsZRpERW5hYmxlIGEgcHJvamVjdC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qIXdlYi52MS5lbnZpcm9ubWVudC5lbmFibGVfcHJvamVjdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIjIh4vdjEvZW52aXJvbm1lbnQvZW5hYmxlX3Byb2plY3Q6ASoSswYKDkRpc2FibGVQcm9qZWN0EiwuYnVja2V0ZWVyLmVudmlyb25tZW50LkRpc2FibGVQcm9qZWN0UmVxdWVzdBotLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5EaXNhYmxlUHJvamVjdFJlc3BvbnNlIsMFkkGVBQoHUHJvamVjdBIHRGlzYWJsZRpFRGlzYWJsZSBhIHByb2plY3QuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKiJ3ZWIudjEuZW52aXJvbm1lbnQuZGlzYWJsZV9wcm9qZWN0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiQiHy92MS9lbnZpcm9ubWVudC9kaXNhYmxlX3Byb2plY3Q6ASoS2gYKE0NvbnZlcnRUcmlhbFByb2plY3QSMS5idWNrZXRlZXIuZW52aXJvbm1lbnQuQ29udmVydFRyaWFsUHJvamVjdFJlcXVlc3QaMi5idWNrZXRlZXIuZW52aXJvbm1lbnQuQ29udmVydFRyaWFsUHJvamVjdFJlc3BvbnNlItsFkkGnBQoHUHJvamVjdBINQ29udmVydCBUcmlhbBpLQ29udmVydCBhIHRyaWFsIHByb2plY3QuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKih3ZWIudjEuZW52aXJvbm1lbnQuY29udmVydF90cmlhbF9wcm9qZWN0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAioiJS92MS9lbnZpcm9ubWVudC9jb252ZXJ0X3RyaWFsX3Byb2plY3Q6ASoSuAYKD0dldE9yZ2FuaXphdGlvbhItLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5HZXRPcmdhbml6YXRpb25SZXF1ZXN0Gi4uYnVja2V0ZWVyLmVudmlyb25tZW50LkdldE9yZ2FuaXphdGlvblJlc3BvbnNlIsUFkkGZBQoMT3JnYW5pemF0aW9uEgNHZXQaR0dldCBhbiBvcmdhbml6YXRpb24uIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGF0IGxlYXN0IGEgTUVNQkVSIHJvbGUuKiN3ZWIudjEuZW52aXJvbm1lbnQuZ2V0X29yZ2FuaXphdGlvbkq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIiEiAvdjEvZW52aXJvbm1lbnQvZ2V0X29yZ2FuaXphdGlvbhLCBgoRTGlzdE9yZ2FuaXphdGlvbnMSLy5idWNrZXRlZXIuZW52aXJvbm1lbnQuTGlzdE9yZ2FuaXphdGlvbnNSZXF1ZXN0GjAuYnVja2V0ZWVyLmVudmlyb25tZW50Lkxpc3RPcmdhbml6YXRpb25zUmVzcG9uc2UiyQWSQZsFCgxPcmdhbml6YXRpb24SBExpc3QaRkxpc3Qgb3JnYW5pemF0aW9ucy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qJXdlYi52MS5lbnZpcm9ubWVudC5saXN0X29yZ2FuaXphdGlvbnNKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJBIiL3YxL2Vudmlyb25tZW50L2xpc3Rfb3JnYW5pemF0aW9ucxLQBgoSQ3JlYXRlT3JnYW5pemF0aW9uEjAuYnVja2V0ZWVyLmVudmlyb25tZW50LkNyZWF0ZU9yZ2FuaXphdGlvblJlcXVlc3QaMS5idWNrZXRlZXIuZW52aXJvbm1lbnQuQ3JlYXRlT3JnYW5pemF0aW9uUmVzcG9uc2Ui1AWSQaIFCgxPcmdhbml6YXRpb24SBkNyZWF0ZRpKQ3JlYXRlIGFuIG9yZ2FuaXphdGlvbi4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qJndlYi52MS5lbnZpcm9ubWVudC5jcmVhdGVfb3JnYW5pemF0aW9uSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAigiIy92MS9lbnZpcm9ubWVudC9jcmVhdGVfb3JnYW5pemF0aW9uOgEqEskGChJVcGRhdGVPcmdhbml6YXRpb24SMC5idWNrZXRlZXIuZW52aXJvbm1lbnQuVXBkYXRlT3JnYW5pemF0aW9uUmVxdWVzdBoxLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5VcGRhdGVPcmdhbml6YXRpb25SZXNwb25zZSLNBZJBmwUKDE9yZ2FuaXphdGlvbhIGVXBkYXRlGkNVcGRhdGUgYW4gb3JnYW5pemF0aW9uLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKiZ3ZWIudjEuZW52aXJvbm1lbnQudXBkYXRlX29yZ2FuaXphdGlvbkq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIoIiMvdjEvZW52aXJvbm1lbnQvdXBkYXRlX29yZ2FuaXphdGlvbjoBKhLQBgoSRW5hYmxlT3JnYW5pemF0aW9uEjAuYnVja2V0ZWVyLmVudmlyb25tZW50LkVuYWJsZU9yZ2FuaXphdGlvblJlcXVlc3QaMS5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW5hYmxlT3JnYW5pemF0aW9uUmVzcG9uc2Ui1AWSQaIFCgxPcmdhbml6YXRpb24SBkVuYWJsZRpKRW5hYmxlIGFuIG9yZ2FuaXphdGlvbi4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYFNZU1RFTV9BRE1JTmAgcm9sZS4qJndlYi52MS5lbnZpcm9ubWVudC5lbmFibGVfb3JnYW5pemF0aW9uSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAigiIy92MS9lbnZpcm9ubWVudC9lbmFibGVfb3JnYW5pemF0aW9uOgEqEtcGChNEaXNhYmxlT3JnYW5pemF0aW9uEjEuYnVja2V0ZWVyLmVudmlyb25tZW50LkRpc2FibGVPcmdhbml6YXRpb25SZXF1ZXN0GjIuYnVja2V0ZWVyLmVudmlyb25tZW50LkRpc2FibGVPcmdhbml6YXRpb25SZXNwb25zZSLYBZJBpQUKDE9yZ2FuaXphdGlvbhIHRGlzYWJsZRpLRGlzYWJsZSBhbiBvcmdhbml6YXRpb24uIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKid3ZWIudjEuZW52aXJvbm1lbnQuZGlzYWJsZV9vcmdhbml6YXRpb25KtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCKSIkL3YxL2Vudmlyb25tZW50L2Rpc2FibGVfb3JnYW5pemF0aW9uOgEqEtcGChNBcmNoaXZlT3JnYW5pemF0aW9uEjEuYnVja2V0ZWVyLmVudmlyb25tZW50LkFyY2hpdmVPcmdhbml6YXRpb25SZXF1ZXN0GjIuYnVja2V0ZWVyLmVudmlyb25tZW50LkFyY2hpdmVPcmdhbml6YXRpb25SZXNwb25zZSLYBZJBpQUKDE9yZ2FuaXphdGlvbhIHQXJjaGl2ZRpLQXJjaGl2ZSBhbiBvcmdhbml6YXRpb24uIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKid3ZWIudjEuZW52aXJvbm1lbnQuYXJjaGl2ZV9vcmdhbml6YXRpb25KtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCKSIkL3YxL2Vudmlyb25tZW50L2FyY2hpdmVfb3JnYW5pemF0aW9uOgEqEuUGChVVbmFyY2hpdmVPcmdhbml6YXRpb24SMy5idWNrZXRlZXIuZW52aXJvbm1lbnQuVW5hcmNoaXZlT3JnYW5pemF0aW9uUmVxdWVzdBo0LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5VbmFyY2hpdmVPcmdhbml6YXRpb25SZXNwb25zZSLgBZJBqwUKDE9yZ2FuaXphdGlvbhIJVW5hcmNoaXZlGk1VbmFyY2hpdmUgYW4gb3JnYW5pemF0aW9uLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgU1lTVEVNX0FETUlOYCByb2xlLiopd2ViLnYxLmVudmlyb25tZW50LnVuYXJjaGl2ZV9vcmdhbml6YXRpb25KtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCKyImL3YxL2Vudmlyb25tZW50L3VuYXJjaGl2ZV9vcmdhbml6YXRpb246ASoSiwcKGENvbnZlcnRUcmlhbE9yZ2FuaXphdGlvbhI2LmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Db252ZXJ0VHJpYWxPcmdhbml6YXRpb25SZXF1ZXN0GjcuYnVja2V0ZWVyLmVudmlyb25tZW50LkNvbnZlcnRUcmlhbE9yZ2FuaXphdGlvblJlc3BvbnNlIv0FkkHEBQoMT3JnYW5pemF0aW9uEg1Db252ZXJ0IFRyaWFsGl5Db252ZXJ0IGEgdHJpYWwgb3JnYW5pemF0aW9uIHRvIGEgcGFpZCBvbmUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBTWVNURU1fQURNSU5gIHJvbGUuKi13ZWIudjEuZW52aXJvbm1lbnQuY29udmVydF90cmlhbF9vcmdhbml6YXRpb25KtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCLyIqL3YxL2Vudmlyb25tZW50L2NvbnZlcnRfdHJpYWxfb3JnYW5pemF0aW9uOgEqEuIGCg5MaXN0UHJvamVjdHNWMhIsLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5MaXN0UHJvamVjdHNWMlJlcXVlc3QaLS5idWNrZXRlZXIuZW52aXJvbm1lbnQuTGlzdFByb2plY3RzVjJSZXNwb25zZSLyBZJBxgUKB1Byb2plY3QSEExpc3QgUHJvamVjdHMgVjIabExpc3QgcHJvamVjdHMgd2l0aCBWMiBBUEkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGF0IGxlYXN0IGEgTUVNQkVSIHJvbGUgaW4gdGhlIHNwZWNpZmllZCBvcmdhbml6YXRpb25zLiojd2ViLnYxLmVudmlyb25tZW50Lmxpc3RfcHJvamVjdHNfdjJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCIhIgL3YxL2Vudmlyb25tZW50L2xpc3RfcHJvamVjdHNfdjJCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzM= experimentDescriptor: CqwHCh5wcm90by9leHBlcmltZW50L2NvbW1hbmQucHJvdG8SFGJ1Y2tldGVlci5leHBlcmltZW50IlkKEUNyZWF0ZUdvYWxDb21tYW5kEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiInChFSZW5hbWVHb2FsQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIkAKHENoYW5nZURlc2NyaXB0aW9uR29hbENvbW1hbmQSIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uIhQKEkFyY2hpdmVHb2FsQ29tbWFuZCITChFEZWxldGVHb2FsQ29tbWFuZCLvAQoXQ3JlYXRlRXhwZXJpbWVudENvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHN0YXJ0X2F0GAMgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYBCABKANSBnN0b3BBdBIZCghnb2FsX2lkcxgFIAMoCVIHZ29hbElkcxISCgRuYW1lGAYgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAcgASgJUgtkZXNjcmlwdGlvbhIqChFiYXNlX3ZhcmlhdGlvbl9pZBgIIAEoCVIPYmFzZVZhcmlhdGlvbklkSgQIAhADIlMKHUNoYW5nZUV4cGVyaW1lbnRQZXJpb2RDb21tYW5kEhkKCHN0YXJ0X2F0GAEgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYAiABKANSBnN0b3BBdCIxChtDaGFuZ2VFeHBlcmltZW50TmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSJGCiJDaGFuZ2VFeHBlcmltZW50RGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIXChVTdG9wRXhwZXJpbWVudENvbW1hbmQiGgoYQXJjaGl2ZUV4cGVyaW1lbnRDb21tYW5kIhkKF0RlbGV0ZUV4cGVyaW1lbnRDb21tYW5kIhgKFlN0YXJ0RXhwZXJpbWVudENvbW1hbmQiGQoXRmluaXNoRXhwZXJpbWVudENvbW1hbmRCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwrWAQodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlImcKCVZhcmlhdGlvbhIOCgJpZBgBIAEoCVICaWQSFAoFdmFsdWUYAiABKAlSBXZhbHVlEhIKBG5hbWUYAyABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKvAcKIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvItAFCgpFeHBlcmltZW50Eg4KAmlkGAEgASgJUgJpZBIbCgdnb2FsX2lkGAIgASgJQgIYAVIGZ29hbElkEh0KCmZlYXR1cmVfaWQYAyABKAlSCWZlYXR1cmVJZBInCg9mZWF0dXJlX3ZlcnNpb24YBCABKAVSDmZlYXR1cmVWZXJzaW9uEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSGQoIc3RhcnRfYXQYBiABKANSB3N0YXJ0QXQSFwoHc3RvcF9hdBgHIAEoA1IGc3RvcEF0EhwKB3N0b3BwZWQYCCABKAhCAhgBUgdzdG9wcGVkEiEKCnN0b3BwZWRfYXQYCSABKANCAjABUglzdG9wcGVkQXQSHQoKY3JlYXRlZF9hdBgKIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCyABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAwgASgIUgdkZWxldGVkEhkKCGdvYWxfaWRzGA0gAygJUgdnb2FsSWRzEhIKBG5hbWUYDiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YDyABKAlSC2Rlc2NyaXB0aW9uEioKEWJhc2VfdmFyaWF0aW9uX2lkGBAgASgJUg9iYXNlVmFyaWF0aW9uSWQSPwoGc3RhdHVzGBIgASgOMicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5TdGF0dXNSBnN0YXR1cxIeCgptYWludGFpbmVyGBMgASgJUgptYWludGFpbmVyEhoKCGFyY2hpdmVkGBQgASgIUghhcmNoaXZlZCJCCgZTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARILCgdTVE9QUEVEEAISEQoNRk9SQ0VfU1RPUFBFRBADSgQIERASIlEKC0V4cGVyaW1lbnRzEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHNCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwrdAgobcHJvdG8vZXhwZXJpbWVudC9nb2FsLnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudCLpAQoER29hbBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SGAoHZGVsZXRlZBgEIAEoCFIHZGVsZXRlZBIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0EicKEGlzX2luX3VzZV9zdGF0dXMYByABKAhSDWlzSW5Vc2VTdGF0dXMSGgoIYXJjaGl2ZWQYCCABKAhSCGFyY2hpdmVkQjRaMmdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50YgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqfMQoecHJvdG8vZXhwZXJpbWVudC9zZXJ2aWNlLnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGh5wcm90by9leHBlcmltZW50L2NvbW1hbmQucHJvdG8aG3Byb3RvL2V4cGVyaW1lbnQvZ29hbC5wcm90bxohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvIk0KDkdldEdvYWxSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJBCg9HZXRHb2FsUmVzcG9uc2USLgoEZ29hbBgBIAEoCzIaLmJ1Y2tldGVlci5leHBlcmltZW50LkdvYWxSBGdvYWwiqgQKEExpc3RHb2Fsc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RHb2Fsc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZXhwZXJpbWVudC5MaXN0R29hbHNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgGIAEoCVINc2VhcmNoS2V5d29yZBJDChBpc19pbl91c2Vfc3RhdHVzGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxI2CghhcmNoaXZlZBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEiUKDmVudmlyb25tZW50X2lkGAkgASgJUg1lbnZpcm9ubWVudElkIkAKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAMQBCJ+ChFMaXN0R29hbHNSZXNwb25zZRIwCgVnb2FscxgBIAMoCzIaLmJ1Y2tldGVlci5leHBlcmltZW50LkdvYWxSBWdvYWxzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IoMBChFDcmVhdGVHb2FsUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ3JlYXRlR29hbENvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiFAoSQ3JlYXRlR29hbFJlc3BvbnNlIpUBChJBcmNoaXZlR29hbFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbENvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFQoTQXJjaGl2ZUdvYWxSZXNwb25zZSKTAQoRRGVsZXRlR29hbFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkEKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZXhwZXJpbWVudC5EZWxldGVHb2FsQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIUChJEZWxldGVHb2FsUmVzcG9uc2UikgIKEVVwZGF0ZUdvYWxSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJOCg5yZW5hbWVfY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5leHBlcmltZW50LlJlbmFtZUdvYWxDb21tYW5kUg1yZW5hbWVDb21tYW5kEnAKGmNoYW5nZV9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjIuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ2hhbmdlRGVzY3JpcHRpb25Hb2FsQ29tbWFuZFIYY2hhbmdlRGVzY3JpcHRpb25Db21tYW5kEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIhQKElVwZGF0ZUdvYWxSZXNwb25zZSJTChRHZXRFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiWQoVR2V0RXhwZXJpbWVudFJlc3BvbnNlEkAKCmV4cGVyaW1lbnQYASABKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgpleHBlcmltZW50IpoGChZMaXN0RXhwZXJpbWVudHNSZXF1ZXN0Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBJECg9mZWF0dXJlX3ZlcnNpb24YAiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIOZmVhdHVyZVZlcnNpb24SEgoEZnJvbRgDIAEoA1IEZnJvbRIOCgJ0bxgEIAEoA1ICdG8SGwoJcGFnZV9zaXplGAUgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYBiABKAlSBmN1cnNvchIzCgZzdGF0dXMYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIGc3RhdHVzEh4KCm1haW50YWluZXIYCSABKAlSCm1haW50YWluZXISTwoIb3JkZXJfYnkYCiABKA4yNC5idWNrZXRlZXIuZXhwZXJpbWVudC5MaXN0RXhwZXJpbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZAoPb3JkZXJfZGlyZWN0aW9uGAsgASgOMjsuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYDCABKAlSDXNlYXJjaEtleXdvcmQSNgoIYXJjaGl2ZWQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghhcmNoaXZlZBJDCghzdGF0dXNlcxgOIAMoDjInLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnQuU3RhdHVzUghzdGF0dXNlcxIlCg5lbnZpcm9ubWVudF9pZBgPIAEoCVINZW52aXJvbm1lbnRJZCJACgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAyIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgHEAgilgEKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQijwEKF0NyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0EkcKB2NvbW1hbmQYASABKAsyLS5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJcChhDcmVhdGVFeHBlcmltZW50UmVzcG9uc2USQAoKZXhwZXJpbWVudBgBIAEoCzIgLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnRSCmV4cGVyaW1lbnQiuwMKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJ8CiBjaGFuZ2VfZXhwZXJpbWVudF9wZXJpb2RfY29tbWFuZBgFIAEoCzIzLmJ1Y2tldGVlci5leHBlcmltZW50LkNoYW5nZUV4cGVyaW1lbnRQZXJpb2RDb21tYW5kUh1jaGFuZ2VFeHBlcmltZW50UGVyaW9kQ29tbWFuZBJhChNjaGFuZ2VfbmFtZV9jb21tYW5kGAYgASgLMjEuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ2hhbmdlRXhwZXJpbWVudE5hbWVDb21tYW5kUhFjaGFuZ2VOYW1lQ29tbWFuZBJ2ChpjaGFuZ2VfZGVzY3JpcHRpb25fY29tbWFuZBgHIAEoCzI4LmJ1Y2tldGVlci5leHBlcmltZW50LkNoYW5nZUV4cGVyaW1lbnREZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgIIAEoCVINZW52aXJvbm1lbnRJZEoECAIQA0oECAMQBEoECAQQBSIaChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2UinQEKFlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEkYKB2NvbW1hbmQYAyABKAsyLC5idWNrZXRlZXIuZXhwZXJpbWVudC5TdGFydEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlIp8BChdGaW5pc2hFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgCIAEoCVICaWQSRwoHY29tbWFuZBgDIAEoCzItLmJ1Y2tldGVlci5leHBlcmltZW50LkZpbmlzaEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGEZpbmlzaEV4cGVyaW1lbnRSZXNwb25zZSKbAQoVU3RvcEV4cGVyaW1lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJFCgdjb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RvcEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhgKFlN0b3BFeHBlcmltZW50UmVzcG9uc2UioQEKGEFyY2hpdmVFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSAoHY29tbWFuZBgCIAEoCzIuLmJ1Y2tldGVlci5leHBlcmltZW50LkFyY2hpdmVFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIbChlBcmNoaXZlRXhwZXJpbWVudFJlc3BvbnNlIp8BChdEZWxldGVFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRwoHY29tbWFuZBgCIAEoCzItLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhoKGERlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZTLnDAoRRXhwZXJpbWVudFNlcnZpY2USWAoHR2V0R29hbBIkLmJ1Y2tldGVlci5leHBlcmltZW50LkdldEdvYWxSZXF1ZXN0GiUuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR2V0R29hbFJlc3BvbnNlIgASXgoJTGlzdEdvYWxzEiYuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEdvYWxzUmVxdWVzdBonLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RHb2Fsc1Jlc3BvbnNlIgASYQoKQ3JlYXRlR29hbBInLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUdvYWxSZXF1ZXN0GiguYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ3JlYXRlR29hbFJlc3BvbnNlIgASYQoKVXBkYXRlR29hbBInLmJ1Y2tldGVlci5leHBlcmltZW50LlVwZGF0ZUdvYWxSZXF1ZXN0GiguYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlR29hbFJlc3BvbnNlIgASZAoLQXJjaGl2ZUdvYWwSKC5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbFJlcXVlc3QaKS5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbFJlc3BvbnNlIgASYQoKRGVsZXRlR29hbBInLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUdvYWxSZXF1ZXN0GiguYnVja2V0ZWVyLmV4cGVyaW1lbnQuRGVsZXRlR29hbFJlc3BvbnNlIgASagoNR2V0RXhwZXJpbWVudBIqLmJ1Y2tldGVlci5leHBlcmltZW50LkdldEV4cGVyaW1lbnRSZXF1ZXN0GisuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR2V0RXhwZXJpbWVudFJlc3BvbnNlIgAScAoPTGlzdEV4cGVyaW1lbnRzEiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBotLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlIgAScwoQQ3JlYXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlIgAScwoQVXBkYXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlIgAScAoPU3RhcnRFeHBlcmltZW50EiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RhcnRFeHBlcmltZW50UmVxdWVzdBotLmJ1Y2tldGVlci5leHBlcmltZW50LlN0YXJ0RXhwZXJpbWVudFJlc3BvbnNlIgAScwoQRmluaXNoRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LkZpbmlzaEV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRmluaXNoRXhwZXJpbWVudFJlc3BvbnNlIgASbQoOU3RvcEV4cGVyaW1lbnQSKy5idWNrZXRlZXIuZXhwZXJpbWVudC5TdG9wRXhwZXJpbWVudFJlcXVlc3QaLC5idWNrZXRlZXIuZXhwZXJpbWVudC5TdG9wRXhwZXJpbWVudFJlc3BvbnNlIgASdgoRQXJjaGl2ZUV4cGVyaW1lbnQSLi5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlRXhwZXJpbWVudFJlcXVlc3QaLy5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlRXhwZXJpbWVudFJlc3BvbnNlIgAScwoQRGVsZXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlIgBCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMw== - featureDescriptor: CscDChpwcm90by9mZWF0dXJlL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUi2gIKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSHAoJYXR0cmlidXRlGAIgASgJUglhdHRyaWJ1dGUSPgoIb3BlcmF0b3IYAyABKA4yIi5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2UuT3BlcmF0b3JSCG9wZXJhdG9yEhYKBnZhbHVlcxgEIAMoCVIGdmFsdWVzIskBCghPcGVyYXRvchIKCgZFUVVBTFMQABIGCgJJThABEg0KCUVORFNfV0lUSBACEg8KC1NUQVJUU19XSVRIEAMSCwoHU0VHTUVOVBAEEgsKB0dSRUFURVIQBRIUChBHUkVBVEVSX09SX0VRVUFMEAYSCAoETEVTUxAHEhEKDUxFU1NfT1JfRVFVQUwQCBIKCgZCRUZPUkUQCRIJCgVBRlRFUhAKEhAKDEZFQVRVUkVfRkxBRxALEhMKD1BBUlRJQUxMWV9NQVRDSBAMQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5AEKGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiI2CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVlQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKoAUKIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSKtBAoLRmxhZ1RyaWdnZXISDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SIwoNdHJpZ2dlcl9jb3VudBgHIAEoBVIMdHJpZ2dlckNvdW50EioKEWxhc3RfdHJpZ2dlcmVkX2F0GAggASgDUg9sYXN0VHJpZ2dlcmVkQXQSFAoFdG9rZW4YCSABKAlSBXRva2VuEhoKCGRpc2FibGVkGAogASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAsgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgMIAEoA1IJdXBkYXRlZEF0EiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIioKBFR5cGUSEAoMVHlwZV9VTktOT1dOEAASEAoMVHlwZV9XRUJIT09LEAEiOwoGQWN0aW9uEhIKDkFjdGlvbl9VTktOT1dOEAASDQoJQWN0aW9uX09OEAESDgoKQWN0aW9uX09GRhACSgQIAxAEQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKwCMKG3Byb3RvL2ZlYXR1cmUvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8iOQoHQ29tbWFuZBIuCgdjb21tYW5kGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIHY29tbWFuZCK1AwoUQ3JlYXRlRmVhdHVyZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSEgoEdGFncxgFIAMoCVIEdGFncxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlIhcKFUFyY2hpdmVGZWF0dXJlQ29tbWFuZCIZChdVbmFyY2hpdmVGZWF0dXJlQ29tbWFuZCIWChREZWxldGVGZWF0dXJlQ29tbWFuZCIqChRSZW5hbWVGZWF0dXJlQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIjwKGENoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iuAEKKUNoYW5nZUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNTdGF0dXNDb21tYW5kEjkKBnN0YXR1cxgBIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYAyABKANSBWNvdW50IiEKDUFkZFRhZ0NvbW1hbmQSEAoDdGFnGAEgASgJUgN0YWciJAoQUmVtb3ZlVGFnQ29tbWFuZBIQCgN0YWcYASABKAlSA3RhZyIWChRFbmFibGVGZWF0dXJlQ29tbWFuZCIXChVEaXNhYmxlRmVhdHVyZUNvbW1hbmQiYQoTQWRkVmFyaWF0aW9uQ29tbWFuZBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24iKAoWUmVtb3ZlVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiQwobQ2hhbmdlVmFyaWF0aW9uVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUiQAoaQ2hhbmdlVmFyaWF0aW9uTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohQ2hhbmdlVmFyaWF0aW9uRGVzY3JpcHRpb25Db21tYW5kEg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iKwoZQ2hhbmdlT2ZmVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiPwoZQWRkVXNlclRvVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEdXNlchgCIAEoCVIEdXNlciJECh5SZW1vdmVVc2VyRnJvbVZhcmlhdGlvbkNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBHVzZXIYAiABKAlSBHVzZXIiVwocQ2hhbmdlRGVmYXVsdFN0cmF0ZWd5Q29tbWFuZBI3CghzdHJhdGVneRgBIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI9Cg5BZGRSdWxlQ29tbWFuZBIrCgRydWxlGAEgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJ9ChlDaGFuZ2VSdWxlU3RyYXRlZ3lDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiNAoXQ2hhbmdlUnVsZXNPcmRlckNvbW1hbmQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiIwoRRGVsZXRlUnVsZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkIl4KEEFkZENsYXVzZUNvbW1hbmQSFwoHcnVsZV9pZBgBIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgCIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlIj4KE0RlbGV0ZUNsYXVzZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJlChxDaGFuZ2VDbGF1c2VBdHRyaWJ1dGVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSHAoJYXR0cmlidXRlGAMgASgJUglhdHRyaWJ1dGUihgEKG0NoYW5nZUNsYXVzZU9wZXJhdG9yQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJWChVBZGRDbGF1c2VWYWx1ZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIUCgV2YWx1ZRgDIAEoCVIFdmFsdWUiWQoYUmVtb3ZlQ2xhdXNlVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIoMBChpDaGFuZ2VGaXhlZFN0cmF0ZWd5Q29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjwKCHN0cmF0ZWd5GAMgASgLMiAuYnVja2V0ZWVyLmZlYXR1cmUuRml4ZWRTdHJhdGVneVIIc3RyYXRlZ3kihwEKHENoYW5nZVJvbGxvdXRTdHJhdGVneUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI+CghzdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIIc3RyYXRlZ3kiTAoUQ3JlYXRlU2VnbWVudENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iFgoURGVsZXRlU2VnbWVudENvbW1hbmQiLgoYQ2hhbmdlU2VnbWVudE5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQwofQ2hhbmdlU2VnbWVudERlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24ibgoVQWRkU2VnbWVudFVzZXJDb21tYW5kEhkKCHVzZXJfaWRzGAEgAygJUgd1c2VySWRzEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlInEKGERlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZBIZCgh1c2VyX2lkcxgBIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgCIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSJvCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZBISCgRkYXRhGAEgASgMUgRkYXRhEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIiAKHkluY3JlbWVudEZlYXR1cmVWZXJzaW9uQ29tbWFuZCJCChNDbG9uZUZlYXR1cmVDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGFJlc2V0U2FtcGxpbmdTZWVkQ29tbWFuZCJdChZBZGRQcmVyZXF1aXNpdGVDb21tYW5kEkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjoKGVJlbW92ZVByZXJlcXVpc2l0ZUNvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkImkKIkNoYW5nZVByZXJlcXVpc2l0ZVZhcmlhdGlvbkNvbW1hbmQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUi0wEKGENyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgCIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAMgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uIhkKF1Jlc2V0RmxhZ1RyaWdnZXJDb21tYW5kIkcKI0NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIaChhFbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQiGwoZRGlzYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZCIaChhEZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQiHwodVXBkYXRlRmxhZ1RyaWdnZXJVc2FnZUNvbW1hbmRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqeAgoacHJvdG8vZmVhdHVyZS9yZWFzb24ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIrEBCgZSZWFzb24SMgoEdHlwZRgBIAEoDjIeLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvbi5UeXBlUgR0eXBlEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJaCgRUeXBlEgoKBlRBUkdFVBAAEggKBFJVTEUQARILCgdERUZBVUxUEAMSCgoGQ0xJRU5UEAQSEQoNT0ZGX1ZBUklBVElPThAFEhAKDFBSRVJFUVVJU0lURRAGQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKmAYKHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90byLjAgoKRXZhbHVhdGlvbhIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SFwoHdXNlcl9pZBgEIAEoCVIGdXNlcklkEiEKDHZhcmlhdGlvbl9pZBgFIAEoCVILdmFyaWF0aW9uSWQSPgoJdmFyaWF0aW9uGAYgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uQgIYAVIJdmFyaWF0aW9uEjEKBnJlYXNvbhgHIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvblIGcmVhc29uEicKD3ZhcmlhdGlvbl92YWx1ZRgIIAEoCVIOdmFyaWF0aW9uVmFsdWUSJQoOdmFyaWF0aW9uX25hbWUYCSABKAlSDXZhcmlhdGlvbk5hbWUihgIKD1VzZXJFdmFsdWF0aW9ucxISCgJpZBgBIAEoCUICGAFSAmlkEj8KC2V2YWx1YXRpb25zGAIgAygLMh0uYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGlvblILZXZhbHVhdGlvbnMSHQoKY3JlYXRlZF9hdBgDIAEoA1IJY3JlYXRlZEF0EjAKFGFyY2hpdmVkX2ZlYXR1cmVfaWRzGAQgAygJUhJhcmNoaXZlZEZlYXR1cmVJZHMSIQoMZm9yY2VfdXBkYXRlGAUgASgIUgtmb3JjZVVwZGF0ZSIqCgVTdGF0ZRIKCgZRVUVVRUQQABILCgdQQVJUSUFMEAESCAoERlVMTBACQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKhwUKFWdvb2dsZS9hcGkvaHR0cC5wcm90bxIKZ29vZ2xlLmFwaSJ5CgRIdHRwEioKBXJ1bGVzGAEgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIFcnVsZXMSRQofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCFIcZnVsbHlEZWNvZGVSZXNlcnZlZEV4cGFuc2lvbiK1AgoISHR0cFJ1bGUSGgoIc2VsZWN0b3IYASABKAlSCHNlbGVjdG9yEhIKA2dldBgCIAEoCUgAUgNnZXQSEgoDcHV0GAMgASgJSABSA3B1dBIUCgRwb3N0GAQgASgJSABSBHBvc3QSGAoGZGVsZXRlGAUgASgJSABSBmRlbGV0ZRIWCgVwYXRjaBgGIAEoCUgAUgVwYXRjaBI3CgZjdXN0b20YCCABKAsyHS5nb29nbGUuYXBpLkN1c3RvbUh0dHBQYXR0ZXJuSABSBmN1c3RvbRISCgRib2R5GAcgASgJUgRib2R5EkUKE2FkZGl0aW9uYWxfYmluZGluZ3MYCyADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUhJhZGRpdGlvbmFsQmluZGluZ3NCCQoHcGF0dGVybiI7ChFDdXN0b21IdHRwUGF0dGVybhISCgRraW5kGAEgASgJUgRraW5kEhIKBHBhdGgYAiABKAlSBHBhdGhCagoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc/gBAaICBEdBUEliBnByb3RvMwrhRgogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiJNChFGaWxlRGVzY3JpcHRvclNldBI4CgRmaWxlGAEgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9SBGZpbGUi/gQKE0ZpbGVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgdwYWNrYWdlGAIgASgJUgdwYWNrYWdlEh4KCmRlcGVuZGVuY3kYAyADKAlSCmRlcGVuZGVuY3kSKwoRcHVibGljX2RlcGVuZGVuY3kYCiADKAVSEHB1YmxpY0RlcGVuZGVuY3kSJwoPd2Vha19kZXBlbmRlbmN5GAsgAygFUg53ZWFrRGVwZW5kZW5jeRJDCgxtZXNzYWdlX3R5cGUYBCADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgttZXNzYWdlVHlwZRJBCgllbnVtX3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSQQoHc2VydmljZRgGIAMoCzInLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlRGVzY3JpcHRvclByb3RvUgdzZXJ2aWNlEkMKCWV4dGVuc2lvbhgHIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEjYKB29wdGlvbnMYCCABKAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnNSB29wdGlvbnMSSQoQc291cmNlX2NvZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mb1IOc291cmNlQ29kZUluZm8SFgoGc3ludGF4GAwgASgJUgZzeW50YXgSGAoHZWRpdGlvbhgNIAEoCVIHZWRpdGlvbiK5BgoPRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSOwoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SBWZpZWxkEkMKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEkEKC25lc3RlZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1IKbmVzdGVkVHlwZRJBCgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSWAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZVIOZXh0ZW5zaW9uUmFuZ2USRAoKb25lb2ZfZGVjbBgIIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5PbmVvZkRlc2NyaXB0b3JQcm90b1IJb25lb2ZEZWNsEjkKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnNSB29wdGlvbnMSVQoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgKIAMoCVIMcmVzZXJ2ZWROYW1lGnoKDkV4dGVuc2lvblJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZBJACgdvcHRpb25zGAMgASgLMiYuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9uc1IHb3B0aW9ucxo3Cg1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKtBAoVRXh0ZW5zaW9uUmFuZ2VPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uElkKC2RlY2xhcmF0aW9uGAIgAygLMjIuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5EZWNsYXJhdGlvbkIDiAECUgtkZWNsYXJhdGlvbhJoCgx2ZXJpZmljYXRpb24YAyABKA4yOC5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLlZlcmlmaWNhdGlvblN0YXRlOgpVTlZFUklGSUVEUgx2ZXJpZmljYXRpb24aswEKC0RlY2xhcmF0aW9uEhYKBm51bWJlchgBIAEoBVIGbnVtYmVyEhsKCWZ1bGxfbmFtZRgCIAEoCVIIZnVsbE5hbWUSEgoEdHlwZRgDIAEoCVIEdHlwZRIjCgtpc19yZXBlYXRlZBgEIAEoCEICGAFSCmlzUmVwZWF0ZWQSGgoIcmVzZXJ2ZWQYBSABKAhSCHJlc2VydmVkEhoKCHJlcGVhdGVkGAYgASgIUghyZXBlYXRlZCI0ChFWZXJpZmljYXRpb25TdGF0ZRIPCgtERUNMQVJBVElPThAAEg4KClVOVkVSSUZJRUQQASoJCOgHEICAgIACIsEGChRGaWVsZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgDIAEoBVIGbnVtYmVyEkEKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsUgVsYWJlbBI+CgR0eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGVSBHR5cGUSGwoJdHlwZV9uYW1lGAYgASgJUgh0eXBlTmFtZRIaCghleHRlbmRlZRgCIAEoCVIIZXh0ZW5kZWUSIwoNZGVmYXVsdF92YWx1ZRgHIAEoCVIMZGVmYXVsdFZhbHVlEh8KC29uZW9mX2luZGV4GAkgASgFUgpvbmVvZkluZGV4EhsKCWpzb25fbmFtZRgKIAEoCVIIanNvbk5hbWUSNwoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnNSB29wdGlvbnMSJwoPcHJvdG8zX29wdGlvbmFsGBEgASgIUg5wcm90bzNPcHRpb25hbCK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIiQwoFTGFiZWwSEgoOTEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVFVSVJFRBACEhIKDkxBQkVMX1JFUEVBVEVEEAMiYwoUT25lb2ZEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI3CgdvcHRpb25zGAIgASgLMh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9uc1IHb3B0aW9ucyLjAgoTRW51bURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj8KBXZhbHVlGAIgAygLMikuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZURlc2NyaXB0b3JQcm90b1IFdmFsdWUSNgoHb3B0aW9ucxgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9uc1IHb3B0aW9ucxJdCg5yZXNlcnZlZF9yYW5nZRgEIAMoCzI2Lmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvLkVudW1SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYBSADKAlSDHJlc2VydmVkTmFtZRo7ChFFbnVtUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQigwEKGEVudW1WYWx1ZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgCIAEoBVIGbnVtYmVyEjsKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9uc1IHb3B0aW9ucyKnAQoWU2VydmljZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj4KBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG9SBm1ldGhvZBI5CgdvcHRpb25zGAMgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zUgdvcHRpb25zIokCChVNZXRob2REZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIdCgppbnB1dF90eXBlGAIgASgJUglpbnB1dFR5cGUSHwoLb3V0cHV0X3R5cGUYAyABKAlSCm91dHB1dFR5cGUSOAoHb3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zUgdvcHRpb25zEjAKEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlUg9jbGllbnRTdHJlYW1pbmcSMAoQc2VydmVyX3N0cmVhbWluZxgGIAEoCDoFZmFsc2VSD3NlcnZlclN0cmVhbWluZyKRCQoLRmlsZU9wdGlvbnMSIQoMamF2YV9wYWNrYWdlGAEgASgJUgtqYXZhUGFja2FnZRIwChRqYXZhX291dGVyX2NsYXNzbmFtZRgIIAEoCVISamF2YU91dGVyQ2xhc3NuYW1lEjUKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlUhFqYXZhTXVsdGlwbGVGaWxlcxJECh1qYXZhX2dlbmVyYXRlX2VxdWFsc19hbmRfaGFzaBgUIAEoCEICGAFSGWphdmFHZW5lcmF0ZUVxdWFsc0FuZEhhc2gSOgoWamF2YV9zdHJpbmdfY2hlY2tfdXRmOBgbIAEoCDoFZmFsc2VSE2phdmFTdHJpbmdDaGVja1V0ZjgSUwoMb3B0aW1pemVfZm9yGAkgASgOMikuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zLk9wdGltaXplTW9kZToFU1BFRURSC29wdGltaXplRm9yEh0KCmdvX3BhY2thZ2UYCyABKAlSCWdvUGFja2FnZRI1ChNjY19nZW5lcmljX3NlcnZpY2VzGBAgASgIOgVmYWxzZVIRY2NHZW5lcmljU2VydmljZXMSOQoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgVmYWxzZVITamF2YUdlbmVyaWNTZXJ2aWNlcxI1ChNweV9nZW5lcmljX3NlcnZpY2VzGBIgASgIOgVmYWxzZVIRcHlHZW5lcmljU2VydmljZXMSNwoUcGhwX2dlbmVyaWNfc2VydmljZXMYKiABKAg6BWZhbHNlUhJwaHBHZW5lcmljU2VydmljZXMSJQoKZGVwcmVjYXRlZBgXIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSLgoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoEdHJ1ZVIOY2NFbmFibGVBcmVuYXMSKgoRb2JqY19jbGFzc19wcmVmaXgYJCABKAlSD29iamNDbGFzc1ByZWZpeBIpChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJUg9jc2hhcnBOYW1lc3BhY2USIQoMc3dpZnRfcHJlZml4GCcgASgJUgtzd2lmdFByZWZpeBIoChBwaHBfY2xhc3NfcHJlZml4GCggASgJUg5waHBDbGFzc1ByZWZpeBIjCg1waHBfbmFtZXNwYWNlGCkgASgJUgxwaHBOYW1lc3BhY2USNAoWcGhwX21ldGFkYXRhX25hbWVzcGFjZRgsIAEoCVIUcGhwTWV0YWRhdGFOYW1lc3BhY2USIQoMcnVieV9wYWNrYWdlGC0gASgJUgtydWJ5UGFja2FnZRJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJTUUQAyoJCOgHEICAgIACSgQIJhAnIrsDCg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50cnkSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYCyABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgEEAVKBAgFEAZKBAgGEAdKBAgIEAlKBAgJEAoihQkKDEZpZWxkT3B0aW9ucxJBCgVjdHlwZRgBIAEoDjIjLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuQ1R5cGU6BlNUUklOR1IFY3R5cGUSFgoGcGFja2VkGAIgASgIUgZwYWNrZWQSRwoGanN0eXBlGAYgASgOMiQuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5KU1R5cGU6CUpTX05PUk1BTFIGanN0eXBlEhkKBGxhenkYBSABKAg6BWZhbHNlUgRsYXp5Ei4KD3VudmVyaWZpZWRfbGF6eRgPIAEoCDoFZmFsc2VSDnVudmVyaWZpZWRMYXp5EiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhkKBHdlYWsYCiABKAg6BWZhbHNlUgR3ZWFrEigKDGRlYnVnX3JlZGFjdBgQIAEoCDoFZmFsc2VSC2RlYnVnUmVkYWN0EksKCXJldGVudGlvbhgRIAEoDjItLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uUmV0ZW50aW9uUglyZXRlbnRpb24SSgoGdGFyZ2V0GBIgASgOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlQgIYAVIGdGFyZ2V0EkgKB3RhcmdldHMYEyADKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVSB3RhcmdldHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglKU19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAiJVCg9PcHRpb25SZXRlbnRpb24SFQoRUkVURU5USU9OX1VOS05PV04QABIVChFSRVRFTlRJT05fUlVOVElNRRABEhQKEFJFVEVOVElPTl9TT1VSQ0UQAiKMAgoQT3B0aW9uVGFyZ2V0VHlwZRIXChNUQVJHRVRfVFlQRV9VTktOT1dOEAASFAoQVEFSR0VUX1RZUEVfRklMRRABEh8KG1RBUkdFVF9UWVBFX0VYVEVOU0lPTl9SQU5HRRACEhcKE1RBUkdFVF9UWVBFX01FU1NBR0UQAxIVChFUQVJHRVRfVFlQRV9GSUVMRBAEEhUKEVRBUkdFVF9UWVBFX09ORU9GEAUSFAoQVEFSR0VUX1RZUEVfRU5VTRAGEhoKFlRBUkdFVF9UWVBFX0VOVU1fRU5UUlkQBxIXChNUQVJHRVRfVFlQRV9TRVJWSUNFEAgSFgoSVEFSR0VUX1RZUEVfTUVUSE9EEAkqCQjoBxCAgICAAkoECAQQBSJzCgxPbmVvZk9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKYAgoLRW51bU9wdGlvbnMSHwoLYWxsb3dfYWxpYXMYAiABKAhSCmFsbG93QWxpYXMSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYBiABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgFEAYingEKEEVudW1WYWx1ZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBgBIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKcAQoOU2VydmljZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiLgAgoNTWV0aG9kT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJxChFpZGVtcG90ZW5jeV9sZXZlbBgiIAEoDjIvLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zLklkZW1wb3RlbmN5TGV2ZWw6E0lERU1QT1RFTkNZX1VOS05PV05SEGlkZW1wb3RlbmN5TGV2ZWwSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iUAoQSWRlbXBvdGVuY3lMZXZlbBIXChNJREVNUE9URU5DWV9VTktOT1dOEAASEwoPTk9fU0lERV9FRkZFQ1RTEAESDgoKSURFTVBPVEVOVBACKgkI6AcQgICAgAIimgMKE1VuaW50ZXJwcmV0ZWRPcHRpb24SQQoEbmFtZRgCIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQYXJ0UgRuYW1lEikKEGlkZW50aWZpZXJfdmFsdWUYAyABKAlSD2lkZW50aWZpZXJWYWx1ZRIsChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKARSEHBvc2l0aXZlSW50VmFsdWUSLAoSbmVnYXRpdmVfaW50X3ZhbHVlGAUgASgDUhBuZWdhdGl2ZUludFZhbHVlEiEKDGRvdWJsZV92YWx1ZRgGIAEoAVILZG91YmxlVmFsdWUSIQoMc3RyaW5nX3ZhbHVlGAcgASgMUgtzdHJpbmdWYWx1ZRInCg9hZ2dyZWdhdGVfdmFsdWUYCCABKAlSDmFnZ3JlZ2F0ZVZhbHVlGkoKCE5hbWVQYXJ0EhsKCW5hbWVfcGFydBgBIAIoCVIIbmFtZVBhcnQSIQoMaXNfZXh0ZW5zaW9uGAIgAigIUgtpc0V4dGVuc2lvbiKnAgoOU291cmNlQ29kZUluZm8SRAoIbG9jYXRpb24YASADKAsyKC5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm8uTG9jYXRpb25SCGxvY2F0aW9uGs4BCghMb2NhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIWCgRzcGFuGAIgAygFQgIQAVIEc3BhbhIpChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJUg9sZWFkaW5nQ29tbWVudHMSKwoRdHJhaWxpbmdfY29tbWVudHMYBCABKAlSEHRyYWlsaW5nQ29tbWVudHMSOgoZbGVhZGluZ19kZXRhY2hlZF9jb21tZW50cxgGIAMoCVIXbGVhZGluZ0RldGFjaGVkQ29tbWVudHMi0AIKEUdlbmVyYXRlZENvZGVJbmZvEk0KCmFubm90YXRpb24YASADKAsyLS5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvblIKYW5ub3RhdGlvbhrrAQoKQW5ub3RhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIfCgtzb3VyY2VfZmlsZRgCIAEoCVIKc291cmNlRmlsZRIUCgViZWdpbhgDIAEoBVIFYmVnaW4SEAoDZW5kGAQgASgFUgNlbmQSUgoIc2VtYW50aWMYBSABKA4yNi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvbi5TZW1hbnRpY1IIc2VtYW50aWMiKAoIU2VtYW50aWMSCAoETk9ORRAAEgcKA1NFVBABEgkKBUFMSUFTEAJCfgoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gBWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9kZXNjcmlwdG9ycGL4AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbgqoAgocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxIKZ29vZ2xlLmFwaRoVZ29vZ2xlL2FwaS9odHRwLnByb3RvGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpLCgRodHRwEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYsMq8IiABKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgRodHRwQm4KDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK4gUKHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiKYAQoGU3RydWN0EjsKBmZpZWxkcxgBIAMoCzIjLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QuRmllbGRzRW50cnlSBmZpZWxkcxpRCgtGaWVsZHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIrICCgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZUgAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCWJvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5kIjsKCUxpc3RWYWx1ZRIuCgZ2YWx1ZXMYASADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnZhbHVlcyobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKpj4KLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90byKzCAoHU3dhZ2dlchIYCgdzd2FnZ2VyGAEgASgJUgdzd2FnZ2VyEkMKBGluZm8YAiABKAsyLy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvUgRpbmZvEhIKBGhvc3QYAyABKAlSBGhvc3QSGwoJYmFzZV9wYXRoGAQgASgJUghiYXNlUGF0aBJLCgdzY2hlbWVzGAUgAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSXwoJcmVzcG9uc2VzGAogAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEnEKFHNlY3VyaXR5X2RlZmluaXRpb25zGAsgASgLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9uc1ITc2VjdXJpdHlEZWZpbml0aW9ucxJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EkIKBHRhZ3MYDSADKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSBHRhZ3MSZQoNZXh0ZXJuYWxfZG9jcxgOIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEmIKCmV4dGVuc2lvbnMYDyADKAsyQi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAlKBAgJEAoi1gcKCU9wZXJhdGlvbhISCgR0YWdzGAEgAygJUgR0YWdzEhgKB3N1bW1hcnkYAiABKAlSB3N1bW1hcnkSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYBCABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIhCgxvcGVyYXRpb25faWQYBSABKAlSC29wZXJhdGlvbklkEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSYQoJcmVzcG9uc2VzGAkgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMSSwoHc2NoZW1lcxgKIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIeCgpkZXByZWNhdGVkGAsgASgIUgpkZXByZWNhdGVkEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSZAoKZXh0ZW5zaW9ucxgNIAMoCzJELmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMSVQoKcGFyYW1ldGVycxgOIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlBhcmFtZXRlcnNSCnBhcmFtZXRlcnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJImIKClBhcmFtZXRlcnMSVAoHaGVhZGVycxgBIAMoCzI6LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlclIHaGVhZGVycyKjAgoPSGVhZGVyUGFyYW1ldGVyEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uElMKBHR5cGUYAyABKA4yPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXIuVHlwZVIEdHlwZRIWCgZmb3JtYXQYBCABKAlSBmZvcm1hdBIaCghyZXF1aXJlZBgFIAEoCFIIcmVxdWlyZWQiRQoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RSSU5HEAESCgoGTlVNQkVSEAISCwoHSU5URUdFUhADEgsKB0JPT0xFQU4QBEoECAYQB0oECAcQCCLYAQoGSGVhZGVyEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhISCgR0eXBlGAIgASgJUgR0eXBlEhYKBmZvcm1hdBgDIAEoCVIGZm9ybWF0EhgKB2RlZmF1bHQYBiABKAlSB2RlZmF1bHQSGAoHcGF0dGVybhgNIAEoCVIHcGF0dGVybkoECAQQBUoECAUQBkoECAcQCEoECAgQCUoECAkQCkoECAoQC0oECAsQDEoECAwQDUoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQEyKaBQoIUmVzcG9uc2USIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEkkKBnNjaGVtYRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIGc2NoZW1hEloKB2hlYWRlcnMYAyADKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5IZWFkZXJzRW50cnlSB2hlYWRlcnMSXQoIZXhhbXBsZXMYBCADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeGFtcGxlc0VudHJ5UghleGFtcGxlcxJjCgpleHRlbnNpb25zGAUgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGm0KDEhlYWRlcnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJHCgV2YWx1ZRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclIFdmFsdWU6AjgBGjsKDUV4YW1wbGVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLWAwoESW5mbxIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEigKEHRlcm1zX29mX3NlcnZpY2UYAyABKAlSDnRlcm1zT2ZTZXJ2aWNlEkwKB2NvbnRhY3QYBCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Db250YWN0Ugdjb250YWN0EkwKB2xpY2Vuc2UYBSABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5MaWNlbnNlUgdsaWNlbnNlEhgKB3ZlcnNpb24YBiABKAlSB3ZlcnNpb24SXwoKZXh0ZW5zaW9ucxgHIAMoCzI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm8uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIkUKB0NvbnRhY3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybBIUCgVlbWFpbBgDIAEoCVIFZW1haWwiLwoHTGljZW5zZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsIksKFUV4dGVybmFsRG9jdW1lbnRhdGlvbhIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEAoDdXJsGAIgASgJUgN1cmwiqgIKBlNjaGVtYRJWCgtqc29uX3NjaGVtYRgBIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSCmpzb25TY2hlbWESJAoNZGlzY3JpbWluYXRvchgCIAEoCVINZGlzY3JpbWluYXRvchIbCglyZWFkX29ubHkYAyABKAhSCHJlYWRPbmx5EmUKDWV4dGVybmFsX2RvY3MYBSABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIYCgdleGFtcGxlGAYgASgJUgdleGFtcGxlSgQIBBAFItcKCgpKU09OU2NoZW1hEhAKA3JlZhgDIAEoCVIDcmVmEhQKBXRpdGxlGAUgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SGAoHZGVmYXVsdBgHIAEoCVIHZGVmYXVsdBIbCglyZWFkX29ubHkYCCABKAhSCHJlYWRPbmx5EhgKB2V4YW1wbGUYCSABKAlSB2V4YW1wbGUSHwoLbXVsdGlwbGVfb2YYCiABKAFSCm11bHRpcGxlT2YSGAoHbWF4aW11bRgLIAEoAVIHbWF4aW11bRIrChFleGNsdXNpdmVfbWF4aW11bRgMIAEoCFIQZXhjbHVzaXZlTWF4aW11bRIYCgdtaW5pbXVtGA0gASgBUgdtaW5pbXVtEisKEWV4Y2x1c2l2ZV9taW5pbXVtGA4gASgIUhBleGNsdXNpdmVNaW5pbXVtEh0KCm1heF9sZW5ndGgYDyABKARSCW1heExlbmd0aBIdCgptaW5fbGVuZ3RoGBAgASgEUgltaW5MZW5ndGgSGAoHcGF0dGVybhgRIAEoCVIHcGF0dGVybhIbCgltYXhfaXRlbXMYFCABKARSCG1heEl0ZW1zEhsKCW1pbl9pdGVtcxgVIAEoBFIIbWluSXRlbXMSIQoMdW5pcXVlX2l0ZW1zGBYgASgIUgt1bmlxdWVJdGVtcxIlCg5tYXhfcHJvcGVydGllcxgYIAEoBFINbWF4UHJvcGVydGllcxIlCg5taW5fcHJvcGVydGllcxgZIAEoBFINbWluUHJvcGVydGllcxIaCghyZXF1aXJlZBgaIAMoCVIIcmVxdWlyZWQSFAoFYXJyYXkYIiADKAlSBWFycmF5El8KBHR5cGUYIyADKA4ySy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkpTT05TY2hlbWFTaW1wbGVUeXBlc1IEdHlwZRIWCgZmb3JtYXQYJCABKAlSBmZvcm1hdBISCgRlbnVtGC4gAygJUgRlbnVtEnoKE2ZpZWxkX2NvbmZpZ3VyYXRpb24Y6QcgASgLMkguZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5GaWVsZENvbmZpZ3VyYXRpb25SEmZpZWxkQ29uZmlndXJhdGlvbhJlCgpleHRlbnNpb25zGDAgAygLMkUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaPAoSRmllbGRDb25maWd1cmF0aW9uEiYKD3BhdGhfcGFyYW1fbmFtZRgvIAEoCVINcGF0aFBhcmFtTmFtZRpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJ3ChVKU09OU2NoZW1hU2ltcGxlVHlwZXMSCwoHVU5LTk9XThAAEgkKBUFSUkFZEAESCwoHQk9PTEVBThACEgsKB0lOVEVHRVIQAxIICgROVUxMEAQSCgoGTlVNQkVSEAUSCgoGT0JKRUNUEAYSCgoGU1RSSU5HEAdKBAgBEAJKBAgCEANKBAgEEAVKBAgSEBNKBAgTEBRKBAgXEBhKBAgbEBxKBAgcEB1KBAgdEB5KBAgeECJKBAglECpKBAgqECtKBAgrEC4i2QIKA1RhZxISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAMgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSXgoKZXh0ZW5zaW9ucxgEIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZy5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi9wEKE1NlY3VyaXR5RGVmaW5pdGlvbnMSaAoIc2VjdXJpdHkYASADKAsyTC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zLlNlY3VyaXR5RW50cnlSCHNlY3VyaXR5GnYKDVNlY3VyaXR5RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSTwoFdmFsdWUYAiABKAsyOS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZVIFdmFsdWU6AjgBIv8GCg5TZWN1cml0eVNjaGVtZRJSCgR0eXBlGAEgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuVHlwZVIEdHlwZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEbmFtZRgDIAEoCVIEbmFtZRJMCgJpbhgEIAEoDjI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkluUgJpbhJSCgRmbG93GAUgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRmxvd1IEZmxvdxIrChFhdXRob3JpemF0aW9uX3VybBgGIAEoCVIQYXV0aG9yaXphdGlvblVybBIbCgl0b2tlbl91cmwYByABKAlSCHRva2VuVXJsEkkKBnNjb3BlcxgIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blc1IGc2NvcGVzEmkKCmV4dGVuc2lvbnMYCSADKAsySS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiSwoEVHlwZRIQCgxUWVBFX0lOVkFMSUQQABIOCgpUWVBFX0JBU0lDEAESEAoMVFlQRV9BUElfS0VZEAISDwoLVFlQRV9PQVVUSDIQAyIxCgJJbhIOCgpJTl9JTlZBTElEEAASDAoISU5fUVVFUlkQARINCglJTl9IRUFERVIQAiJqCgRGbG93EhAKDEZMT1dfSU5WQUxJRBAAEhEKDUZMT1dfSU1QTElDSVQQARIRCg1GTE9XX1BBU1NXT1JEEAISFAoQRkxPV19BUFBMSUNBVElPThADEhQKEEZMT1dfQUNDRVNTX0NPREUQBCL2AgoTU2VjdXJpdHlSZXF1aXJlbWVudBKKAQoUc2VjdXJpdHlfcmVxdWlyZW1lbnQYASADKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeVITc2VjdXJpdHlSZXF1aXJlbWVudBowChhTZWN1cml0eVJlcXVpcmVtZW50VmFsdWUSFAoFc2NvcGUYASADKAlSBXNjb3BlGp8BChhTZWN1cml0eVJlcXVpcmVtZW50RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSbQoFdmFsdWUYAiABKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZVIFdmFsdWU6AjgBIpYBCgZTY29wZXMSUgoFc2NvcGUYASADKAsyPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXMuU2NvcGVFbnRyeVIFc2NvcGUaOAoKU2NvcGVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBKjsKBlNjaGVtZRILCgdVTktOT1dOEAASCAoESFRUUBABEgkKBUhUVFBTEAISBgoCV1MQAxIHCgNXU1MQBEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK/QYKLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG86fgoRb3BlbmFwaXYyX3N3YWdnZXISHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYkgggASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlclIQb3BlbmFwaXYyU3dhZ2dlcjqGAQoTb3BlbmFwaXYyX29wZXJhdGlvbhIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJIIIAEoCzI0LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvblISb3BlbmFwaXYyT3BlcmF0aW9uOn4KEG9wZW5hcGl2Ml9zY2hlbWESHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYkgggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUg9vcGVuYXBpdjJTY2hlbWE6dQoNb3BlbmFwaXYyX3RhZxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiSCCABKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSDG9wZW5hcGl2MlRhZzp+Cg9vcGVuYXBpdjJfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJIIIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSDm9wZW5hcGl2MkZpZWxkQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwrABAoVcHJvdG8vdXNlci91c2VyLnByb3RvEg5idWNrZXRlZXIudXNlciLeAwoEVXNlchIOCgJpZBgBIAEoCVICaWQSMgoEZGF0YRgCIAMoCzIeLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YUVudHJ5UgRkYXRhEkUKC3RhZ2dlZF9kYXRhGAMgAygLMiQuYnVja2V0ZWVyLnVzZXIuVXNlci5UYWdnZWREYXRhRW50cnlSCnRhZ2dlZERhdGESGwoJbGFzdF9zZWVuGAQgASgDUghsYXN0U2VlbhIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQafAoERGF0YRI6CgV2YWx1ZRgBIAMoCzIkLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YS5WYWx1ZUVudHJ5UgV2YWx1ZRo4CgpWYWx1ZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaNwoJRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaWAoPVGFnZ2VkRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei8KBXZhbHVlGAIgASgLMhkuYnVja2V0ZWVyLnVzZXIuVXNlci5EYXRhUgV2YWx1ZToCOAFCLlosZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3VzZXJiBnByb3RvMwrojQEKG3Byb3RvL2ZlYXR1cmUvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vZmVhdHVyZS9jb21tYW5kLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvGhtwcm90by9mZWF0dXJlL3NlZ21lbnQucHJvdG8aIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8iUAoRR2V0RmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkoKEkdldEZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSJTChJHZXRGZWF0dXJlc1JlcXVlc3QSEAoDaWRzGAIgAygJUgNpZHMSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiTQoTR2V0RmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzIvUFChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISEgoEdGFncxgDIAMoCVIEdGFncxJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEjQKB2VuYWJsZWQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEkEKDmhhc19leHBlcmltZW50GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaGFzRXhwZXJpbWVudBIlCg5zZWFyY2hfa2V5d29yZBgKIAEoCVINc2VhcmNoS2V5d29yZBI2CghhcmNoaXZlZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEkcKEWhhc19wcmVyZXF1aXNpdGVzGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIQaGFzUHJlcmVxdWlzaXRlcxIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCJXCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgRUQUdTEAQSCwoHRU5BQkxFRBAFIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAYQByKHAQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAQoaTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchISCgR0YWdzGAMgAygJUgR0YWdzEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIm0KG0xpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yIoYBChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiTQoVQ3JlYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIs8FChRVcGRhdGVGZWF0dXJlUmVxdWVzdBIYCgdjb21tZW50GAEgASgJUgdjb21tZW50EiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkEg4KAmlkGAMgASgJUgJpZBIwCgRuYW1lGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhISCgR0YWdzGAYgAygJUgR0YWdzEjQKB2VuYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSPAoKdmFyaWF0aW9ucxgJIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJFCg1wcmVyZXF1aXNpdGVzGAogAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzEjMKB3RhcmdldHMYCyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMSLQoFcnVsZXMYDCADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxJGChBkZWZhdWx0X3N0cmF0ZWd5GA0gASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSD2RlZmF1bHRTdHJhdGVneRJBCg1vZmZfdmFyaWF0aW9uGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgxvZmZWYXJpYXRpb24iTQoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIrABChRFbmFibGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRW5hYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVEaXNhYmxlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZEaXNhYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVBcmNoaXZlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BcmNoaXZlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrYBChdVbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYVW5hcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrABChREZWxldGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlRmVhdHVyZVJlc3BvbnNlIt8DChtVcGRhdGVGZWF0dXJlRGV0YWlsc1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEl0KFnJlbmFtZV9mZWF0dXJlX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5SZW5hbWVGZWF0dXJlQ29tbWFuZFIUcmVuYW1lRmVhdHVyZUNvbW1hbmQSaQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAyABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5DaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJKChBhZGRfdGFnX2NvbW1hbmRzGAQgAygLMiAuYnVja2V0ZWVyLmZlYXR1cmUuQWRkVGFnQ29tbWFuZFIOYWRkVGFnQ29tbWFuZHMSUwoTcmVtb3ZlX3RhZ19jb21tYW5kcxgFIAMoCzIjLmJ1Y2tldGVlci5mZWF0dXJlLlJlbW92ZVRhZ0NvbW1hbmRSEXJlbW92ZVRhZ0NvbW1hbmRzEhgKB2NvbW1lbnQYByABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgGEAciHgocVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSKvAQoeVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiIQofVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXNwb25zZSKhAgodVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEjYKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZFIIY29tbWFuZHMSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBJJCgRmcm9tGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QuRnJvbVIEZnJvbRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCImCgRGcm9tEgsKB1VOS05PV04QABIICgRVU0VSEAESBwoDT1BTEAJKBAgDEAQiIAoeVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIpQBChNDbG9uZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRDbG9uZUZlYXR1cmVSZXNwb25zZSLZAQoUQ3JlYXRlU2VnbWVudFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIXCgRuYW1lGAMgASgJQgPgQQJSBG5hbWUSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIgCgtkZXNjcmlwdGlvbhgFIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiTQoVQ3JlYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IloKEUdldFNlZ21lbnRSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAMgASgJQgPgQQJSDWVudmlyb25tZW50SWRKBAgCEAMiSgoSR2V0U2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50Iq8EChNMaXN0U2VnbWVudHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYBCABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSMwoGc3RhdHVzGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxJDChBpc19pbl91c2Vfc3RhdHVzGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxIqCg5lbnZpcm9ubWVudF9pZBgJIAEoCUID4EECUg1lbnZpcm9ubWVudElkIkAKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAMQBCKHAQoUTGlzdFNlZ21lbnRzUmVzcG9uc2USNgoIc2VnbWVudHMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UghzZWdtZW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKWAQoURGVsZXRlU2VnbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkEKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIXChVEZWxldGVTZWdtZW50UmVzcG9uc2UiiwEKFFVwZGF0ZVNlZ21lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhcKFVVwZGF0ZVNlZ21lbnRSZXNwb25zZSKYAQoVQWRkU2VnbWVudFVzZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJCCgdjb21tYW5kGAIgASgLMiguYnVja2V0ZWVyLmZlYXR1cmUuQWRkU2VnbWVudFVzZXJDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhgKFkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UingEKGERlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRQoHY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIbChlEZWxldGVTZWdtZW50VXNlclJlc3BvbnNlIrgBChVHZXRTZWdtZW50VXNlclJlcXVlc3QSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAiABKAlSBnVzZXJJZBI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAQQBSJMChZHZXRTZWdtZW50VXNlclJlc3BvbnNlEjIKBHVzZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIEdXNlciLmAQoXTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIdCgpzZWdtZW50X2lkGAMgASgJUglzZWdtZW50SWQSMQoFc3RhdGUYBCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIFc3RhdGUSFwoHdXNlcl9pZBgFIAEoCVIGdXNlcklkEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkSgQIBhAHImgKGExpc3RTZWdtZW50VXNlcnNSZXNwb25zZRI0CgV1c2VycxgBIAMoCzIeLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyUgV1c2VycxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvciLQAgodQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEl0KB2NvbW1hbmQYAyABKAsyMC5idWNrZXRlZXIuZmVhdHVyZS5CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWQSSAoEZGF0YRgFIAEoDEI0kkExMi9zZWdtZW50IHVzZXIgaWRzIHNlcGFyYXRlZCBieSBjb21tYSBvciBuZXcgbGluZVIEZGF0YRI6CgVzdGF0ZRgGIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZUoECAEQAiIgCh5CdWxrVXBsb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiqQEKH0J1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIjYKIEJ1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEhIKBGRhdGEYASABKAxSBGRhdGEioQEKF0V2YWx1YXRlRmVhdHVyZXNSZXF1ZXN0EigKBHVzZXIYASABKAsyFC5idWNrZXRlZXIudXNlci5Vc2VyUgR1c2VyEhAKA3RhZxgDIAEoCVIDdGFnEh0KCmZlYXR1cmVfaWQYBCABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJpChhFdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2USTQoQdXNlcl9ldmFsdWF0aW9ucxgBIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlVzZXJFdmFsdWF0aW9uc1IPdXNlckV2YWx1YXRpb25zIqwDCg9MaXN0VGFnc1JlcXVlc3QSGwoJcGFnZV9zaXplGAIgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchJFCghvcmRlcl9ieRgEIAEoDjIqLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EloKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjIxLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiSAoHT3JkZXJCeRILCgdERUZBVUxUEAASBgoCSUQQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBE5BTUUQBCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIidwoQTGlzdFRhZ3NSZXNwb25zZRIqCgR0YWdzGAEgAygLMhYuYnVja2V0ZWVyLmZlYXR1cmUuVGFnUgR0YWdzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IrMBChhDcmVhdGVGbGFnVHJpZ2dlclJlcXVlc3QSagobY3JlYXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhjcmVhdGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIicAoZQ3JlYXRlRmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiwwEKGERlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZGVsZXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhkZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRGVsZXRlRmxhZ1RyaWdnZXJSZXNwb25zZSLmAQoYVXBkYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBKMAQonY2hhbmdlX2ZsYWdfdHJpZ2dlcl9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjYuYnVja2V0ZWVyLmZlYXR1cmUuQ2hhbmdlRmxhZ1RyaWdnZXJEZXNjcmlwdGlvbkNvbW1hbmRSI2NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGVVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiwwEKGEVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZW5hYmxlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmxhZ1RyaWdnZXJDb21tYW5kUhhlbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRW5hYmxlRmxhZ1RyaWdnZXJSZXNwb25zZSLHAQoZRGlzYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSbQocZGlzYWJsZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIsLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmRSGWRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiHAoaRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UivwEKF1Jlc2V0RmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJnChpyZXNldF9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlJlc2V0RmxhZ1RyaWdnZXJDb21tYW5kUhdyZXNldEZsYWdUcmlnZ2VyQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJvChhSZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIlQKFUdldEZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMibQoWR2V0RmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiqgMKF0xpc3RGbGFnVHJpZ2dlcnNSZXF1ZXN0Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchIbCglwYWdlX3NpemUYBCABKAVSCHBhZ2VTaXplEk0KCG9yZGVyX2J5GAUgASgOMjIuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJiCg9vcmRlcl9kaXJlY3Rpb24YBiABKA4yOS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiNgoHT3JkZXJCeRILCgdERUZBVUxUEAASDgoKQ1JFQVRFRF9BVBABEg4KClVQREFURURfQVQQAiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgCEAMiowIKGExpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZRJjCg1mbGFnX3RyaWdnZXJzGAEgAygLMj4uYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1Jlc3BvbnNlLkZsYWdUcmlnZ2VyV2l0aFVybFIMZmxhZ1RyaWdnZXJzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50GmkKEkZsYWdUcmlnZ2VyV2l0aFVybBJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiMQoZRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBIUCgV0b2tlbhgBIAEoCVIFdG9rZW4iHAoaRmxhZ1RyaWdnZXJXZWJob29rUmVzcG9uc2UyzzEKDkZlYXR1cmVTZXJ2aWNlElsKCkdldEZlYXR1cmUSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRGZWF0dXJlUmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVSZXNwb25zZSIAEl4KC0dldEZlYXR1cmVzEiUuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXF1ZXN0GiYuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXNwb25zZSIAEmEKDExpc3RGZWF0dXJlcxImLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QaJy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXNwb25zZSIAEnYKE0xpc3RFbmFibGVkRmVhdHVyZXMSLS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RW5hYmxlZEZlYXR1cmVzUmVxdWVzdBouLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZSIAEmQKDUNyZWF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZlYXR1cmVSZXNwb25zZSIAEmQKDVVwZGF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVSZXNwb25zZSIAEmcKDUVuYWJsZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5FbmFibGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmoKDkRpc2FibGVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmcKDkFyY2hpdmVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEm0KEFVuYXJjaGl2ZUZlYXR1cmUSKi5idWNrZXRlZXIuZmVhdHVyZS5VbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEmQKDURlbGV0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVSZXNwb25zZSIAEnkKFFVwZGF0ZUZlYXR1cmVEZXRhaWxzEi4uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXF1ZXN0Gi8uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSIAEoIBChdVcGRhdGVGZWF0dXJlVmFyaWF0aW9ucxIxLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVxdWVzdBoyLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVzcG9uc2UiABJ/ChZVcGRhdGVGZWF0dXJlVGFyZ2V0aW5nEjAuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QaMS5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVGFyZ2V0aW5nUmVzcG9uc2UiABJhCgxDbG9uZUZlYXR1cmUSJi5idWNrZXRlZXIuZmVhdHVyZS5DbG9uZUZlYXR1cmVSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlUmVzcG9uc2UiABKmBAoNQ3JlYXRlU2VnbWVudBInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRSZXF1ZXN0GiguYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlU2VnbWVudFJlc3BvbnNlIsEDkkGnAwoHc2VnbWVudBIGQ3JlYXRlGhFDcmVhdGUgYSBzZWdtZW50LioVd2ViLnYxLnNlZ21lbnQuY3JlYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCECILL3YxL3NlZ21lbnQ6ASoSkQQKCkdldFNlZ21lbnQSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRTZWdtZW50UmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRSZXNwb25zZSK1A5JBngMKB3NlZ21lbnQSA0dldBoOR2V0IGEgc2VnbWVudC4qEndlYi52MS5zZWdtZW50LmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0SCy92MS9zZWdtZW50EpoECgxMaXN0U2VnbWVudHMSJi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVzcG9uc2UiuAOSQaADCgdzZWdtZW50EgRMaXN0Gg5MaXN0IHNlZ21lbnRzLioTd2ViLnYxLnNlZ21lbnQubGlzdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg4SDC92MS9zZWdtZW50cxJkCg1EZWxldGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50UmVzcG9uc2UiABJkCg1VcGRhdGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVTZWdtZW50UmVzcG9uc2UiABJqCg5BZGRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJzChFEZWxldGVTZWdtZW50VXNlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJqCg5HZXRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJtChBMaXN0U2VnbWVudFVzZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudFVzZXJzUmVzcG9uc2UiABLsBAoWQnVsa1VwbG9hZFNlZ21lbnRVc2VycxIwLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIuwDkkHAAwoHc2VnbWVudBILQnVsayB1cGxvYWQaGkJ1bGsgdXBsb2FkIHNlZ21lbnQgdXNlcnMuKiB3ZWIudjEuc2VnbWVudF91c2Vycy5idWxrX3VwbG9hZEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiIiHS92MS9zZWdtZW50X3VzZXJzL2J1bGtfdXBsb2FkOgEqEoUBChhCdWxrRG93bmxvYWRTZWdtZW50VXNlcnMSMi5idWNrZXRlZXIuZmVhdHVyZS5CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjMuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa0Rvd25sb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiABJtChBFdmFsdWF0ZUZlYXR1cmVzEiouYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGVGZWF0dXJlc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2UiABL+AwoITGlzdFRhZ3MSIi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QaIy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1Jlc3BvbnNlIqgDkkGUAwoDdGFnEgRMaXN0GgpMaXN0IHRhZ3MuKg93ZWIudjEudGFnLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvdGFncxJwChFDcmVhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFVcGRhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFFbmFibGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJzChJEaXNhYmxlRmxhZ1RyaWdnZXISLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJSZXF1ZXN0Gi0uYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBSZXNldEZsYWdUcmlnZ2VyEiouYnVja2V0ZWVyLmZlYXR1cmUuUmVzZXRGbGFnVHJpZ2dlclJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFEZWxldGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJnCg5HZXRGbGFnVHJpZ2dlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBMaXN0RmxhZ1RyaWdnZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2UiABKUAQoSRmxhZ1RyaWdnZXJXZWJob29rEiwuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBotLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlIiGC0+STAhsiGS93ZWJob29rL3RyaWdnZXJzL3t0b2tlbn1CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMw== + featureDescriptor: CscDChpwcm90by9mZWF0dXJlL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUi2gIKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSHAoJYXR0cmlidXRlGAIgASgJUglhdHRyaWJ1dGUSPgoIb3BlcmF0b3IYAyABKA4yIi5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2UuT3BlcmF0b3JSCG9wZXJhdG9yEhYKBnZhbHVlcxgEIAMoCVIGdmFsdWVzIskBCghPcGVyYXRvchIKCgZFUVVBTFMQABIGCgJJThABEg0KCUVORFNfV0lUSBACEg8KC1NUQVJUU19XSVRIEAMSCwoHU0VHTUVOVBAEEgsKB0dSRUFURVIQBRIUChBHUkVBVEVSX09SX0VRVUFMEAYSCAoETEVTUxAHEhEKDUxFU1NfT1JfRVFVQUwQCBIKCgZCRUZPUkUQCRIJCgVBRlRFUhAKEhAKDEZFQVRVUkVfRkxBRxALEhMKD1BBUlRJQUxMWV9NQVRDSBAMQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5AEKGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiI2CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVlQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKoAUKIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSKtBAoLRmxhZ1RyaWdnZXISDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SIwoNdHJpZ2dlcl9jb3VudBgHIAEoBVIMdHJpZ2dlckNvdW50EioKEWxhc3RfdHJpZ2dlcmVkX2F0GAggASgDUg9sYXN0VHJpZ2dlcmVkQXQSFAoFdG9rZW4YCSABKAlSBXRva2VuEhoKCGRpc2FibGVkGAogASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAsgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgMIAEoA1IJdXBkYXRlZEF0EiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIioKBFR5cGUSEAoMVHlwZV9VTktOT1dOEAASEAoMVHlwZV9XRUJIT09LEAEiOwoGQWN0aW9uEhIKDkFjdGlvbl9VTktOT1dOEAASDQoJQWN0aW9uX09OEAESDgoKQWN0aW9uX09GRhACSgQIAxAEQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKwCMKG3Byb3RvL2ZlYXR1cmUvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8iOQoHQ29tbWFuZBIuCgdjb21tYW5kGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIHY29tbWFuZCK1AwoUQ3JlYXRlRmVhdHVyZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSEgoEdGFncxgFIAMoCVIEdGFncxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlIhcKFUFyY2hpdmVGZWF0dXJlQ29tbWFuZCIZChdVbmFyY2hpdmVGZWF0dXJlQ29tbWFuZCIWChREZWxldGVGZWF0dXJlQ29tbWFuZCIqChRSZW5hbWVGZWF0dXJlQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIjwKGENoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iuAEKKUNoYW5nZUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNTdGF0dXNDb21tYW5kEjkKBnN0YXR1cxgBIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYAyABKANSBWNvdW50IiEKDUFkZFRhZ0NvbW1hbmQSEAoDdGFnGAEgASgJUgN0YWciJAoQUmVtb3ZlVGFnQ29tbWFuZBIQCgN0YWcYASABKAlSA3RhZyIWChRFbmFibGVGZWF0dXJlQ29tbWFuZCIXChVEaXNhYmxlRmVhdHVyZUNvbW1hbmQiYQoTQWRkVmFyaWF0aW9uQ29tbWFuZBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24iKAoWUmVtb3ZlVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiQwobQ2hhbmdlVmFyaWF0aW9uVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUiQAoaQ2hhbmdlVmFyaWF0aW9uTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohQ2hhbmdlVmFyaWF0aW9uRGVzY3JpcHRpb25Db21tYW5kEg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iKwoZQ2hhbmdlT2ZmVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiPwoZQWRkVXNlclRvVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEdXNlchgCIAEoCVIEdXNlciJECh5SZW1vdmVVc2VyRnJvbVZhcmlhdGlvbkNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBHVzZXIYAiABKAlSBHVzZXIiVwocQ2hhbmdlRGVmYXVsdFN0cmF0ZWd5Q29tbWFuZBI3CghzdHJhdGVneRgBIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI9Cg5BZGRSdWxlQ29tbWFuZBIrCgRydWxlGAEgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJ9ChlDaGFuZ2VSdWxlU3RyYXRlZ3lDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiNAoXQ2hhbmdlUnVsZXNPcmRlckNvbW1hbmQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiIwoRRGVsZXRlUnVsZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkIl4KEEFkZENsYXVzZUNvbW1hbmQSFwoHcnVsZV9pZBgBIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgCIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlIj4KE0RlbGV0ZUNsYXVzZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJlChxDaGFuZ2VDbGF1c2VBdHRyaWJ1dGVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSHAoJYXR0cmlidXRlGAMgASgJUglhdHRyaWJ1dGUihgEKG0NoYW5nZUNsYXVzZU9wZXJhdG9yQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJWChVBZGRDbGF1c2VWYWx1ZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIUCgV2YWx1ZRgDIAEoCVIFdmFsdWUiWQoYUmVtb3ZlQ2xhdXNlVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIoMBChpDaGFuZ2VGaXhlZFN0cmF0ZWd5Q29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjwKCHN0cmF0ZWd5GAMgASgLMiAuYnVja2V0ZWVyLmZlYXR1cmUuRml4ZWRTdHJhdGVneVIIc3RyYXRlZ3kihwEKHENoYW5nZVJvbGxvdXRTdHJhdGVneUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI+CghzdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIIc3RyYXRlZ3kiTAoUQ3JlYXRlU2VnbWVudENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iFgoURGVsZXRlU2VnbWVudENvbW1hbmQiLgoYQ2hhbmdlU2VnbWVudE5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQwofQ2hhbmdlU2VnbWVudERlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24ibgoVQWRkU2VnbWVudFVzZXJDb21tYW5kEhkKCHVzZXJfaWRzGAEgAygJUgd1c2VySWRzEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlInEKGERlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZBIZCgh1c2VyX2lkcxgBIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgCIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSJvCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZBISCgRkYXRhGAEgASgMUgRkYXRhEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIiAKHkluY3JlbWVudEZlYXR1cmVWZXJzaW9uQ29tbWFuZCJCChNDbG9uZUZlYXR1cmVDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGFJlc2V0U2FtcGxpbmdTZWVkQ29tbWFuZCJdChZBZGRQcmVyZXF1aXNpdGVDb21tYW5kEkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjoKGVJlbW92ZVByZXJlcXVpc2l0ZUNvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkImkKIkNoYW5nZVByZXJlcXVpc2l0ZVZhcmlhdGlvbkNvbW1hbmQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUi0wEKGENyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgCIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAMgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uIhkKF1Jlc2V0RmxhZ1RyaWdnZXJDb21tYW5kIkcKI0NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIaChhFbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQiGwoZRGlzYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZCIaChhEZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQiHwodVXBkYXRlRmxhZ1RyaWdnZXJVc2FnZUNvbW1hbmRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqeAgoacHJvdG8vZmVhdHVyZS9yZWFzb24ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIrEBCgZSZWFzb24SMgoEdHlwZRgBIAEoDjIeLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvbi5UeXBlUgR0eXBlEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJaCgRUeXBlEgoKBlRBUkdFVBAAEggKBFJVTEUQARILCgdERUZBVUxUEAMSCgoGQ0xJRU5UEAQSEQoNT0ZGX1ZBUklBVElPThAFEhAKDFBSRVJFUVVJU0lURRAGQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKmAYKHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90byLjAgoKRXZhbHVhdGlvbhIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SFwoHdXNlcl9pZBgEIAEoCVIGdXNlcklkEiEKDHZhcmlhdGlvbl9pZBgFIAEoCVILdmFyaWF0aW9uSWQSPgoJdmFyaWF0aW9uGAYgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uQgIYAVIJdmFyaWF0aW9uEjEKBnJlYXNvbhgHIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvblIGcmVhc29uEicKD3ZhcmlhdGlvbl92YWx1ZRgIIAEoCVIOdmFyaWF0aW9uVmFsdWUSJQoOdmFyaWF0aW9uX25hbWUYCSABKAlSDXZhcmlhdGlvbk5hbWUihgIKD1VzZXJFdmFsdWF0aW9ucxISCgJpZBgBIAEoCUICGAFSAmlkEj8KC2V2YWx1YXRpb25zGAIgAygLMh0uYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGlvblILZXZhbHVhdGlvbnMSHQoKY3JlYXRlZF9hdBgDIAEoA1IJY3JlYXRlZEF0EjAKFGFyY2hpdmVkX2ZlYXR1cmVfaWRzGAQgAygJUhJhcmNoaXZlZEZlYXR1cmVJZHMSIQoMZm9yY2VfdXBkYXRlGAUgASgIUgtmb3JjZVVwZGF0ZSIqCgVTdGF0ZRIKCgZRVUVVRUQQABILCgdQQVJUSUFMEAESCAoERlVMTBACQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKhwUKFWdvb2dsZS9hcGkvaHR0cC5wcm90bxIKZ29vZ2xlLmFwaSJ5CgRIdHRwEioKBXJ1bGVzGAEgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIFcnVsZXMSRQofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCFIcZnVsbHlEZWNvZGVSZXNlcnZlZEV4cGFuc2lvbiK1AgoISHR0cFJ1bGUSGgoIc2VsZWN0b3IYASABKAlSCHNlbGVjdG9yEhIKA2dldBgCIAEoCUgAUgNnZXQSEgoDcHV0GAMgASgJSABSA3B1dBIUCgRwb3N0GAQgASgJSABSBHBvc3QSGAoGZGVsZXRlGAUgASgJSABSBmRlbGV0ZRIWCgVwYXRjaBgGIAEoCUgAUgVwYXRjaBI3CgZjdXN0b20YCCABKAsyHS5nb29nbGUuYXBpLkN1c3RvbUh0dHBQYXR0ZXJuSABSBmN1c3RvbRISCgRib2R5GAcgASgJUgRib2R5EkUKE2FkZGl0aW9uYWxfYmluZGluZ3MYCyADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUhJhZGRpdGlvbmFsQmluZGluZ3NCCQoHcGF0dGVybiI7ChFDdXN0b21IdHRwUGF0dGVybhISCgRraW5kGAEgASgJUgRraW5kEhIKBHBhdGgYAiABKAlSBHBhdGhCagoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc/gBAaICBEdBUEliBnByb3RvMwrhRgogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiJNChFGaWxlRGVzY3JpcHRvclNldBI4CgRmaWxlGAEgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9SBGZpbGUi/gQKE0ZpbGVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgdwYWNrYWdlGAIgASgJUgdwYWNrYWdlEh4KCmRlcGVuZGVuY3kYAyADKAlSCmRlcGVuZGVuY3kSKwoRcHVibGljX2RlcGVuZGVuY3kYCiADKAVSEHB1YmxpY0RlcGVuZGVuY3kSJwoPd2Vha19kZXBlbmRlbmN5GAsgAygFUg53ZWFrRGVwZW5kZW5jeRJDCgxtZXNzYWdlX3R5cGUYBCADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgttZXNzYWdlVHlwZRJBCgllbnVtX3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSQQoHc2VydmljZRgGIAMoCzInLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlRGVzY3JpcHRvclByb3RvUgdzZXJ2aWNlEkMKCWV4dGVuc2lvbhgHIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEjYKB29wdGlvbnMYCCABKAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnNSB29wdGlvbnMSSQoQc291cmNlX2NvZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mb1IOc291cmNlQ29kZUluZm8SFgoGc3ludGF4GAwgASgJUgZzeW50YXgSGAoHZWRpdGlvbhgNIAEoCVIHZWRpdGlvbiK5BgoPRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSOwoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SBWZpZWxkEkMKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEkEKC25lc3RlZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1IKbmVzdGVkVHlwZRJBCgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSWAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZVIOZXh0ZW5zaW9uUmFuZ2USRAoKb25lb2ZfZGVjbBgIIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5PbmVvZkRlc2NyaXB0b3JQcm90b1IJb25lb2ZEZWNsEjkKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnNSB29wdGlvbnMSVQoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgKIAMoCVIMcmVzZXJ2ZWROYW1lGnoKDkV4dGVuc2lvblJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZBJACgdvcHRpb25zGAMgASgLMiYuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9uc1IHb3B0aW9ucxo3Cg1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKtBAoVRXh0ZW5zaW9uUmFuZ2VPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uElkKC2RlY2xhcmF0aW9uGAIgAygLMjIuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5EZWNsYXJhdGlvbkIDiAECUgtkZWNsYXJhdGlvbhJoCgx2ZXJpZmljYXRpb24YAyABKA4yOC5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLlZlcmlmaWNhdGlvblN0YXRlOgpVTlZFUklGSUVEUgx2ZXJpZmljYXRpb24aswEKC0RlY2xhcmF0aW9uEhYKBm51bWJlchgBIAEoBVIGbnVtYmVyEhsKCWZ1bGxfbmFtZRgCIAEoCVIIZnVsbE5hbWUSEgoEdHlwZRgDIAEoCVIEdHlwZRIjCgtpc19yZXBlYXRlZBgEIAEoCEICGAFSCmlzUmVwZWF0ZWQSGgoIcmVzZXJ2ZWQYBSABKAhSCHJlc2VydmVkEhoKCHJlcGVhdGVkGAYgASgIUghyZXBlYXRlZCI0ChFWZXJpZmljYXRpb25TdGF0ZRIPCgtERUNMQVJBVElPThAAEg4KClVOVkVSSUZJRUQQASoJCOgHEICAgIACIsEGChRGaWVsZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgDIAEoBVIGbnVtYmVyEkEKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsUgVsYWJlbBI+CgR0eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGVSBHR5cGUSGwoJdHlwZV9uYW1lGAYgASgJUgh0eXBlTmFtZRIaCghleHRlbmRlZRgCIAEoCVIIZXh0ZW5kZWUSIwoNZGVmYXVsdF92YWx1ZRgHIAEoCVIMZGVmYXVsdFZhbHVlEh8KC29uZW9mX2luZGV4GAkgASgFUgpvbmVvZkluZGV4EhsKCWpzb25fbmFtZRgKIAEoCVIIanNvbk5hbWUSNwoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnNSB29wdGlvbnMSJwoPcHJvdG8zX29wdGlvbmFsGBEgASgIUg5wcm90bzNPcHRpb25hbCK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIiQwoFTGFiZWwSEgoOTEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVFVSVJFRBACEhIKDkxBQkVMX1JFUEVBVEVEEAMiYwoUT25lb2ZEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI3CgdvcHRpb25zGAIgASgLMh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9uc1IHb3B0aW9ucyLjAgoTRW51bURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj8KBXZhbHVlGAIgAygLMikuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZURlc2NyaXB0b3JQcm90b1IFdmFsdWUSNgoHb3B0aW9ucxgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9uc1IHb3B0aW9ucxJdCg5yZXNlcnZlZF9yYW5nZRgEIAMoCzI2Lmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvLkVudW1SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYBSADKAlSDHJlc2VydmVkTmFtZRo7ChFFbnVtUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQigwEKGEVudW1WYWx1ZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgCIAEoBVIGbnVtYmVyEjsKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9uc1IHb3B0aW9ucyKnAQoWU2VydmljZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj4KBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG9SBm1ldGhvZBI5CgdvcHRpb25zGAMgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zUgdvcHRpb25zIokCChVNZXRob2REZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIdCgppbnB1dF90eXBlGAIgASgJUglpbnB1dFR5cGUSHwoLb3V0cHV0X3R5cGUYAyABKAlSCm91dHB1dFR5cGUSOAoHb3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zUgdvcHRpb25zEjAKEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlUg9jbGllbnRTdHJlYW1pbmcSMAoQc2VydmVyX3N0cmVhbWluZxgGIAEoCDoFZmFsc2VSD3NlcnZlclN0cmVhbWluZyKRCQoLRmlsZU9wdGlvbnMSIQoMamF2YV9wYWNrYWdlGAEgASgJUgtqYXZhUGFja2FnZRIwChRqYXZhX291dGVyX2NsYXNzbmFtZRgIIAEoCVISamF2YU91dGVyQ2xhc3NuYW1lEjUKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlUhFqYXZhTXVsdGlwbGVGaWxlcxJECh1qYXZhX2dlbmVyYXRlX2VxdWFsc19hbmRfaGFzaBgUIAEoCEICGAFSGWphdmFHZW5lcmF0ZUVxdWFsc0FuZEhhc2gSOgoWamF2YV9zdHJpbmdfY2hlY2tfdXRmOBgbIAEoCDoFZmFsc2VSE2phdmFTdHJpbmdDaGVja1V0ZjgSUwoMb3B0aW1pemVfZm9yGAkgASgOMikuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zLk9wdGltaXplTW9kZToFU1BFRURSC29wdGltaXplRm9yEh0KCmdvX3BhY2thZ2UYCyABKAlSCWdvUGFja2FnZRI1ChNjY19nZW5lcmljX3NlcnZpY2VzGBAgASgIOgVmYWxzZVIRY2NHZW5lcmljU2VydmljZXMSOQoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgVmYWxzZVITamF2YUdlbmVyaWNTZXJ2aWNlcxI1ChNweV9nZW5lcmljX3NlcnZpY2VzGBIgASgIOgVmYWxzZVIRcHlHZW5lcmljU2VydmljZXMSNwoUcGhwX2dlbmVyaWNfc2VydmljZXMYKiABKAg6BWZhbHNlUhJwaHBHZW5lcmljU2VydmljZXMSJQoKZGVwcmVjYXRlZBgXIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSLgoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoEdHJ1ZVIOY2NFbmFibGVBcmVuYXMSKgoRb2JqY19jbGFzc19wcmVmaXgYJCABKAlSD29iamNDbGFzc1ByZWZpeBIpChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJUg9jc2hhcnBOYW1lc3BhY2USIQoMc3dpZnRfcHJlZml4GCcgASgJUgtzd2lmdFByZWZpeBIoChBwaHBfY2xhc3NfcHJlZml4GCggASgJUg5waHBDbGFzc1ByZWZpeBIjCg1waHBfbmFtZXNwYWNlGCkgASgJUgxwaHBOYW1lc3BhY2USNAoWcGhwX21ldGFkYXRhX25hbWVzcGFjZRgsIAEoCVIUcGhwTWV0YWRhdGFOYW1lc3BhY2USIQoMcnVieV9wYWNrYWdlGC0gASgJUgtydWJ5UGFja2FnZRJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJTUUQAyoJCOgHEICAgIACSgQIJhAnIrsDCg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50cnkSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYCyABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgEEAVKBAgFEAZKBAgGEAdKBAgIEAlKBAgJEAoihQkKDEZpZWxkT3B0aW9ucxJBCgVjdHlwZRgBIAEoDjIjLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuQ1R5cGU6BlNUUklOR1IFY3R5cGUSFgoGcGFja2VkGAIgASgIUgZwYWNrZWQSRwoGanN0eXBlGAYgASgOMiQuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5KU1R5cGU6CUpTX05PUk1BTFIGanN0eXBlEhkKBGxhenkYBSABKAg6BWZhbHNlUgRsYXp5Ei4KD3VudmVyaWZpZWRfbGF6eRgPIAEoCDoFZmFsc2VSDnVudmVyaWZpZWRMYXp5EiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhkKBHdlYWsYCiABKAg6BWZhbHNlUgR3ZWFrEigKDGRlYnVnX3JlZGFjdBgQIAEoCDoFZmFsc2VSC2RlYnVnUmVkYWN0EksKCXJldGVudGlvbhgRIAEoDjItLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uUmV0ZW50aW9uUglyZXRlbnRpb24SSgoGdGFyZ2V0GBIgASgOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlQgIYAVIGdGFyZ2V0EkgKB3RhcmdldHMYEyADKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVSB3RhcmdldHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglKU19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAiJVCg9PcHRpb25SZXRlbnRpb24SFQoRUkVURU5USU9OX1VOS05PV04QABIVChFSRVRFTlRJT05fUlVOVElNRRABEhQKEFJFVEVOVElPTl9TT1VSQ0UQAiKMAgoQT3B0aW9uVGFyZ2V0VHlwZRIXChNUQVJHRVRfVFlQRV9VTktOT1dOEAASFAoQVEFSR0VUX1RZUEVfRklMRRABEh8KG1RBUkdFVF9UWVBFX0VYVEVOU0lPTl9SQU5HRRACEhcKE1RBUkdFVF9UWVBFX01FU1NBR0UQAxIVChFUQVJHRVRfVFlQRV9GSUVMRBAEEhUKEVRBUkdFVF9UWVBFX09ORU9GEAUSFAoQVEFSR0VUX1RZUEVfRU5VTRAGEhoKFlRBUkdFVF9UWVBFX0VOVU1fRU5UUlkQBxIXChNUQVJHRVRfVFlQRV9TRVJWSUNFEAgSFgoSVEFSR0VUX1RZUEVfTUVUSE9EEAkqCQjoBxCAgICAAkoECAQQBSJzCgxPbmVvZk9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKYAgoLRW51bU9wdGlvbnMSHwoLYWxsb3dfYWxpYXMYAiABKAhSCmFsbG93QWxpYXMSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYBiABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgFEAYingEKEEVudW1WYWx1ZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBgBIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKcAQoOU2VydmljZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiLgAgoNTWV0aG9kT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJxChFpZGVtcG90ZW5jeV9sZXZlbBgiIAEoDjIvLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zLklkZW1wb3RlbmN5TGV2ZWw6E0lERU1QT1RFTkNZX1VOS05PV05SEGlkZW1wb3RlbmN5TGV2ZWwSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iUAoQSWRlbXBvdGVuY3lMZXZlbBIXChNJREVNUE9URU5DWV9VTktOT1dOEAASEwoPTk9fU0lERV9FRkZFQ1RTEAESDgoKSURFTVBPVEVOVBACKgkI6AcQgICAgAIimgMKE1VuaW50ZXJwcmV0ZWRPcHRpb24SQQoEbmFtZRgCIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQYXJ0UgRuYW1lEikKEGlkZW50aWZpZXJfdmFsdWUYAyABKAlSD2lkZW50aWZpZXJWYWx1ZRIsChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKARSEHBvc2l0aXZlSW50VmFsdWUSLAoSbmVnYXRpdmVfaW50X3ZhbHVlGAUgASgDUhBuZWdhdGl2ZUludFZhbHVlEiEKDGRvdWJsZV92YWx1ZRgGIAEoAVILZG91YmxlVmFsdWUSIQoMc3RyaW5nX3ZhbHVlGAcgASgMUgtzdHJpbmdWYWx1ZRInCg9hZ2dyZWdhdGVfdmFsdWUYCCABKAlSDmFnZ3JlZ2F0ZVZhbHVlGkoKCE5hbWVQYXJ0EhsKCW5hbWVfcGFydBgBIAIoCVIIbmFtZVBhcnQSIQoMaXNfZXh0ZW5zaW9uGAIgAigIUgtpc0V4dGVuc2lvbiKnAgoOU291cmNlQ29kZUluZm8SRAoIbG9jYXRpb24YASADKAsyKC5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm8uTG9jYXRpb25SCGxvY2F0aW9uGs4BCghMb2NhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIWCgRzcGFuGAIgAygFQgIQAVIEc3BhbhIpChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJUg9sZWFkaW5nQ29tbWVudHMSKwoRdHJhaWxpbmdfY29tbWVudHMYBCABKAlSEHRyYWlsaW5nQ29tbWVudHMSOgoZbGVhZGluZ19kZXRhY2hlZF9jb21tZW50cxgGIAMoCVIXbGVhZGluZ0RldGFjaGVkQ29tbWVudHMi0AIKEUdlbmVyYXRlZENvZGVJbmZvEk0KCmFubm90YXRpb24YASADKAsyLS5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvblIKYW5ub3RhdGlvbhrrAQoKQW5ub3RhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIfCgtzb3VyY2VfZmlsZRgCIAEoCVIKc291cmNlRmlsZRIUCgViZWdpbhgDIAEoBVIFYmVnaW4SEAoDZW5kGAQgASgFUgNlbmQSUgoIc2VtYW50aWMYBSABKA4yNi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvbi5TZW1hbnRpY1IIc2VtYW50aWMiKAoIU2VtYW50aWMSCAoETk9ORRAAEgcKA1NFVBABEgkKBUFMSUFTEAJCfgoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gBWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9kZXNjcmlwdG9ycGL4AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbgqoAgocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxIKZ29vZ2xlLmFwaRoVZ29vZ2xlL2FwaS9odHRwLnByb3RvGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpLCgRodHRwEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYsMq8IiABKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgRodHRwQm4KDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK4gUKHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiKYAQoGU3RydWN0EjsKBmZpZWxkcxgBIAMoCzIjLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QuRmllbGRzRW50cnlSBmZpZWxkcxpRCgtGaWVsZHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIrICCgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZUgAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCWJvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5kIjsKCUxpc3RWYWx1ZRIuCgZ2YWx1ZXMYASADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnZhbHVlcyobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKpj4KLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90byKzCAoHU3dhZ2dlchIYCgdzd2FnZ2VyGAEgASgJUgdzd2FnZ2VyEkMKBGluZm8YAiABKAsyLy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvUgRpbmZvEhIKBGhvc3QYAyABKAlSBGhvc3QSGwoJYmFzZV9wYXRoGAQgASgJUghiYXNlUGF0aBJLCgdzY2hlbWVzGAUgAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSXwoJcmVzcG9uc2VzGAogAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEnEKFHNlY3VyaXR5X2RlZmluaXRpb25zGAsgASgLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9uc1ITc2VjdXJpdHlEZWZpbml0aW9ucxJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EkIKBHRhZ3MYDSADKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSBHRhZ3MSZQoNZXh0ZXJuYWxfZG9jcxgOIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEmIKCmV4dGVuc2lvbnMYDyADKAsyQi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAlKBAgJEAoi1gcKCU9wZXJhdGlvbhISCgR0YWdzGAEgAygJUgR0YWdzEhgKB3N1bW1hcnkYAiABKAlSB3N1bW1hcnkSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYBCABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIhCgxvcGVyYXRpb25faWQYBSABKAlSC29wZXJhdGlvbklkEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSYQoJcmVzcG9uc2VzGAkgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMSSwoHc2NoZW1lcxgKIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIeCgpkZXByZWNhdGVkGAsgASgIUgpkZXByZWNhdGVkEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSZAoKZXh0ZW5zaW9ucxgNIAMoCzJELmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMSVQoKcGFyYW1ldGVycxgOIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlBhcmFtZXRlcnNSCnBhcmFtZXRlcnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJImIKClBhcmFtZXRlcnMSVAoHaGVhZGVycxgBIAMoCzI6LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlclIHaGVhZGVycyKjAgoPSGVhZGVyUGFyYW1ldGVyEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uElMKBHR5cGUYAyABKA4yPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXIuVHlwZVIEdHlwZRIWCgZmb3JtYXQYBCABKAlSBmZvcm1hdBIaCghyZXF1aXJlZBgFIAEoCFIIcmVxdWlyZWQiRQoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RSSU5HEAESCgoGTlVNQkVSEAISCwoHSU5URUdFUhADEgsKB0JPT0xFQU4QBEoECAYQB0oECAcQCCLYAQoGSGVhZGVyEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhISCgR0eXBlGAIgASgJUgR0eXBlEhYKBmZvcm1hdBgDIAEoCVIGZm9ybWF0EhgKB2RlZmF1bHQYBiABKAlSB2RlZmF1bHQSGAoHcGF0dGVybhgNIAEoCVIHcGF0dGVybkoECAQQBUoECAUQBkoECAcQCEoECAgQCUoECAkQCkoECAoQC0oECAsQDEoECAwQDUoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQEyKaBQoIUmVzcG9uc2USIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEkkKBnNjaGVtYRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIGc2NoZW1hEloKB2hlYWRlcnMYAyADKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5IZWFkZXJzRW50cnlSB2hlYWRlcnMSXQoIZXhhbXBsZXMYBCADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeGFtcGxlc0VudHJ5UghleGFtcGxlcxJjCgpleHRlbnNpb25zGAUgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGm0KDEhlYWRlcnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJHCgV2YWx1ZRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclIFdmFsdWU6AjgBGjsKDUV4YW1wbGVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLWAwoESW5mbxIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEigKEHRlcm1zX29mX3NlcnZpY2UYAyABKAlSDnRlcm1zT2ZTZXJ2aWNlEkwKB2NvbnRhY3QYBCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Db250YWN0Ugdjb250YWN0EkwKB2xpY2Vuc2UYBSABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5MaWNlbnNlUgdsaWNlbnNlEhgKB3ZlcnNpb24YBiABKAlSB3ZlcnNpb24SXwoKZXh0ZW5zaW9ucxgHIAMoCzI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm8uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIkUKB0NvbnRhY3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybBIUCgVlbWFpbBgDIAEoCVIFZW1haWwiLwoHTGljZW5zZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsIksKFUV4dGVybmFsRG9jdW1lbnRhdGlvbhIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEAoDdXJsGAIgASgJUgN1cmwiqgIKBlNjaGVtYRJWCgtqc29uX3NjaGVtYRgBIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSCmpzb25TY2hlbWESJAoNZGlzY3JpbWluYXRvchgCIAEoCVINZGlzY3JpbWluYXRvchIbCglyZWFkX29ubHkYAyABKAhSCHJlYWRPbmx5EmUKDWV4dGVybmFsX2RvY3MYBSABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIYCgdleGFtcGxlGAYgASgJUgdleGFtcGxlSgQIBBAFItcKCgpKU09OU2NoZW1hEhAKA3JlZhgDIAEoCVIDcmVmEhQKBXRpdGxlGAUgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SGAoHZGVmYXVsdBgHIAEoCVIHZGVmYXVsdBIbCglyZWFkX29ubHkYCCABKAhSCHJlYWRPbmx5EhgKB2V4YW1wbGUYCSABKAlSB2V4YW1wbGUSHwoLbXVsdGlwbGVfb2YYCiABKAFSCm11bHRpcGxlT2YSGAoHbWF4aW11bRgLIAEoAVIHbWF4aW11bRIrChFleGNsdXNpdmVfbWF4aW11bRgMIAEoCFIQZXhjbHVzaXZlTWF4aW11bRIYCgdtaW5pbXVtGA0gASgBUgdtaW5pbXVtEisKEWV4Y2x1c2l2ZV9taW5pbXVtGA4gASgIUhBleGNsdXNpdmVNaW5pbXVtEh0KCm1heF9sZW5ndGgYDyABKARSCW1heExlbmd0aBIdCgptaW5fbGVuZ3RoGBAgASgEUgltaW5MZW5ndGgSGAoHcGF0dGVybhgRIAEoCVIHcGF0dGVybhIbCgltYXhfaXRlbXMYFCABKARSCG1heEl0ZW1zEhsKCW1pbl9pdGVtcxgVIAEoBFIIbWluSXRlbXMSIQoMdW5pcXVlX2l0ZW1zGBYgASgIUgt1bmlxdWVJdGVtcxIlCg5tYXhfcHJvcGVydGllcxgYIAEoBFINbWF4UHJvcGVydGllcxIlCg5taW5fcHJvcGVydGllcxgZIAEoBFINbWluUHJvcGVydGllcxIaCghyZXF1aXJlZBgaIAMoCVIIcmVxdWlyZWQSFAoFYXJyYXkYIiADKAlSBWFycmF5El8KBHR5cGUYIyADKA4ySy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkpTT05TY2hlbWFTaW1wbGVUeXBlc1IEdHlwZRIWCgZmb3JtYXQYJCABKAlSBmZvcm1hdBISCgRlbnVtGC4gAygJUgRlbnVtEnoKE2ZpZWxkX2NvbmZpZ3VyYXRpb24Y6QcgASgLMkguZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5GaWVsZENvbmZpZ3VyYXRpb25SEmZpZWxkQ29uZmlndXJhdGlvbhJlCgpleHRlbnNpb25zGDAgAygLMkUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaPAoSRmllbGRDb25maWd1cmF0aW9uEiYKD3BhdGhfcGFyYW1fbmFtZRgvIAEoCVINcGF0aFBhcmFtTmFtZRpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJ3ChVKU09OU2NoZW1hU2ltcGxlVHlwZXMSCwoHVU5LTk9XThAAEgkKBUFSUkFZEAESCwoHQk9PTEVBThACEgsKB0lOVEVHRVIQAxIICgROVUxMEAQSCgoGTlVNQkVSEAUSCgoGT0JKRUNUEAYSCgoGU1RSSU5HEAdKBAgBEAJKBAgCEANKBAgEEAVKBAgSEBNKBAgTEBRKBAgXEBhKBAgbEBxKBAgcEB1KBAgdEB5KBAgeECJKBAglECpKBAgqECtKBAgrEC4i2QIKA1RhZxISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAMgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSXgoKZXh0ZW5zaW9ucxgEIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZy5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi9wEKE1NlY3VyaXR5RGVmaW5pdGlvbnMSaAoIc2VjdXJpdHkYASADKAsyTC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zLlNlY3VyaXR5RW50cnlSCHNlY3VyaXR5GnYKDVNlY3VyaXR5RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSTwoFdmFsdWUYAiABKAsyOS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZVIFdmFsdWU6AjgBIv8GCg5TZWN1cml0eVNjaGVtZRJSCgR0eXBlGAEgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuVHlwZVIEdHlwZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEbmFtZRgDIAEoCVIEbmFtZRJMCgJpbhgEIAEoDjI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkluUgJpbhJSCgRmbG93GAUgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRmxvd1IEZmxvdxIrChFhdXRob3JpemF0aW9uX3VybBgGIAEoCVIQYXV0aG9yaXphdGlvblVybBIbCgl0b2tlbl91cmwYByABKAlSCHRva2VuVXJsEkkKBnNjb3BlcxgIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blc1IGc2NvcGVzEmkKCmV4dGVuc2lvbnMYCSADKAsySS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiSwoEVHlwZRIQCgxUWVBFX0lOVkFMSUQQABIOCgpUWVBFX0JBU0lDEAESEAoMVFlQRV9BUElfS0VZEAISDwoLVFlQRV9PQVVUSDIQAyIxCgJJbhIOCgpJTl9JTlZBTElEEAASDAoISU5fUVVFUlkQARINCglJTl9IRUFERVIQAiJqCgRGbG93EhAKDEZMT1dfSU5WQUxJRBAAEhEKDUZMT1dfSU1QTElDSVQQARIRCg1GTE9XX1BBU1NXT1JEEAISFAoQRkxPV19BUFBMSUNBVElPThADEhQKEEZMT1dfQUNDRVNTX0NPREUQBCL2AgoTU2VjdXJpdHlSZXF1aXJlbWVudBKKAQoUc2VjdXJpdHlfcmVxdWlyZW1lbnQYASADKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeVITc2VjdXJpdHlSZXF1aXJlbWVudBowChhTZWN1cml0eVJlcXVpcmVtZW50VmFsdWUSFAoFc2NvcGUYASADKAlSBXNjb3BlGp8BChhTZWN1cml0eVJlcXVpcmVtZW50RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSbQoFdmFsdWUYAiABKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZVIFdmFsdWU6AjgBIpYBCgZTY29wZXMSUgoFc2NvcGUYASADKAsyPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXMuU2NvcGVFbnRyeVIFc2NvcGUaOAoKU2NvcGVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBKjsKBlNjaGVtZRILCgdVTktOT1dOEAASCAoESFRUUBABEgkKBUhUVFBTEAISBgoCV1MQAxIHCgNXU1MQBEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK/QYKLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG86fgoRb3BlbmFwaXYyX3N3YWdnZXISHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYkgggASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlclIQb3BlbmFwaXYyU3dhZ2dlcjqGAQoTb3BlbmFwaXYyX29wZXJhdGlvbhIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJIIIAEoCzI0LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvblISb3BlbmFwaXYyT3BlcmF0aW9uOn4KEG9wZW5hcGl2Ml9zY2hlbWESHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYkgggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUg9vcGVuYXBpdjJTY2hlbWE6dQoNb3BlbmFwaXYyX3RhZxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiSCCABKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSDG9wZW5hcGl2MlRhZzp+Cg9vcGVuYXBpdjJfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJIIIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSDm9wZW5hcGl2MkZpZWxkQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwrABAoVcHJvdG8vdXNlci91c2VyLnByb3RvEg5idWNrZXRlZXIudXNlciLeAwoEVXNlchIOCgJpZBgBIAEoCVICaWQSMgoEZGF0YRgCIAMoCzIeLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YUVudHJ5UgRkYXRhEkUKC3RhZ2dlZF9kYXRhGAMgAygLMiQuYnVja2V0ZWVyLnVzZXIuVXNlci5UYWdnZWREYXRhRW50cnlSCnRhZ2dlZERhdGESGwoJbGFzdF9zZWVuGAQgASgDUghsYXN0U2VlbhIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQafAoERGF0YRI6CgV2YWx1ZRgBIAMoCzIkLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YS5WYWx1ZUVudHJ5UgV2YWx1ZRo4CgpWYWx1ZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaNwoJRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaWAoPVGFnZ2VkRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei8KBXZhbHVlGAIgASgLMhkuYnVja2V0ZWVyLnVzZXIuVXNlci5EYXRhUgV2YWx1ZToCOAFCLlosZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3VzZXJiBnByb3RvMwq+lgEKG3Byb3RvL2ZlYXR1cmUvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vZmVhdHVyZS9jb21tYW5kLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvGhtwcm90by9mZWF0dXJlL3NlZ21lbnQucHJvdG8aIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8iUAoRR2V0RmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkoKEkdldEZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSJTChJHZXRGZWF0dXJlc1JlcXVlc3QSEAoDaWRzGAIgAygJUgNpZHMSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiTQoTR2V0RmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzIvUFChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISEgoEdGFncxgDIAMoCVIEdGFncxJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEjQKB2VuYWJsZWQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEkEKDmhhc19leHBlcmltZW50GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaGFzRXhwZXJpbWVudBIlCg5zZWFyY2hfa2V5d29yZBgKIAEoCVINc2VhcmNoS2V5d29yZBI2CghhcmNoaXZlZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEkcKEWhhc19wcmVyZXF1aXNpdGVzGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIQaGFzUHJlcmVxdWlzaXRlcxIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCJXCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgRUQUdTEAQSCwoHRU5BQkxFRBAFIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAYQByKHAQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAQoaTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchISCgR0YWdzGAMgAygJUgR0YWdzEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIm0KG0xpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yIoYBChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiTQoVQ3JlYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIs8FChRVcGRhdGVGZWF0dXJlUmVxdWVzdBIYCgdjb21tZW50GAEgASgJUgdjb21tZW50EiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkEg4KAmlkGAMgASgJUgJpZBIwCgRuYW1lGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhISCgR0YWdzGAYgAygJUgR0YWdzEjQKB2VuYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSPAoKdmFyaWF0aW9ucxgJIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJFCg1wcmVyZXF1aXNpdGVzGAogAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzEjMKB3RhcmdldHMYCyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMSLQoFcnVsZXMYDCADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxJGChBkZWZhdWx0X3N0cmF0ZWd5GA0gASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSD2RlZmF1bHRTdHJhdGVneRJBCg1vZmZfdmFyaWF0aW9uGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgxvZmZWYXJpYXRpb24iTQoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIrABChRFbmFibGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRW5hYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVEaXNhYmxlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZEaXNhYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVBcmNoaXZlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BcmNoaXZlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrYBChdVbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYVW5hcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrABChREZWxldGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlRmVhdHVyZVJlc3BvbnNlIt8DChtVcGRhdGVGZWF0dXJlRGV0YWlsc1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEl0KFnJlbmFtZV9mZWF0dXJlX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5SZW5hbWVGZWF0dXJlQ29tbWFuZFIUcmVuYW1lRmVhdHVyZUNvbW1hbmQSaQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAyABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5DaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJKChBhZGRfdGFnX2NvbW1hbmRzGAQgAygLMiAuYnVja2V0ZWVyLmZlYXR1cmUuQWRkVGFnQ29tbWFuZFIOYWRkVGFnQ29tbWFuZHMSUwoTcmVtb3ZlX3RhZ19jb21tYW5kcxgFIAMoCzIjLmJ1Y2tldGVlci5mZWF0dXJlLlJlbW92ZVRhZ0NvbW1hbmRSEXJlbW92ZVRhZ0NvbW1hbmRzEhgKB2NvbW1lbnQYByABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgGEAciHgocVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSKvAQoeVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiIQofVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXNwb25zZSKhAgodVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEjYKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZFIIY29tbWFuZHMSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBJJCgRmcm9tGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QuRnJvbVIEZnJvbRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCImCgRGcm9tEgsKB1VOS05PV04QABIICgRVU0VSEAESBwoDT1BTEAJKBAgDEAQiIAoeVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIpQBChNDbG9uZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRDbG9uZUZlYXR1cmVSZXNwb25zZSLZAQoUQ3JlYXRlU2VnbWVudFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIXCgRuYW1lGAMgASgJQgPgQQJSBG5hbWUSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIgCgtkZXNjcmlwdGlvbhgFIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiTQoVQ3JlYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IloKEUdldFNlZ21lbnRSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAMgASgJQgPgQQJSDWVudmlyb25tZW50SWRKBAgCEAMiSgoSR2V0U2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50Iq8EChNMaXN0U2VnbWVudHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYBCABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSMwoGc3RhdHVzGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxJDChBpc19pbl91c2Vfc3RhdHVzGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxIqCg5lbnZpcm9ubWVudF9pZBgJIAEoCUID4EECUg1lbnZpcm9ubWVudElkIkAKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAMQBCKHAQoUTGlzdFNlZ21lbnRzUmVzcG9uc2USNgoIc2VnbWVudHMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UghzZWdtZW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKpAQoURGVsZXRlU2VnbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkElQKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50Q29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlU2VnbWVudFJlc3BvbnNlIpUCChRVcGRhdGVTZWdtZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSQoIY29tbWFuZHMYAiADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5Db21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIIY29tbWFuZHMSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIwCgRuYW1lGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbkoECAMQBCJNChVVcGRhdGVTZWdtZW50UmVzcG9uc2USNAoHc2VnbWVudBgBIAEoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRSB3NlZ21lbnQimAEKFUFkZFNlZ21lbnRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQgoHY29tbWFuZBgCIAEoCzIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBZGRTZWdtZW50VXNlclJlc3BvbnNlIp4BChhEZWxldGVTZWdtZW50VXNlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkUKB2NvbW1hbmQYAiABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50VXNlckNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGwoZRGVsZXRlU2VnbWVudFVzZXJSZXNwb25zZSK4AQoVR2V0U2VnbWVudFVzZXJSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgd1c2VyX2lkGAIgASgJUgZ1c2VySWQSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgEEAUiTAoWR2V0U2VnbWVudFVzZXJSZXNwb25zZRIyCgR1c2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXJSBHVzZXIi5gEKF0xpc3RTZWdtZW50VXNlcnNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHQoKc2VnbWVudF9pZBgDIAEoCVIJc2VnbWVudElkEjEKBXN0YXRlGAQgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBXN0YXRlEhcKB3VzZXJfaWQYBSABKAlSBnVzZXJJZBIlCg5lbnZpcm9ubWVudF9pZBgHIAEoCVINZW52aXJvbm1lbnRJZEoECAYQByJoChhMaXN0U2VnbWVudFVzZXJzUmVzcG9uc2USNAoFdXNlcnMYASADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3Ii0AIKHUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYAiABKAlSCXNlZ21lbnRJZBJdCgdjb21tYW5kGAMgASgLMjAuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc0NvbW1hbmRCERgBkkEMMgpkZXByZWNhdGVkUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkEkgKBGRhdGEYBSABKAxCNJJBMTIvc2VnbWVudCB1c2VyIGlkcyBzZXBhcmF0ZWQgYnkgY29tbWEgb3IgbmV3IGxpbmVSBGRhdGESOgoFc3RhdGUYBiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGVKBAgBEAIiIAoeQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIqkBCh9CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0Eh0KCnNlZ21lbnRfaWQYAiABKAlSCXNlZ21lbnRJZBI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiI2CiBCdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXNwb25zZRISCgRkYXRhGAEgASgMUgRkYXRhIqEBChdFdmFsdWF0ZUZlYXR1cmVzUmVxdWVzdBIoCgR1c2VyGAEgASgLMhQuYnVja2V0ZWVyLnVzZXIuVXNlclIEdXNlchIQCgN0YWcYAyABKAlSA3RhZxIdCgpmZWF0dXJlX2lkGAQgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiaQoYRXZhbHVhdGVGZWF0dXJlc1Jlc3BvbnNlEk0KEHVzZXJfZXZhbHVhdGlvbnMYASABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Vc2VyRXZhbHVhdGlvbnNSD3VzZXJFdmFsdWF0aW9ucyKsAwoPTGlzdFRhZ3NSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgCIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISRQoIb3JkZXJfYnkYBCABKA4yKi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJaCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yMS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkIkgKB09yZGVyQnkSCwoHREVGQVVMVBAAEgYKAklEEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgROQU1FEAQiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIARACIncKEExpc3RUYWdzUmVzcG9uc2USKgoEdGFncxgBIAMoCzIWLmJ1Y2tldGVlci5mZWF0dXJlLlRhZ1IEdGFncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKzAQoYQ3JlYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0EmoKG2NyZWF0ZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZFIYY3JlYXRlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIARACInAKGUNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIsMBChhEZWxldGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEmoKG2RlbGV0ZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyQ29tbWFuZFIYZGVsZXRlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGURlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2Ui5gEKGFVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSjAEKJ2NoYW5nZV9mbGFnX3RyaWdnZXJfZGVzY3JpcHRpb25fY29tbWFuZBgDIAEoCzI2LmJ1Y2tldGVlci5mZWF0dXJlLkNoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kUiNjaGFuZ2VGbGFnVHJpZ2dlckRlc2NyaXB0aW9uQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyIbChlVcGRhdGVGbGFnVHJpZ2dlclJlc3BvbnNlIsMBChhFbmFibGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEmoKG2VuYWJsZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZFIYZW5hYmxlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGUVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UixwEKGURpc2FibGVGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEm0KHGRpc2FibGVfZmxhZ190cmlnZ2VyX2NvbW1hbmQYAyABKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJDb21tYW5kUhlkaXNhYmxlRmxhZ1RyaWdnZXJDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhwKGkRpc2FibGVGbGFnVHJpZ2dlclJlc3BvbnNlIr8BChdSZXNldEZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSZwoacmVzZXRfZmxhZ190cmlnZ2VyX2NvbW1hbmQYAyABKAsyKi5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyQ29tbWFuZFIXcmVzZXRGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMibwoYUmVzZXRGbGFnVHJpZ2dlclJlc3BvbnNlEkEKDGZsYWdfdHJpZ2dlchgBIAEoCzIeLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyUgtmbGFnVHJpZ2dlchIQCgN1cmwYAiABKAlSA3VybCJUChVHZXRGbGFnVHJpZ2dlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIm0KFkdldEZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIqoDChdMaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISGwoJcGFnZV9zaXplGAQgASgFUghwYWdlU2l6ZRJNCghvcmRlcl9ieRgFIAEoDjIyLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGbGFnVHJpZ2dlcnNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYgoPb3JkZXJfZGlyZWN0aW9uGAYgASgOMjkuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDmVudmlyb25tZW50X2lkGAcgASgJUg1lbnZpcm9ubWVudElkIjYKB09yZGVyQnkSCwoHREVGQVVMVBAAEg4KCkNSRUFURURfQVQQARIOCgpVUERBVEVEX0FUEAIiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIAhADIqMCChhMaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2USYwoNZmxhZ190cmlnZ2VycxgBIAMoCzI+LmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZS5GbGFnVHJpZ2dlcldpdGhVcmxSDGZsYWdUcmlnZ2VycxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudBppChJGbGFnVHJpZ2dlcldpdGhVcmwSQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIjEKGUZsYWdUcmlnZ2VyV2ViaG9va1JlcXVlc3QSFAoFdG9rZW4YASABKAlSBXRva2VuIhwKGkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlMtI4Cg5GZWF0dXJlU2VydmljZRJbCgpHZXRGZWF0dXJlEiQuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZVJlcXVlc3QaJS5idWNrZXRlZXIuZmVhdHVyZS5HZXRGZWF0dXJlUmVzcG9uc2UiABJeCgtHZXRGZWF0dXJlcxIlLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVzUmVxdWVzdBomLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVzUmVzcG9uc2UiABJhCgxMaXN0RmVhdHVyZXMSJi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZlYXR1cmVzUmVzcG9uc2UiABJ2ChNMaXN0RW5hYmxlZEZlYXR1cmVzEi0uYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QaLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RW5hYmxlZEZlYXR1cmVzUmVzcG9uc2UiABJkCg1DcmVhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVGZWF0dXJlUmVzcG9uc2UiABJkCg1VcGRhdGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlUmVzcG9uc2UiABJnCg1FbmFibGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5FbmFibGVGZWF0dXJlUmVzcG9uc2UiA4gCARJqCg5EaXNhYmxlRmVhdHVyZRIoLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGZWF0dXJlUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGZWF0dXJlUmVzcG9uc2UiA4gCARJnCg5BcmNoaXZlRmVhdHVyZRIoLmJ1Y2tldGVlci5mZWF0dXJlLkFyY2hpdmVGZWF0dXJlUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFyY2hpdmVGZWF0dXJlUmVzcG9uc2UiABJtChBVbmFyY2hpdmVGZWF0dXJlEiouYnVja2V0ZWVyLmZlYXR1cmUuVW5hcmNoaXZlRmVhdHVyZVJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5VbmFyY2hpdmVGZWF0dXJlUmVzcG9uc2UiABJkCg1EZWxldGVGZWF0dXJlEicuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmVhdHVyZVJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVGZWF0dXJlUmVzcG9uc2UiABJ5ChRVcGRhdGVGZWF0dXJlRGV0YWlscxIuLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVEZXRhaWxzUmVxdWVzdBovLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVEZXRhaWxzUmVzcG9uc2UiABKCAQoXVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnMSMS5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVmFyaWF0aW9uc1JlcXVlc3QaMi5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVmFyaWF0aW9uc1Jlc3BvbnNlIgASfwoWVXBkYXRlRmVhdHVyZVRhcmdldGluZxIwLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVUYXJnZXRpbmdSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIgASYQoMQ2xvbmVGZWF0dXJlEiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlUmVxdWVzdBonLmJ1Y2tldGVlci5mZWF0dXJlLkNsb25lRmVhdHVyZVJlc3BvbnNlIgASpgQKDUNyZWF0ZVNlZ21lbnQSJy5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVTZWdtZW50UmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRSZXNwb25zZSLBA5JBpwMKB3NlZ21lbnQSBkNyZWF0ZRoRQ3JlYXRlIGEgc2VnbWVudC4qFXdlYi52MS5zZWdtZW50LmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhAiCy92MS9zZWdtZW50OgEqEpEECgpHZXRTZWdtZW50EiQuYnVja2V0ZWVyLmZlYXR1cmUuR2V0U2VnbWVudFJlcXVlc3QaJS5idWNrZXRlZXIuZmVhdHVyZS5HZXRTZWdtZW50UmVzcG9uc2UitQOSQZ4DCgdzZWdtZW50EgNHZXQaDkdldCBhIHNlZ21lbnQuKhJ3ZWIudjEuc2VnbWVudC5nZXRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINEgsvdjEvc2VnbWVudBKaBAoMTGlzdFNlZ21lbnRzEiYuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdBonLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RTZWdtZW50c1Jlc3BvbnNlIrgDkkGgAwoHc2VnbWVudBIETGlzdBoOTGlzdCBzZWdtZW50cy4qE3dlYi52MS5zZWdtZW50Lmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIOEgwvdjEvc2VnbWVudHMSowQKDURlbGV0ZVNlZ21lbnQSJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVTZWdtZW50UmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRSZXNwb25zZSK+A5JBpwMKB3NlZ21lbnQSBkRlbGV0ZRoRRGVsZXRlIGEgc2VnbWVudC4qFXdlYi52MS5zZWdtZW50LmRlbGV0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0qCy92MS9zZWdtZW50EqYECg1VcGRhdGVTZWdtZW50EicuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlU2VnbWVudFJlcXVlc3QaKC5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVTZWdtZW50UmVzcG9uc2UiwQOSQacDCgdzZWdtZW50EgZVcGRhdGUaEVVwZGF0ZSBhIHNlZ21lbnQuKhV3ZWIudjEuc2VnbWVudC51cGRhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIQMgsvdjEvc2VnbWVudDoBKhJqCg5BZGRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkFkZFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJzChFEZWxldGVTZWdtZW50VXNlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJqCg5HZXRTZWdtZW50VXNlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRVc2VyUmVzcG9uc2UiA4gCARJtChBMaXN0U2VnbWVudFVzZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRVc2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudFVzZXJzUmVzcG9uc2UiABLsBAoWQnVsa1VwbG9hZFNlZ21lbnRVc2VycxIwLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjEuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlIuwDkkHAAwoHc2VnbWVudBILQnVsayB1cGxvYWQaGkJ1bGsgdXBsb2FkIHNlZ21lbnQgdXNlcnMuKiB3ZWIudjEuc2VnbWVudF91c2Vycy5idWxrX3VwbG9hZEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiIiHS92MS9zZWdtZW50X3VzZXJzL2J1bGtfdXBsb2FkOgEqEoUBChhCdWxrRG93bmxvYWRTZWdtZW50VXNlcnMSMi5idWNrZXRlZXIuZmVhdHVyZS5CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXF1ZXN0GjMuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa0Rvd25sb2FkU2VnbWVudFVzZXJzUmVzcG9uc2UiABJtChBFdmFsdWF0ZUZlYXR1cmVzEiouYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGVGZWF0dXJlc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2UiABL+AwoITGlzdFRhZ3MSIi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1JlcXVlc3QaIy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0VGFnc1Jlc3BvbnNlIqgDkkGUAwoDdGFnEgRMaXN0GgpMaXN0IHRhZ3MuKg93ZWIudjEudGFnLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvdGFncxJwChFDcmVhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFVcGRhdGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFFbmFibGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJzChJEaXNhYmxlRmxhZ1RyaWdnZXISLC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJSZXF1ZXN0Gi0uYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBSZXNldEZsYWdUcmlnZ2VyEiouYnVja2V0ZWVyLmZlYXR1cmUuUmVzZXRGbGFnVHJpZ2dlclJlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJwChFEZWxldGVGbGFnVHJpZ2dlchIrLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBosLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiABJnCg5HZXRGbGFnVHJpZ2dlchIoLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVxdWVzdBopLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZsYWdUcmlnZ2VyUmVzcG9uc2UiABJtChBMaXN0RmxhZ1RyaWdnZXJzEiouYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QaKy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVzcG9uc2UiABKUAQoSRmxhZ1RyaWdnZXJXZWJob29rEiwuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBotLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyV2ViaG9va1Jlc3BvbnNlIiGC0+STAhsiGS93ZWJob29rL3RyaWdnZXJzL3t0b2tlbn1CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMw== accountDescriptor: CucDCiNwcm90by9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IukCCg1FbnZpcm9ubWVudFYyEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIdCgpwcm9qZWN0X2lkGAUgASgJUglwcm9qZWN0SWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEh0KCmNyZWF0ZWRfYXQYByABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAggASgDUgl1cGRhdGVkQXQSJwoPb3JnYW5pemF0aW9uX2lkGAkgASgJUg5vcmdhbml6YXRpb25JZBInCg9yZXF1aXJlX2NvbW1lbnQYCiABKAhSDnJlcXVpcmVDb21tZW50EiwKEmZlYXR1cmVfZmxhZ19jb3VudBgLIAEoBVIQZmVhdHVyZUZsYWdDb3VudEI1WjNnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZW52aXJvbm1lbnRiBnByb3RvMwr9AwofcHJvdG8vZW52aXJvbm1lbnQvcHJvamVjdC5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IoMDCgdQcm9qZWN0Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYAyABKAhSCGRpc2FibGVkEhQKBXRyaWFsGAQgASgIUgV0cmlhbBIjCg1jcmVhdG9yX2VtYWlsGAUgASgJUgxjcmVhdG9yRW1haWwSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAggASgJUgRuYW1lEhkKCHVybF9jb2RlGAkgASgJUgd1cmxDb2RlEicKD29yZ2FuaXphdGlvbl9pZBgKIAEoCVIOb3JnYW5pemF0aW9uSWQSKwoRZW52aXJvbm1lbnRfY291bnQYCyABKAVSEGVudmlyb25tZW50Q291bnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAwgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCq8ECiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8SFWJ1Y2tldGVlci5lbnZpcm9ubWVudCKwAwoMT3JnYW5pemF0aW9uEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgFIAEoCFIIZGlzYWJsZWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEhQKBXRyaWFsGAcgASgIUgV0cmlhbBIdCgpjcmVhdGVkX2F0GAggASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgJIAEoA1IJdXBkYXRlZEF0EiEKDHN5c3RlbV9hZG1pbhgKIAEoCFILc3lzdGVtQWRtaW4SIwoNcHJvamVjdF9jb3VudBgLIAEoBVIMcHJvamVjdENvdW50EisKEWVudmlyb25tZW50X2NvdW50GAwgASgFUhBlbnZpcm9ubWVudENvdW50Eh0KCnVzZXJfY291bnQYDSABKAVSCXVzZXJDb3VudBIfCgtvd25lcl9lbWFpbBgOIAEoCVIKb3duZXJFbWFpbEI1WjNnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZW52aXJvbm1lbnRiBnByb3RvMwqQAwohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudCLpAQoMU2VhcmNoRmlsdGVyEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhQKBXF1ZXJ5GAMgASgJUgVxdWVyeRJRChJmaWx0ZXJfdGFyZ2V0X3R5cGUYBCABKA4yIy5idWNrZXRlZXIuYWNjb3VudC5GaWx0ZXJUYXJnZXRUeXBlUhBmaWx0ZXJUYXJnZXRUeXBlEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkEiUKDmRlZmF1bHRfZmlsdGVyGAYgASgIUg1kZWZhdWx0RmlsdGVyKjEKEEZpbHRlclRhcmdldFR5cGUSCwoHVU5LTk9XThAAEhAKDEZFQVRVUkVfRkxBRxABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMKwBMKG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvGh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvGiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8aIXByb3RvL2FjY291bnQvc2VhcmNoX2ZpbHRlci5wcm90byKrAgoHQWNjb3VudBIOCgJpZBgBIAEoCVICaWQSFAoFZW1haWwYAiABKAlSBWVtYWlsEhIKBG5hbWUYAyABKAlSBG5hbWUSMwoEcm9sZRgEIAEoDjIfLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnQuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgFIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAggASgIUgdkZWxldGVkIjkKBFJvbGUSCgoGVklFV0VSEAASCgoGRURJVE9SEAESCQoFT1dORVIQAhIOCgpVTkFTU0lHTkVEEGM6AhgBIqgICglBY2NvdW50VjISFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSJwoPb3JnYW5pemF0aW9uX2lkGAQgASgJUg5vcmdhbml6YXRpb25JZBJbChFvcmdhbml6YXRpb25fcm9sZRgFIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgGIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSGgoIZGlzYWJsZWQYByABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSRgoOc2VhcmNoX2ZpbHRlcnMYCiADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgLIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgMIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYDSABKAlSCGxhbmd1YWdlEhsKCWxhc3Rfc2VlbhgOIAEoA1IIbGFzdFNlZW4SKAoQYXZhdGFyX2ZpbGVfdHlwZRgPIAEoCVIOYXZhdGFyRmlsZVR5cGUSIQoMYXZhdGFyX2ltYWdlGBAgASgMUgthdmF0YXJJbWFnZRIrChFlbnZpcm9ubWVudF9jb3VudBgRIAEoBVIQZW52aXJvbm1lbnRDb3VudBrXAQoEUm9sZSJZCgtFbnZpcm9ubWVudBIaChZFbnZpcm9ubWVudF9VTkFTU0lHTkVEEAASFgoSRW52aXJvbm1lbnRfVklFV0VSEAESFgoSRW52aXJvbm1lbnRfRURJVE9SEAIidAoMT3JnYW5pemF0aW9uEhsKF09yZ2FuaXphdGlvbl9VTkFTU0lHTkVEEAASFwoTT3JnYW5pemF0aW9uX01FTUJFUhABEhYKEk9yZ2FuaXphdGlvbl9BRE1JThACEhYKEk9yZ2FuaXphdGlvbl9PV05FUhADGnsKD0Vudmlyb25tZW50Um9sZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBJBCgRyb2xlGAIgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGUi6gYKDkNvbnNvbGVBY2NvdW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCmF2YXRhcl91cmwYAyABKAlSCWF2YXRhclVybBImCg9pc19zeXN0ZW1fYWRtaW4YBCABKAhSDWlzU3lzdGVtQWRtaW4SRwoMb3JnYW5pemF0aW9uGAUgASgLMiMuYnVja2V0ZWVyLmVudmlyb25tZW50Lk9yZ2FuaXphdGlvblIMb3JnYW5pemF0aW9uElsKEW9yZ2FuaXphdGlvbl9yb2xlGAYgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlEl4KEWVudmlyb25tZW50X3JvbGVzGAcgAygLMjEuYnVja2V0ZWVyLmFjY291bnQuQ29uc29sZUFjY291bnQuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEkYKDnNlYXJjaF9maWx0ZXJzGAggAygLMh8uYnVja2V0ZWVyLmFjY291bnQuU2VhcmNoRmlsdGVyUg1zZWFyY2hGaWx0ZXJzEh0KCmZpcnN0X25hbWUYCSABKAlSCWZpcnN0TmFtZRIbCglsYXN0X25hbWUYCiABKAlSCGxhc3ROYW1lEhoKCGxhbmd1YWdlGAsgASgJUghsYW5ndWFnZRIoChBhdmF0YXJfZmlsZV90eXBlGAwgASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYDSABKAxSC2F2YXRhckltYWdlEhsKCWxhc3Rfc2VlbhgOIAEoA1IIbGFzdFNlZW4a1gEKD0Vudmlyb25tZW50Um9sZRJGCgtlbnZpcm9ubWVudBgBIAEoCzIkLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFYyUgtlbnZpcm9ubWVudBI4Cgdwcm9qZWN0GAIgASgLMh4uYnVja2V0ZWVyLmVudmlyb25tZW50LlByb2plY3RSB3Byb2plY3QSQQoEcm9sZRgDIAEoDjItLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLkVudmlyb25tZW50UgRyb2xlQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMK5gYKG3Byb3RvL2FjY291bnQvYXBpX2tleS5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvIrsDCgZBUElLZXkSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSMgoEcm9sZRgDIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAQgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Eh4KCm1haW50YWluZXIYByABKAlSCm1haW50YWluZXISFwoHYXBpX2tleRgIIAEoCVIGYXBpS2V5EiAKC2Rlc2NyaXB0aW9uGAkgASgJUgtkZXNjcmlwdGlvbhIpChBlbnZpcm9ubWVudF9uYW1lGAogASgJUg9lbnZpcm9ubWVudE5hbWUieQoEUm9sZRILCgdVTktOT1dOEAASDgoKU0RLX0NMSUVOVBABEg4KClNES19TRVJWRVIQAhIYChRQVUJMSUNfQVBJX1JFQURfT05MWRADEhQKEFBVQkxJQ19BUElfV1JJVEUQBBIUChBQVUJMSUNfQVBJX0FETUlOEAUilQIKEUVudmlyb25tZW50QVBJS2V5EjIKB2FwaV9rZXkYAiABKAsyGS5idWNrZXRlZXIuYWNjb3VudC5BUElLZXlSBmFwaUtleRIxChRlbnZpcm9ubWVudF9kaXNhYmxlZBgDIAEoCFITZW52aXJvbm1lbnREaXNhYmxlZBIhCgpwcm9qZWN0X2lkGAQgASgJQgIYAVIJcHJvamVjdElkEkYKC2Vudmlyb25tZW50GAUgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EigKEHByb2plY3RfdXJsX2NvZGUYBiABKAlSDnByb2plY3RVcmxDb2RlSgQIARACQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMK1hEKG3Byb3RvL2FjY291bnQvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvGiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8i/AIKFkNyZWF0ZUFjY291bnRWMkNvbW1hbmQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSWwoRb3JnYW5pemF0aW9uX3JvbGUYBCABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSWQoRZW52aXJvbm1lbnRfcm9sZXMYBSADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEh0KCmZpcnN0X25hbWUYBiABKAlSCWZpcnN0TmFtZRIbCglsYXN0X25hbWUYByABKAlSCGxhc3ROYW1lEhoKCGxhbmd1YWdlGAggASgJUghsYW5ndWFnZSIwChpDaGFuZ2VBY2NvdW50VjJOYW1lQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIkAKH0NoYW5nZUFjY291bnRWMkZpcnN0TmFtZUNvbW1hbmQSHQoKZmlyc3RfbmFtZRgBIAEoCVIJZmlyc3ROYW1lIj0KHkNoYW5nZUFjY291bnRWMkxhc3ROYW1lQ29tbWFuZBIbCglsYXN0X25hbWUYASABKAlSCGxhc3ROYW1lIjwKHkNoYW5nZUFjY291bnRWMkxhbmd1YWdlQ29tbWFuZBIaCghsYW5ndWFnZRgBIAEoCVIIbGFuZ3VhZ2UiUAokQ2hhbmdlQWNjb3VudFYyQXZhdGFySW1hZ2VVcmxDb21tYW5kEigKEGF2YXRhcl9pbWFnZV91cmwYASABKAlSDmF2YXRhckltYWdlVXJsImsKHENoYW5nZUFjY291bnRWMkF2YXRhckNvbW1hbmQSIQoMYXZhdGFyX2ltYWdlGAEgASgMUgthdmF0YXJJbWFnZRIoChBhdmF0YXJfZmlsZV90eXBlGAIgASgJUg5hdmF0YXJGaWxlVHlwZSI9Ch5DaGFuZ2VBY2NvdW50VjJMYXN0U2VlbkNvbW1hbmQSGwoJbGFzdF9zZWVuGAEgASgDUghsYXN0U2VlbiJsCiZDaGFuZ2VBY2NvdW50VjJPcmdhbml6YXRpb25Sb2xlQ29tbWFuZBJCCgRyb2xlGAEgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUgRyb2xlIqUCCiZDaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZBJCCgVyb2xlcxgBIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSBXJvbGVzEmIKCndyaXRlX3R5cGUYAiABKA4yQy5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZC5Xcml0ZVR5cGVSCXdyaXRlVHlwZSJTCglXcml0ZVR5cGUSGQoVV3JpdGVUeXBlX1VOU1BFQ0lGSUVEEAASFgoSV3JpdGVUeXBlX09WRVJSSURFEAESEwoPV3JpdGVUeXBlX1BBVENIEAIiGAoWRW5hYmxlQWNjb3VudFYyQ29tbWFuZCIZChdEaXNhYmxlQWNjb3VudFYyQ29tbWFuZCIYChZEZWxldGVBY2NvdW50VjJDb21tYW5kIl0KE0NyZWF0ZUFQSUtleUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIyCgRyb2xlGAIgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUiLQoXQ2hhbmdlQVBJS2V5TmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSIVChNFbmFibGVBUElLZXlDb21tYW5kIhYKFERpc2FibGVBUElLZXlDb21tYW5kIuYBChlDcmVhdGVTZWFyY2hGaWx0ZXJDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUSFAoFcXVlcnkYAiABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgDIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBSABKAhSDWRlZmF1bHRGaWx0ZXIiQwodQ2hhbmdlU2VhcmNoRmlsdGVyTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiRgoeQ2hhbmdlU2VhcmNoRmlsdGVyUXVlcnlDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgVxdWVyeRgCIAEoCVIFcXVlcnkiWQogQ2hhbmdlRGVmYXVsdFNlYXJjaEZpbHRlckNvbW1hbmQSDgoCaWQYASABKAlSAmlkEiUKDmRlZmF1bHRfZmlsdGVyGAIgASgIUg1kZWZhdWx0RmlsdGVyIisKGURlbGV0ZVNlYXJjaEZpbHRlckNvbW1hbmQSDgoCaWQYASABKAlSAmlkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCq2+AQobcHJvdG8vYWNjb3VudC9zZXJ2aWNlLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhtwcm90by9hY2NvdW50L2FjY291bnQucHJvdG8aG3Byb3RvL2FjY291bnQvYXBpX2tleS5wcm90bxobcHJvdG8vYWNjb3VudC9jb21tYW5kLnByb3RvGiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8iNwoMR2V0TWVSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQiTAoNR2V0TWVSZXNwb25zZRI7CgdhY2NvdW50GAEgASgLMiEuYnVja2V0ZWVyLmFjY291bnQuQ29uc29sZUFjY291bnRSB2FjY291bnQiGwoZR2V0TXlPcmdhbml6YXRpb25zUmVxdWVzdCI4CiBHZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiZwoaR2V0TXlPcmdhbml6YXRpb25zUmVzcG9uc2USSQoNb3JnYW5pemF0aW9ucxgBIAMoCzIjLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Pcmdhbml6YXRpb25SDW9yZ2FuaXphdGlvbnMi7gMKFkNyZWF0ZUFjY291bnRWMlJlcXVlc3QSJwoPb3JnYW5pemF0aW9uX2lkGAEgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAIgASgLMikuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQSFAoFZW1haWwYAyABKAlSBWVtYWlsEhIKBG5hbWUYBCABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgFIAEoCVIOYXZhdGFySW1hZ2VVcmwSWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSWQoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEh0KCmZpcnN0X25hbWUYCCABKAlSCWZpcnN0TmFtZRIbCglsYXN0X25hbWUYCSABKAlSCGxhc3ROYW1lEhoKCGxhbmd1YWdlGAogASgJUghsYW5ndWFnZSJRChdDcmVhdGVBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50IqABChZFbmFibGVBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEkcKB2NvbW1hbmQYAyABKAsyKS5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBY2NvdW50VjJDb21tYW5kQgIYAVIHY29tbWFuZCJRChdFbmFibGVBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50IqIBChdEaXNhYmxlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJICgdjb21tYW5kGAMgASgLMiouYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFjY291bnRWMkNvbW1hbmRCAhgBUgdjb21tYW5kIlIKGERpc2FibGVBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50IqABChZEZWxldGVBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEkcKB2NvbW1hbmQYAyABKAsyKS5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVBY2NvdW50VjJDb21tYW5kQgIYAVIHY29tbWFuZCIZChdEZWxldGVBY2NvdW50VjJSZXNwb25zZSLmDwoWVXBkYXRlQWNjb3VudFYyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBJhChNjaGFuZ2VfbmFtZV9jb21tYW5kGAMgASgLMi0uYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyTmFtZUNvbW1hbmRCAhgBUhFjaGFuZ2VOYW1lQ29tbWFuZBJ2ChljaGFuZ2VfYXZhdGFyX3VybF9jb21tYW5kGAQgASgLMjcuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyQXZhdGFySW1hZ2VVcmxDb21tYW5kQgIYAVIWY2hhbmdlQXZhdGFyVXJsQ29tbWFuZBKGAQogY2hhbmdlX29yZ2FuaXphdGlvbl9yb2xlX2NvbW1hbmQYBSABKAsyOS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJPcmdhbml6YXRpb25Sb2xlQ29tbWFuZEICGAFSHWNoYW5nZU9yZ2FuaXphdGlvblJvbGVDb21tYW5kEoYBCiBjaGFuZ2VfZW52aXJvbm1lbnRfcm9sZXNfY29tbWFuZBgGIAEoCzI5LmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDb21tYW5kQgIYAVIdY2hhbmdlRW52aXJvbm1lbnRSb2xlc0NvbW1hbmQScQoZY2hhbmdlX2ZpcnN0X25hbWVfY29tbWFuZBgHIAEoCzIyLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkZpcnN0TmFtZUNvbW1hbmRCAhgBUhZjaGFuZ2VGaXJzdE5hbWVDb21tYW5kEm4KGGNoYW5nZV9sYXN0X25hbWVfY29tbWFuZBgIIAEoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkxhc3ROYW1lQ29tbWFuZEICGAFSFWNoYW5nZUxhc3ROYW1lQ29tbWFuZBJtChdjaGFuZ2VfbGFuZ3VhZ2VfY29tbWFuZBgJIAEoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkxhbmd1YWdlQ29tbWFuZEICGAFSFWNoYW5nZUxhbmd1YWdlQ29tbWFuZBJuChhjaGFuZ2VfbGFzdF9zZWVuX2NvbW1hbmQYCiABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJMYXN0U2VlbkNvbW1hbmRCAhgBUhVjaGFuZ2VMYXN0U2VlbkNvbW1hbmQSZwoVY2hhbmdlX2F2YXRhcl9jb21tYW5kGAsgASgLMi8uYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyQXZhdGFyQ29tbWFuZEICGAFSE2NoYW5nZUF2YXRhckNvbW1hbmQSMAoEbmFtZRgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRJGChBhdmF0YXJfaW1hZ2VfdXJsGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg5hdmF0YXJJbWFnZVVybBJsChFvcmdhbml6YXRpb25fcm9sZRgOIAEoCzI/LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuT3JnYW5pemF0aW9uUm9sZVZhbHVlUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGA8gAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxI7CgpmaXJzdF9uYW1lGBAgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUglmaXJzdE5hbWUSOQoJbGFzdF9uYW1lGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUghsYXN0TmFtZRI4CghsYW5ndWFnZRgSIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIIbGFuZ3VhZ2USOAoJbGFzdF9zZWVuGBMgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWVSCGxhc3RTZWVuElEKBmF2YXRhchgUIAEoCzI5LmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QuQWNjb3VudFYyQXZhdGFyUgZhdmF0YXISNgoIZGlzYWJsZWQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBpeCg9BY2NvdW50VjJBdmF0YXISIQoMYXZhdGFyX2ltYWdlGAEgASgMUgthdmF0YXJJbWFnZRIoChBhdmF0YXJfZmlsZV90eXBlGAIgASgJUg5hdmF0YXJGaWxlVHlwZRpbChVPcmdhbml6YXRpb25Sb2xlVmFsdWUSQgoEcm9sZRgBIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIEcm9sZSJRChdVcGRhdGVBY2NvdW50VjJSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50IlQKE0dldEFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQiTgoUR2V0QWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCJhCiJHZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIlCg5lbnZpcm9ubWVudF9pZBgCIAEoCVINZW52aXJvbm1lbnRJZCJdCiNHZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXNwb25zZRI2CgdhY2NvdW50GAEgASgLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUgdhY2NvdW50IosGChVMaXN0QWNjb3VudHNWMlJlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchInCg9vcmdhbml6YXRpb25faWQYAyABKAlSDm9yZ2FuaXphdGlvbklkEksKCG9yZGVyX2J5GAQgASgOMjAuYnVja2V0ZWVyLmFjY291bnQuTGlzdEFjY291bnRzVjJSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYAoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjcuYnVja2V0ZWVyLmFjY291bnQuTGlzdEFjY291bnRzVjJSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgGIAEoCVINc2VhcmNoS2V5d29yZBI2CghkaXNhYmxlZBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkEkgKEW9yZ2FuaXphdGlvbl9yb2xlGAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSEG9yZ2FuaXphdGlvblJvbGUSQwoOZW52aXJvbm1lbnRfaWQYCSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSDWVudmlyb25tZW50SWQSRgoQZW52aXJvbm1lbnRfcm9sZRgKIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUg9lbnZpcm9ubWVudFJvbGUiiQEKB09yZGVyQnkSCwoHREVGQVVMVBAAEgkKBUVNQUlMEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIVChFPUkdBTklaQVRJT05fUk9MRRAEEhUKEUVOVklST05NRU5UX0NPVU5UEAUSDQoJTEFTVF9TRUVOEAYSCQoFU1RBVEUQByIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAEiiwEKFkxpc3RBY2NvdW50c1YyUmVzcG9uc2USOAoIYWNjb3VudHMYASADKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSCGFjY291bnRzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IpICChNDcmVhdGVBUElLZXlSZXF1ZXN0EkQKB2NvbW1hbmQYASABKAsyJi5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBUElLZXlDb21tYW5kQgIYAVIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZBISCgRuYW1lGAQgASgJUgRuYW1lEjIKBHJvbGUYBSABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZRIeCgptYWludGFpbmVyGAYgASgJUgptYWludGFpbmVyEiAKC2Rlc2NyaXB0aW9uGAcgASgJUgtkZXNjcmlwdGlvbkoECAIQAyJKChRDcmVhdGVBUElLZXlSZXNwb25zZRIyCgdhcGlfa2V5GAEgASgLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgZhcGlLZXkinAEKF0NoYW5nZUFQSUtleU5hbWVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJECgdjb21tYW5kGAIgASgLMiouYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQVBJS2V5TmFtZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYQ2hhbmdlQVBJS2V5TmFtZVJlc3BvbnNlIpQBChNFbmFibGVBUElLZXlSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQVBJS2V5Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRFbmFibGVBUElLZXlSZXNwb25zZSKWAQoURGlzYWJsZUFQSUtleVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkEKB2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQVBJS2V5Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIXChVEaXNhYmxlQVBJS2V5UmVzcG9uc2UiTwoQR2V0QVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiRwoRR2V0QVBJS2V5UmVzcG9uc2USMgoHYXBpX2tleRgBIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5IuYEChJMaXN0QVBJS2V5c1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJICghvcmRlcl9ieRgEIAEoDjItLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5El0KD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI0LmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSNgoIZGlzYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBIpCg5lbnZpcm9ubWVudF9pZBgIIAEoCUICGAFSDWVudmlyb25tZW50SWQSJwoPZW52aXJvbm1lbnRfaWRzGAkgAygJUg5lbnZpcm9ubWVudElkcxIsCg9vcmdhbml6YXRpb25faWQYCiABKAlCA+BBAlIOb3JnYW5pemF0aW9uSWQiZgoHT3JkZXJCeRILCgdERUZBVUxUEAASCAoETkFNRRABEg4KCkNSRUFURURfQVQQAhIOCgpVUERBVEVEX0FUEAMSCAoEUk9MRRAEEg8KC0VOVklST05NRU5UEAUSCQoFU1RBVEUQBiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgDEAQihAEKE0xpc3RBUElLZXlzUmVzcG9uc2USNAoIYXBpX2tleXMYASADKAsyGS5idWNrZXRlZXIuYWNjb3VudC5BUElLZXlSB2FwaUtleXMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiNgobR2V0RW52aXJvbm1lbnRBUElLZXlSZXF1ZXN0EhcKB2FwaV9rZXkYAiABKAlSBmFwaUtleSJ0ChxHZXRFbnZpcm9ubWVudEFQSUtleVJlc3BvbnNlElQKE2Vudmlyb25tZW50X2FwaV9rZXkYASABKAsyJC5idWNrZXRlZXIuYWNjb3VudC5FbnZpcm9ubWVudEFQSUtleVIRZW52aXJvbm1lbnRBcGlLZXkiyQEKGUNyZWF0ZVNlYXJjaEZpbHRlclJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWQSRgoHY29tbWFuZBgEIAEoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZVNlYXJjaEZpbHRlckNvbW1hbmRSB2NvbW1hbmQiHAoaQ3JlYXRlU2VhcmNoRmlsdGVyUmVzcG9uc2UiwAMKGVVwZGF0ZVNlYXJjaEZpbHRlclJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWQSYAoTY2hhbmdlX25hbWVfY29tbWFuZBgEIAEoCzIwLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZVNlYXJjaEZpbHRlck5hbWVDb21tYW5kUhFjaGFuZ2VOYW1lQ29tbWFuZBJjChRjaGFuZ2VfcXVlcnlfY29tbWFuZBgFIAEoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZVNlYXJjaEZpbHRlclF1ZXJ5Q29tbWFuZFISY2hhbmdlUXVlcnlDb21tYW5kEnYKHWNoYW5nZV9kZWZhdWx0X2ZpbHRlcl9jb21tYW5kGAYgASgLMjMuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlRGVmYXVsdFNlYXJjaEZpbHRlckNvbW1hbmRSGmNoYW5nZURlZmF1bHRGaWx0ZXJDb21tYW5kIhwKGlVwZGF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlIskBChlEZWxldGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEkYKB2NvbW1hbmQYBCABKAsyLC5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVTZWFyY2hGaWx0ZXJDb21tYW5kUgdjb21tYW5kIhwKGkRlbGV0ZVNlYXJjaEZpbHRlclJlc3BvbnNlIugCChNVcGRhdGVBUElLZXlSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBIlCg5lbnZpcm9ubWVudF9pZBgCIAEoCVINZW52aXJvbm1lbnRJZBIwCgRuYW1lGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhIyCgRyb2xlGAUgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSNgoIZGlzYWJsZWQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBI8CgptYWludGFpbmVyGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgptYWludGFpbmVyIhYKFFVwZGF0ZUFQSUtleVJlc3BvbnNlMs56Cg5BY2NvdW50U2VydmljZRKeBAoFR2V0TWUSHy5idWNrZXRlZXIuYWNjb3VudC5HZXRNZVJlcXVlc3QaIC5idWNrZXRlZXIuYWNjb3VudC5HZXRNZVJlc3BvbnNlItEDkkGzAwoHQWNjb3VudBIGR2V0IE1lGh1HZXQgdGhlIHVzZXIgY29uc29sZSBhY2NvdW50LioVd2ViLnYxLmFjY291bnQuZ2V0X21lSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCFBISL3YxL2FjY291bnQvZ2V0X21lEvgEChJHZXRNeU9yZ2FuaXphdGlvbnMSLC5idWNrZXRlZXIuYWNjb3VudC5HZXRNeU9yZ2FuaXphdGlvbnNSZXF1ZXN0Gi0uYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zUmVzcG9uc2UihASSQdwDCgdBY2NvdW50EhRHZXQgTXkgT3JnYW5pemF0aW9ucxouR2V0IGFsbCB0aGUgb3JnYW5pemF0aW9ucyBmb3IgYSBzcGVjaWZpYyB1c2VyLiofd2ViLnYxLmFjY291bnQubXlfb3JnYW5pemF0aW9uc0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh4SHC92MS9hY2NvdW50L215X29yZ2FuaXphdGlvbnMSlgUKGUdldE15T3JnYW5pemF0aW9uc0J5RW1haWwSMy5idWNrZXRlZXIuYWNjb3VudC5HZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlIpQEkkHjAwoHQWNjb3VudBIdR2V0IE15IE9yZ2FuaXphdGlvbnMgQnkgRW1haWwaI0dldCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgYnkgZW1haWwuKih3ZWIudjEuYWNjb3VudC5teV9vcmdhbml6YXRpb25zX2J5X2VtYWlsSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJxIlL3YxL2FjY291bnQvbXlfb3JnYW5pemF0aW9uc19ieV9lbWFpbBK6BgoPQ3JlYXRlQWNjb3VudFYyEikuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQWNjb3VudFYyUmVxdWVzdBoqLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMlJlc3BvbnNlIs8FkkGmBQoHQWNjb3VudBIGQ3JlYXRlGlxDcmVhdGUgYW4gYWNjb3VudCB0byBoYXZlIGFjY2VzcyB0byB0aGUgY29uc29sZS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuY3JlYXRlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvY3JlYXRlX2FjY291bnQ6ASoSzgMKD0VuYWJsZUFjY291bnRWMhIpLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBY2NvdW50VjJSZXNwb25zZSLjApJBugIKB0FjY291bnQSBkVuYWJsZRpcRW5hYmxlIGFuIGFjY291bnQgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmVuYWJsZV9hY2NvdW50SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvZW5hYmxlX2FjY291bnQ6ASoSwgYKEERpc2FibGVBY2NvdW50VjISKi5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQWNjb3VudFYyUmVxdWVzdBorLmJ1Y2tldGVlci5hY2NvdW50LkRpc2FibGVBY2NvdW50VjJSZXNwb25zZSLUBZJBqgUKB0FjY291bnQSB0Rpc2FibGUaXkRpc2FibGUgYW4gYWNjb3VudCB0byBibG9jayBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHndlYi52MS5hY2NvdW50LmRpc2FibGVfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIgIhsvdjEvYWNjb3VudC9kaXNhYmxlX2FjY291bnQ6ASoSnAYKD1VwZGF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXNwb25zZSKxBZJBiAUKB0FjY291bnQSBlVwZGF0ZRo+VXBkYXRlIGFuIGFjY291bnQuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LnVwZGF0ZV9hY2NvdW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L3VwZGF0ZV9hY2NvdW50OgEqEpwGCg9EZWxldGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyUmVzcG9uc2UisQWSQYgFCgdBY2NvdW50EgZEZWxldGUaPkRlbGV0ZSBhbiBhY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC5kZWxldGVfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfIhovdjEvYWNjb3VudC9kZWxldGVfYWNjb3VudDoBKhKsBAoMR2V0QWNjb3VudFYyEiYuYnVja2V0ZWVyLmFjY291bnQuR2V0QWNjb3VudFYyUmVxdWVzdBonLmJ1Y2tldGVlci5hY2NvdW50LkdldEFjY291bnRWMlJlc3BvbnNlIsoDkkGnAwoHQWNjb3VudBIDR2V0Gg9HZXQgYW4gYWNjb3VudC4qGndlYi52MS5hY2NvdW50LmdldF9hY2NvdW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGRIXL3YxL2FjY291bnQvZ2V0X2FjY291bnQSnQUKG0dldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRBI1LmJ1Y2tldGVlci5hY2NvdW50LkdldEFjY291bnRWMkJ5RW52aXJvbm1lbnRJRFJlcXVlc3QaNi5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXNwb25zZSKOBJJB3AMKB0FjY291bnQSGkdldCBBY2NvdW50IEJ5IEVudmlyb25tZW50Gh5HZXQgYW4gYWNjb3VudCBieSBlbnZpcm9ubWVudC4qKXdlYi52MS5hY2NvdW50LmdldF9hY2NvdW50X2J5X2Vudmlyb25tZW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCKBImL3YxL2FjY291bnQvZ2V0X2FjY291bnRfYnlfZW52aXJvbm1lbnQStgQKDkxpc3RBY2NvdW50c1YyEiguYnVja2V0ZWVyLmFjY291bnQuTGlzdEFjY291bnRzVjJSZXF1ZXN0GikuYnVja2V0ZWVyLmFjY291bnQuTGlzdEFjY291bnRzVjJSZXNwb25zZSLOA5JBqQMKB0FjY291bnQSBExpc3QaDkxpc3QgYWNjb3VudHMuKhx3ZWIudjEuYWNjb3VudC5saXN0X2FjY291bnRzSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGxIZL3YxL2FjY291bnQvbGlzdF9hY2NvdW50cxKwBgoMQ3JlYXRlQVBJS2V5EiYuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQVBJS2V5UmVxdWVzdBonLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFQSUtleVJlc3BvbnNlIs4FkkGlBQoHQVBJIEtleRIGQ3JlYXRlGltDcmVhdGUgYW4gQVBJIGtleSB0byBiZSB1c2VkIG9uIHRoZSBjbGllbnQgU0RLLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC5jcmVhdGVfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfIhovdjEvYWNjb3VudC9jcmVhdGVfYXBpX2tleToBKhK8BgoQQ2hhbmdlQVBJS2V5TmFtZRIqLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVSZXF1ZXN0GisuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQVBJS2V5TmFtZVJlc3BvbnNlIs4FkkGgBQoHQVBJIEtleRITQ2hhbmdlIEFQSSBLZXkgTmFtZRpEQ2hhbmdlIHRoZSBBUEkgS2V5IE5hbWUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qIndlYi52MS5hY2NvdW50LmNoYW5nZV9hcGlfa2V5X25hbWVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJCIfL3YxL2FjY291bnQvY2hhbmdlX2FwaV9rZXlfbmFtZToBKhKTBgoMRW5hYmxlQVBJS2V5EiYuYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQVBJS2V5UmVxdWVzdBonLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleVJlc3BvbnNlIrEFkkGIBQoHQVBJIEtleRIGRW5hYmxlGj5FbmFibGUgYW4gQVBJIEtleS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuZW5hYmxlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvZW5hYmxlX2FwaV9rZXk6ASoSmgYKDURpc2FibGVBUElLZXkSJy5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQVBJS2V5UmVxdWVzdBooLmJ1Y2tldGVlci5hY2NvdW50LkRpc2FibGVBUElLZXlSZXNwb25zZSK1BZJBiwUKB0FQSSBLZXkSB0Rpc2FibGUaP0Rpc2FibGUgYW4gQVBJIEtleS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLioed2ViLnYxLmFjY291bnQuZGlzYWJsZV9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiAiGy92MS9hY2NvdW50L2Rpc2FibGVfYXBpX2tleToBKhKjBAoJR2V0QVBJS2V5EiMuYnVja2V0ZWVyLmFjY291bnQuR2V0QVBJS2V5UmVxdWVzdBokLmJ1Y2tldGVlci5hY2NvdW50LkdldEFQSUtleVJlc3BvbnNlIsoDkkGnAwoHQVBJIEtleRIDR2V0Gg9HZXQgYW4gQVBJIEtleS4qGndlYi52MS5hY2NvdW50LmdldF9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGRIXL3YxL2FjY291bnQvZ2V0X2FwaV9rZXkSrQQKC0xpc3RBUElLZXlzEiUuYnVja2V0ZWVyLmFjY291bnQuTGlzdEFQSUtleXNSZXF1ZXN0GiYuYnVja2V0ZWVyLmFjY291bnQuTGlzdEFQSUtleXNSZXNwb25zZSLOA5JBqQMKB0FQSSBLZXkSBExpc3QaDkxpc3QgQVBJIEtleXMuKhx3ZWIudjEuYWNjb3VudC5saXN0X2FwaV9rZXlzSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGxIZL3YxL2FjY291bnQvbGlzdF9hcGlfa2V5cxL8BAoUR2V0RW52aXJvbm1lbnRBUElLZXkSLi5idWNrZXRlZXIuYWNjb3VudC5HZXRFbnZpcm9ubWVudEFQSUtleVJlcXVlc3QaLy5idWNrZXRlZXIuYWNjb3VudC5HZXRFbnZpcm9ubWVudEFQSUtleVJlc3BvbnNlIoIEkkHTAwoHQVBJIEtleRIXR2V0IEVudmlyb25tZW50IEFQSSBLZXkaG0dldCBhbiBlbnZpcm9ubWVudCBBUEkgS2V5Liomd2ViLnYxLmFjY291bnQuZ2V0X2Vudmlyb25tZW50X2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIlEiMvdjEvYWNjb3VudC9nZXRfZW52aXJvbm1lbnRfYXBpX2tleRLFBgoSQ3JlYXRlU2VhcmNoRmlsdGVyEiwuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlU2VhcmNoRmlsdGVyUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlItEFkkGiBQoHQWNjb3VudBIUQ3JlYXRlIFNlYXJjaCBGaWx0ZXIaRENyZWF0ZSBhIHNlYXJjaCBmaWx0ZXIuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBWSUVXRVJgIHJvbGUuKiN3ZWIudjEuYWNjb3VudC5jcmVhdGVfc2VhcmNoX2ZpbHRlckq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIlIiAvdjEvYWNjb3VudC9jcmVhdGVfc2VhcmNoX2ZpbHRlcjoBKhLFBgoSVXBkYXRlU2VhcmNoRmlsdGVyEiwuYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlU2VhcmNoRmlsdGVyUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlItEFkkGiBQoHQWNjb3VudBIUVXBkYXRlIFNlYXJjaCBGaWx0ZXIaRFVwZGF0ZSBhIHNlYXJjaCBmaWx0ZXIuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBWSUVXRVJgIHJvbGUuKiN3ZWIudjEuYWNjb3VudC51cGRhdGVfc2VhcmNoX2ZpbHRlckq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIlIiAvdjEvYWNjb3VudC91cGRhdGVfc2VhcmNoX2ZpbHRlcjoBKhLFBgoSRGVsZXRlU2VhcmNoRmlsdGVyEiwuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlU2VhcmNoRmlsdGVyUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZVNlYXJjaEZpbHRlclJlc3BvbnNlItEFkkGiBQoHQWNjb3VudBIURGVsZXRlIFNlYXJjaCBGaWx0ZXIaRERlbGV0ZSBhIHNlYXJjaCBmaWx0ZXIuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBWSUVXRVJgIHJvbGUuKiN3ZWIudjEuYWNjb3VudC5kZWxldGVfc2VhcmNoX2ZpbHRlckq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIlIiAvdjEvYWNjb3VudC9kZWxldGVfc2VhcmNoX2ZpbHRlcjoBKhKbBgoMVXBkYXRlQVBJS2V5EiYuYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQVBJS2V5UmVxdWVzdBonLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFQSUtleVJlc3BvbnNlIrkFkkGQBQoHQVBJIEtleRIOVXBkYXRlIEFQSSBLZXkaPlVwZGF0ZSBhbiBBUEkgS2V5LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC51cGRhdGVfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfMhovdjEvYWNjb3VudC91cGRhdGVfYXBpX2tleToBKkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYWNjb3VudGIGcHJvdG8z experimentcalculatorDescriptor: CtYBCh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiZwoJVmFyaWF0aW9uEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUSEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq8BwohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8i0AUKCkV4cGVyaW1lbnQSDgoCaWQYASABKAlSAmlkEhsKB2dvYWxfaWQYAiABKAlCAhgBUgZnb2FsSWQSHQoKZmVhdHVyZV9pZBgDIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgEIAEoBVIOZmVhdHVyZVZlcnNpb24SPAoKdmFyaWF0aW9ucxgFIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSHAoHc3RvcHBlZBgIIAEoCEICGAFSB3N0b3BwZWQSIQoKc3RvcHBlZF9hdBgJIAEoA0ICMAFSCXN0b3BwZWRBdBIdCgpjcmVhdGVkX2F0GAogASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgLIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYDCABKAhSB2RlbGV0ZWQSGQoIZ29hbF9pZHMYDSADKAlSB2dvYWxJZHMSEgoEbmFtZRgOIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgPIAEoCVILZGVzY3JpcHRpb24SKgoRYmFzZV92YXJpYXRpb25faWQYECABKAlSD2Jhc2VWYXJpYXRpb25JZBI/CgZzdGF0dXMYEiABKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IGc3RhdHVzEh4KCm1haW50YWluZXIYEyABKAlSCm1haW50YWluZXISGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkIkIKBlN0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAhIRCg1GT1JDRV9TVE9QUEVEEANKBAgREBIiUQoLRXhwZXJpbWVudHMSQgoLZXhwZXJpbWVudHMYASADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50c0I0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCuADCihwcm90by9leHBlcmltZW50Y2FsY3VsYXRvci9zZXJ2aWNlLnByb3RvEh5idWNrZXRlZXIuZXhwZXJpbWVudGNhbGN1bGF0b3IaIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90byJ7ChBCYXRjaENhbGNSZXF1ZXN0EiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkAKCmV4cGVyaW1lbnQYAiABKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgpleHBlcmltZW50IhMKEUJhdGNoQ2FsY1Jlc3BvbnNlMpYBChtFeHBlcmltZW50Q2FsY3VsYXRvclNlcnZpY2USdwoOQ2FsY0V4cGVyaW1lbnQSMC5idWNrZXRlZXIuZXhwZXJpbWVudGNhbGN1bGF0b3IuQmF0Y2hDYWxjUmVxdWVzdBoxLmJ1Y2tldGVlci5leHBlcmltZW50Y2FsY3VsYXRvci5CYXRjaENhbGNSZXNwb25zZSIAQj5aPGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50Y2FsY3VsYXRvcmIGcHJvdG8z - auditlogDescriptor: CuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKxwMKGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSLaAgoGQ2xhdXNlEg4KAmlkGAEgASgJUgJpZBIcCglhdHRyaWJ1dGUYAiABKAlSCWF0dHJpYnV0ZRI+CghvcGVyYXRvchgDIAEoDjIiLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISFgoGdmFsdWVzGAQgAygJUgZ2YWx1ZXMiyQEKCE9wZXJhdG9yEgoKBkVRVUFMUxAAEgYKAklOEAESDQoJRU5EU19XSVRIEAISDwoLU1RBUlRTX1dJVEgQAxILCgdTRUdNRU5UEAQSCwoHR1JFQVRFUhAFEhQKEEdSRUFURVJfT1JfRVFVQUwQBhIICgRMRVNTEAcSEQoNTEVTU19PUl9FUVVBTBAIEgoKBkJFRk9SRRAJEgkKBUFGVEVSEAoSEAoMRkVBVFVSRV9GTEFHEAsSEwoPUEFSVElBTExZX01BVENIEAxCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrAEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEiqAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50GtcBCgRSb2xlIlkKC0Vudmlyb25tZW50EhoKFkVudmlyb25tZW50X1VOQVNTSUdORUQQABIWChJFbnZpcm9ubWVudF9WSUVXRVIQARIWChJFbnZpcm9ubWVudF9FRElUT1IQAiJ0CgxPcmdhbml6YXRpb24SGwoXT3JnYW5pemF0aW9uX1VOQVNTSUdORUQQABIXChNPcmdhbml6YXRpb25fTUVNQkVSEAESFgoST3JnYW5pemF0aW9uX0FETUlOEAISFgoST3JnYW5pemF0aW9uX09XTkVSEAMaewoPRW52aXJvbm1lbnRSb2xlEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkEKBHJvbGUYAiABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZSLqBgoOQ29uc29sZUFjY291bnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKYXZhdGFyX3VybBgDIAEoCVIJYXZhdGFyVXJsEiYKD2lzX3N5c3RlbV9hZG1pbhgEIAEoCFINaXNTeXN0ZW1BZG1pbhJHCgxvcmdhbml6YXRpb24YBSABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24SWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSXgoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyMS5idWNrZXRlZXIuYWNjb3VudC5Db25zb2xlQWNjb3VudC5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSRgoOc2VhcmNoX2ZpbHRlcnMYCCADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgJIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgKIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCyABKAlSCGxhbmd1YWdlEigKEGF2YXRhcl9maWxlX3R5cGUYDCABKAlSDmF2YXRhckZpbGVUeXBlEiEKDGF2YXRhcl9pbWFnZRgNIAEoDFILYXZhdGFySW1hZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhrWAQoPRW52aXJvbm1lbnRSb2xlEkYKC2Vudmlyb25tZW50GAEgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EjgKB3Byb2plY3QYAiABKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIHcHJvamVjdBJBCgRyb2xlGAMgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGVCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrmBgobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8iuwMKBkFQSUtleRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIyCgRyb2xlGAMgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHgoKbWFpbnRhaW5lchgHIAEoCVIKbWFpbnRhaW5lchIXCgdhcGlfa2V5GAggASgJUgZhcGlLZXkSIAoLZGVzY3JpcHRpb24YCSABKAlSC2Rlc2NyaXB0aW9uEikKEGVudmlyb25tZW50X25hbWUYCiABKAlSD2Vudmlyb25tZW50TmFtZSJ5CgRSb2xlEgsKB1VOS05PV04QABIOCgpTREtfQ0xJRU5UEAESDgoKU0RLX1NFUlZFUhACEhgKFFBVQkxJQ19BUElfUkVBRF9PTkxZEAMSFAoQUFVCTElDX0FQSV9XUklURRAEEhQKEFBVQkxJQ19BUElfQURNSU4QBSKVAgoRRW52aXJvbm1lbnRBUElLZXkSMgoHYXBpX2tleRgCIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5EjEKFGVudmlyb25tZW50X2Rpc2FibGVkGAMgASgIUhNlbnZpcm9ubWVudERpc2FibGVkEiEKCnByb2plY3RfaWQYBCABKAlCAhgBUglwcm9qZWN0SWQSRgoLZW52aXJvbm1lbnQYBSABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSKAoQcHJvamVjdF91cmxfY29kZRgGIAEoCVIOcHJvamVjdFVybENvZGVKBAgBEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwqaCwoacHJvdG8vYXV0b29wcy9jbGF1c2UucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvIoYBCgZDbGF1c2USDgoCaWQYASABKAlSAmlkEiwKBmNsYXVzZRgCIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBmNsYXVzZRI+CgthY3Rpb25fdHlwZRgDIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUi3wIKEk9wc0V2ZW50UmF0ZUNsYXVzZRIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkEhcKB2dvYWxfaWQYAyABKAlSBmdvYWxJZBIbCgltaW5fY291bnQYBCABKANSCG1pbkNvdW50EikKEHRocmVhZHNob2xkX3JhdGUYBSABKAFSD3RocmVhZHNob2xkUmF0ZRJKCghvcGVyYXRvchgGIAEoDjIuLmJ1Y2tldGVlci5hdXRvb3BzLk9wc0V2ZW50UmF0ZUNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISPgoLYWN0aW9uX3R5cGUYByABKA4yHS5idWNrZXRlZXIuYXV0b29wcy5BY3Rpb25UeXBlUgphY3Rpb25UeXBlIjMKCE9wZXJhdG9yEhQKEEdSRUFURVJfT1JfRVFVQUwQABIRCg1MRVNTX09SX0VRVUFMEAFKBAgBEAIiZAoORGF0ZXRpbWVDbGF1c2USEgoEdGltZRgBIAEoA1IEdGltZRI+CgthY3Rpb25fdHlwZRgCIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUilwEKGlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlEh8KC3NjaGVkdWxlX2lkGAEgASgJUgpzY2hlZHVsZUlkEh0KCmV4ZWN1dGVfYXQYAiABKANSCWV4ZWN1dGVBdBIWCgZ3ZWlnaHQYAyABKAVSBndlaWdodBIhCgx0cmlnZ2VyZWRfYXQYBCABKANSC3RyaWdnZXJlZEF0IpgBCiZQcm9ncmVzc2l2ZVJvbGxvdXRNYW51YWxTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQi2AIKKFByb2dyZXNzaXZlUm9sbG91dFRlbXBsYXRlU2NoZWR1bGVDbGF1c2USSwoJc2NoZWR1bGVzGAEgAygLMi0uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGVSCXNjaGVkdWxlcxJgCghpbnRlcnZhbBgCIAEoDjJELmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFRlbXBsYXRlU2NoZWR1bGVDbGF1c2UuSW50ZXJ2YWxSCGludGVydmFsEh4KCmluY3JlbWVudHMYAyABKANSCmluY3JlbWVudHMSIQoMdmFyaWF0aW9uX2lkGAQgASgJUgt2YXJpYXRpb25JZCI6CghJbnRlcnZhbBILCgdVTktOT1dOEAASCgoGSE9VUkxZEAESCQoFREFJTFkQAhIKCgZXRUVLTFkQAyoyCgpBY3Rpb25UeXBlEgsKB1VOS05PV04QABIKCgZFTkFCTEUQARILCgdESVNBQkxFEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1dG9vcHNiBnByb3RvMwq9BQohcHJvdG8vYXV0b29wcy9hdXRvX29wc19ydWxlLnByb3RvEhFidWNrZXRlZXIuYXV0b29wcxoacHJvdG8vYXV0b29wcy9jbGF1c2UucHJvdG8i0AIKC0F1dG9PcHNSdWxlEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSNQoIb3BzX3R5cGUYAyABKA4yGi5idWNrZXRlZXIuYXV0b29wcy5PcHNUeXBlUgdvcHNUeXBlEjMKB2NsYXVzZXMYBCADKAsyGS5idWNrZXRlZXIuYXV0b29wcy5DbGF1c2VSB2NsYXVzZXMSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAkgASgIUgdkZWxldGVkEkgKD2F1dG9fb3BzX3N0YXR1cxgKIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSDWF1dG9PcHNTdGF0dXNKBAgGEAciVAoMQXV0b09wc1J1bGVzEkQKDmF1dG9fb3BzX3J1bGVzGAEgAygLMh4uYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1J1bGVSDGF1dG9PcHNSdWxlcyo/CgdPcHNUeXBlEhAKDFRZUEVfVU5LTk9XThAAEgwKCFNDSEVEVUxFEAISDgoKRVZFTlRfUkFURRADIgQIARABKkQKDUF1dG9PcHNTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARIMCghGSU5JU0hFRBACEgsKB1NUT1BQRUQQA0IxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCvADCiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvEhZidWNrZXRlZXIubm90aWZpY2F0aW9uIrcCCglSZWNpcGllbnQSOgoEdHlwZRgBIAEoDjImLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50LlR5cGVSBHR5cGUSZQoXc2xhY2tfY2hhbm5lbF9yZWNpcGllbnQYAiABKAsyLS5idWNrZXRlZXIubm90aWZpY2F0aW9uLlNsYWNrQ2hhbm5lbFJlY2lwaWVudFIVc2xhY2tDaGFubmVsUmVjaXBpZW50EkYKCGxhbmd1YWdlGAMgASgOMiouYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnQuTGFuZ3VhZ2VSCGxhbmd1YWdlIhgKBFR5cGUSEAoMU2xhY2tDaGFubmVsEAAiJQoITGFuZ3VhZ2USCwoHRU5HTElTSBAAEgwKCEpBUEFORVNFEAEiOAoVU2xhY2tDaGFubmVsUmVjaXBpZW50Eh8KC3dlYmhvb2tfdXJsGAEgASgJUgp3ZWJob29rVXJsQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ub3RpZmljYXRpb25iBnByb3RvMwrPCAolcHJvdG8vbm90aWZpY2F0aW9uL3N1YnNjcmlwdGlvbi5wcm90bxIWYnVja2V0ZWVyLm5vdGlmaWNhdGlvbhoicHJvdG8vbm90aWZpY2F0aW9uL3JlY2lwaWVudC5wcm90byKpBwoMU3Vic2NyaXB0aW9uEg4KAmlkGAEgASgJUgJpZBIdCgpjcmVhdGVkX2F0GAIgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0EhoKCGRpc2FibGVkGAQgASgIUghkaXNhYmxlZBJSCgxzb3VyY2VfdHlwZXMYBSADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcxI/CglyZWNpcGllbnQYBiABKAsyIS5idWNrZXRlZXIubm90aWZpY2F0aW9uLlJlY2lwaWVudFIJcmVjaXBpZW50EhIKBG5hbWUYByABKAlSBG5hbWUSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWQSKQoQZW52aXJvbm1lbnRfbmFtZRgJIAEoCVIPZW52aXJvbm1lbnROYW1lIrMECgpTb3VyY2VUeXBlEhgKFERPTUFJTl9FVkVOVF9GRUFUVVJFEAASFQoRRE9NQUlOX0VWRU5UX0dPQUwQARIbChdET01BSU5fRVZFTlRfRVhQRVJJTUVOVBACEhgKFERPTUFJTl9FVkVOVF9BQ0NPVU5UEAMSFwoTRE9NQUlOX0VWRU5UX0FQSUtFWRAEEhgKFERPTUFJTl9FVkVOVF9TRUdNRU5UEAUSHAoYRE9NQUlOX0VWRU5UX0VOVklST05NRU5UEAYSHgoaRE9NQUlOX0VWRU5UX0FETUlOX0FDQ09VTlQQBxIdChlET01BSU5fRVZFTlRfQVVUT09QU19SVUxFEAgSFQoRRE9NQUlOX0VWRU5UX1BVU0gQCRIdChlET01BSU5fRVZFTlRfU1VCU0NSSVBUSU9OEAoSIwofRE9NQUlOX0VWRU5UX0FETUlOX1NVQlNDUklQVElPThALEhgKFERPTUFJTl9FVkVOVF9QUk9KRUNUEAwSGAoURE9NQUlOX0VWRU5UX1dFQkhPT0sQDRIkCiBET01BSU5fRVZFTlRfUFJPR1JFU1NJVkVfUk9MTE9VVBAOEh0KGURPTUFJTl9FVkVOVF9PUkdBTklaQVRJT04QDxIdChlET01BSU5fRVZFTlRfRkxBR19UUklHR0VSEBASEQoNRkVBVFVSRV9TVEFMRRBkEhcKEkVYUEVSSU1FTlRfUlVOTklORxDIARIOCglNQVVfQ09VTlQQrAJCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL25vdGlmaWNhdGlvbmIGcHJvdG8zCvcFCidwcm90by9hdXRvb3BzL3Byb2dyZXNzaXZlX3JvbGxvdXQucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvIuIEChJQcm9ncmVzc2l2ZVJvbGxvdXQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIsCgZjbGF1c2UYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgZjbGF1c2USRAoGc3RhdHVzGAQgASgOMiwuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0YXR1c1IGc3RhdHVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSPgoEdHlwZRgHIAEoDjIqLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5UeXBlUgR0eXBlEk4KCnN0b3BwZWRfYnkYCCABKA4yLy5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuU3RvcHBlZEJ5UglzdG9wcGVkQnkSHQoKc3RvcHBlZF9hdBgJIAEoA1IJc3RvcHBlZEF0IjIKBFR5cGUSEwoPTUFOVUFMX1NDSEVEVUxFEAASFQoRVEVNUExBVEVfU0NIRURVTEUQASI9CgZTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARIMCghGSU5JU0hFRBACEgsKB1NUT1BQRUQQAyJJCglTdG9wcGVkQnkSCwoHVU5LTk9XThAAEggKBFVTRVIQARIQCgxPUFNfU0NIRURVTEUQAhITCg9PUFNfS0lMTF9TV0lUQ0gQA0IxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCqAFCiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUirQQKC0ZsYWdUcmlnZ2VyEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAUgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBiABKAlSC2Rlc2NyaXB0aW9uEiMKDXRyaWdnZXJfY291bnQYByABKAVSDHRyaWdnZXJDb3VudBIqChFsYXN0X3RyaWdnZXJlZF9hdBgIIAEoA1IPbGFzdFRyaWdnZXJlZEF0EhQKBXRva2VuGAkgASgJUgV0b2tlbhIaCghkaXNhYmxlZBgKIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgLIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYDCABKANSCXVwZGF0ZWRBdBIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCIqCgRUeXBlEhAKDFR5cGVfVU5LTk9XThAAEhAKDFR5cGVfV0VCSE9PSxABIjsKBkFjdGlvbhISCg5BY3Rpb25fVU5LTk9XThAAEg0KCUFjdGlvbl9PThABEg4KCkFjdGlvbl9PRkYQAkoECAMQBEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCtfGAQoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvEhZidWNrZXRlZXIuZXZlbnQuZG9tYWluGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8aG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8aGnByb3RvL2F1dG9vcHMvY2xhdXNlLnByb3RvGiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvGiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIp8uCgVFdmVudBIOCgJpZBgBIAEoCVICaWQSHAoJdGltZXN0YW1wGAIgASgDUgl0aW1lc3RhbXASSQoLZW50aXR5X3R5cGUYAyABKA4yKC5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LkVudGl0eVR5cGVSCmVudGl0eVR5cGUSGwoJZW50aXR5X2lkGAQgASgJUghlbnRpdHlJZBI2CgR0eXBlGAUgASgOMiIuYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FdmVudC5UeXBlUgR0eXBlEjYKBmVkaXRvchgGIAEoCzIeLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRWRpdG9yUgZlZGl0b3ISKAoEZGF0YRgHIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBGRhdGESJAoOaXNfYWRtaW5fZXZlbnQYCSABKAhSDGlzQWRtaW5FdmVudBI5CgdvcHRpb25zGAogASgLMh8uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5PcHRpb25zUgdvcHRpb25zEh8KC2VudGl0eV9kYXRhGAsgASgJUgplbnRpdHlEYXRhEjAKFHByZXZpb3VzX2VudGl0eV9kYXRhGAwgASgJUhJwcmV2aW91c0VudGl0eURhdGESJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQikwIKCkVudGl0eVR5cGUSCwoHRkVBVFVSRRAAEggKBEdPQUwQARIOCgpFWFBFUklNRU5UEAISCwoHQUNDT1VOVBADEgoKBkFQSUtFWRAEEgsKB1NFR01FTlQQBRIPCgtFTlZJUk9OTUVOVBAGEhEKDUFETUlOX0FDQ09VTlQQBxIQCgxBVVRPT1BTX1JVTEUQCBIICgRQVVNIEAkSEAoMU1VCU0NSSVBUSU9OEAoSFgoSQURNSU5fU1VCU0NSSVBUSU9OEAsSCwoHUFJPSkVDVBAMEhcKE1BST0dSRVNTSVZFX1JPTExPVVQQDhIQCgxPUkdBTklaQVRJT04QDxIQCgxGTEFHX1RSSUdHRVIQECIECA0QDSLuJwoEVHlwZRILCgdVTktOT1dOEAASEwoPRkVBVFVSRV9DUkVBVEVEEAESEwoPRkVBVFVSRV9SRU5BTUVEEAISEwoPRkVBVFVSRV9FTkFCTEVEEAMSFAoQRkVBVFVSRV9ESVNBQkxFRBAEEhMKD0ZFQVRVUkVfREVMRVRFRBAFEh8KG0ZFQVRVUkVfREVTQ1JJUFRJT05fQ0hBTkdFRBAIEhsKF0ZFQVRVUkVfVkFSSUFUSU9OX0FEREVEEAkSHQoZRkVBVFVSRV9WQVJJQVRJT05fUkVNT1ZFRBAKEiEKHUZFQVRVUkVfT0ZGX1ZBUklBVElPTl9DSEFOR0VEEAsSGwoXVkFSSUFUSU9OX1ZBTFVFX0NIQU5HRUQQDBIaChZWQVJJQVRJT05fTkFNRV9DSEFOR0VEEA0SIQodVkFSSUFUSU9OX0RFU0NSSVBUSU9OX0NIQU5HRUQQDhIYChRWQVJJQVRJT05fVVNFUl9BRERFRBAPEhoKFlZBUklBVElPTl9VU0VSX1JFTU9WRUQQEBIWChJGRUFUVVJFX1JVTEVfQURERUQQERIhCh1GRUFUVVJFX1JVTEVfU1RSQVRFR1lfQ0hBTkdFRBASEhgKFEZFQVRVUkVfUlVMRV9ERUxFVEVEEBMSFQoRUlVMRV9DTEFVU0VfQURERUQQFBIXChNSVUxFX0NMQVVTRV9ERUxFVEVEEBUSHwobUlVMRV9GSVhFRF9TVFJBVEVHWV9DSEFOR0VEEBYSIQodUlVMRV9ST0xMT1VUX1NUUkFURUdZX0NIQU5HRUQQFxIcChhDTEFVU0VfQVRUUklCVVRFX0NIQU5HRUQQGBIbChdDTEFVU0VfT1BFUkFUT1JfQ0hBTkdFRBAZEhYKEkNMQVVTRV9WQUxVRV9BRERFRBAaEhgKFENMQVVTRV9WQUxVRV9SRU1PVkVEEBsSJAogRkVBVFVSRV9ERUZBVUxUX1NUUkFURUdZX0NIQU5HRUQQHBIVChFGRUFUVVJFX1RBR19BRERFRBAdEhcKE0ZFQVRVUkVfVEFHX1JFTU9WRUQQHhIfChtGRUFUVVJFX1ZFUlNJT05fSU5DUkVNRU5URUQQHxIUChBGRUFUVVJFX0FSQ0hJVkVEECASEgoORkVBVFVSRV9DTE9ORUQQIRIWChJGRUFUVVJFX1VOQVJDSElWRUQQIxIXChNTQU1QTElOR19TRUVEX1JFU0VUECISFgoSUFJFUkVRVUlTSVRFX0FEREVEECQSGAoUUFJFUkVRVUlTSVRFX1JFTU9WRUQQJRIiCh5QUkVSRVFVSVNJVEVfVkFSSUFUSU9OX0NIQU5HRUQQJhIfChtGRUFUVVJFX1JVTEVTX09SREVSX0NIQU5HRUQQJxITCg9GRUFUVVJFX1VQREFURUQQKBIQCgxHT0FMX0NSRUFURUQQZBIQCgxHT0FMX1JFTkFNRUQQZRIcChhHT0FMX0RFU0NSSVBUSU9OX0NIQU5HRUQQZhIQCgxHT0FMX0RFTEVURUQQZxIRCg1HT0FMX0FSQ0hJVkVEEGgSFwoSRVhQRVJJTUVOVF9DUkVBVEVEEMgBEhcKEkVYUEVSSU1FTlRfU1RPUFBFRBDJARIgChtFWFBFUklNRU5UX1NUQVJUX0FUX0NIQU5HRUQQygESHwoaRVhQRVJJTUVOVF9TVE9QX0FUX0NIQU5HRUQQywESFwoSRVhQRVJJTUVOVF9ERUxFVEVEEMwBEh4KGUVYUEVSSU1FTlRfUEVSSU9EX0NIQU5HRUQQzQESHAoXRVhQRVJJTUVOVF9OQU1FX0NIQU5HRUQQzgESIwoeRVhQRVJJTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEM8BEhcKEkVYUEVSSU1FTlRfU1RBUlRFRBDQARIYChNFWFBFUklNRU5UX0ZJTklTSEVEENEBEhgKE0VYUEVSSU1FTlRfQVJDSElWRUQQ0gESGAoPQUNDT1VOVF9DUkVBVEVEEKwCGgIIARIdChRBQ0NPVU5UX1JPTEVfQ0hBTkdFRBCtAhoCCAESGAoPQUNDT1VOVF9FTkFCTEVEEK4CGgIIARIZChBBQ0NPVU5UX0RJU0FCTEVEEK8CGgIIARIYCg9BQ0NPVU5UX0RFTEVURUQQsAIaAggBEhcKEkFDQ09VTlRfVjJfQ1JFQVRFRBCxAhIcChdBQ0NPVU5UX1YyX05BTUVfQ0hBTkdFRBCyAhIoCiNBQ0NPVU5UX1YyX0FWQVRBUl9JTUFHRV9VUkxfQ0hBTkdFRBCzAhIpCiRBQ0NPVU5UX1YyX09SR0FOSVpBVElPTl9ST0xFX0NIQU5HRUQQtAISKQokQUNDT1VOVF9WMl9FTlZJUk9OTUVOVF9ST0xFU19DSEFOR0VEELUCEhcKEkFDQ09VTlRfVjJfRU5BQkxFRBC2AhIYChNBQ0NPVU5UX1YyX0RJU0FCTEVEELcCEhcKEkFDQ09VTlRfVjJfREVMRVRFRBC4AhIlCiBBQ0NPVU5UX1YyX0NSRUFURURfU0VBUkNIX0ZJTFRFUhC5AhIqCiVBQ0NPVU5UX1YyX1NFQVJDSF9GSUxURVJfTkFORV9DSEFOR0VEELoCEisKJkFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9RVUVSWV9DSEFOR0VEELsCEi0KKEFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9ERUZBVUxUX0NIQU5HRUQQvAISJQogQUNDT1VOVF9WMl9TRUFSQ0hfRklMVEVSX0RFTEVURUQQvQISIgodQUNDT1VOVF9WMl9GSVJTVF9OQU1FX0NIQU5HRUQQvgISIQocQUNDT1VOVF9WMl9MQVNUX05BTUVfQ0hBTkdFRBC/AhIgChtBQ0NPVU5UX1YyX0xBTkdVQUdFX0NIQU5HRUQQwAISFwoSQUNDT1VOVF9WMl9VUERBVEVEEMECEhMKDkFQSUtFWV9DUkVBVEVEEJADEhgKE0FQSUtFWV9OQU1FX0NIQU5HRUQQkQMSEwoOQVBJS0VZX0VOQUJMRUQQkgMSFAoPQVBJS0VZX0RJU0FCTEVEEJMDEhMKDkFQSUtFWV9DSEFOR0VEEJQDEhQKD1NFR01FTlRfQ1JFQVRFRBD0AxIUCg9TRUdNRU5UX0RFTEVURUQQ9QMSGQoUU0VHTUVOVF9OQU1FX0NIQU5HRUQQ9gMSIAobU0VHTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEPcDEhcKElNFR01FTlRfUlVMRV9BRERFRBD4AxIZChRTRUdNRU5UX1JVTEVfREVMRVRFRBD5AxIeChlTRUdNRU5UX1JVTEVfQ0xBVVNFX0FEREVEEPoDEiAKG1NFR01FTlRfUlVMRV9DTEFVU0VfREVMRVRFRBD7AxIlCiBTRUdNRU5UX0NMQVVTRV9BVFRSSUJVVEVfQ0hBTkdFRBD8AxIkCh9TRUdNRU5UX0NMQVVTRV9PUEVSQVRPUl9DSEFOR0VEEP0DEh8KGlNFR01FTlRfQ0xBVVNFX1ZBTFVFX0FEREVEEP4DEiEKHFNFR01FTlRfQ0xBVVNFX1ZBTFVFX1JFTU9WRUQQ/wMSFwoSU0VHTUVOVF9VU0VSX0FEREVEEIAEEhkKFFNFR01FTlRfVVNFUl9ERUxFVEVEEIEEEh4KGVNFR01FTlRfQlVMS19VUExPQURfVVNFUlMQggQSLQooU0VHTUVOVF9CVUxLX1VQTE9BRF9VU0VSU19TVEFUVVNfQ0hBTkdFRBCDBBIYChNFTlZJUk9OTUVOVF9DUkVBVEVEENgEEhgKE0VOVklST05NRU5UX1JFTkFNRUQQ2QQSJAofRU5WSVJPTk1FTlRfREVTQ1JJUFRJT05fQ0hBTkdFRBDaBBIYChNFTlZJUk9OTUVOVF9ERUxFVEVEENsEEhsKFkVOVklST05NRU5UX1YyX0NSRUFURUQQ3AQSGwoWRU5WSVJPTk1FTlRfVjJfUkVOQU1FRBDdBBInCiJFTlZJUk9OTUVOVF9WMl9ERVNDUklQVElPTl9DSEFOR0VEEN4EEhwKF0VOVklST05NRU5UX1YyX0FSQ0hJVkVEEN8EEh4KGUVOVklST05NRU5UX1YyX1VOQVJDSElWRUQQ4AQSKwomRU5WSVJPTk1FTlRfVjJfUkVRVUlSRV9DT01NRU5UX0NIQU5HRUQQ4QQSHgoVQURNSU5fQUNDT1VOVF9DUkVBVEVEELwFGgIIARIeChVBRE1JTl9BQ0NPVU5UX0VOQUJMRUQQvgUaAggBEh8KFkFETUlOX0FDQ09VTlRfRElTQUJMRUQQvwUaAggBEhkKFEFVVE9PUFNfUlVMRV9DUkVBVEVEEKAGEhkKFEFVVE9PUFNfUlVMRV9ERUxFVEVEEKEGEiIKHUFVVE9PUFNfUlVMRV9PUFNfVFlQRV9DSEFOR0VEEKIGEiAKG0FVVE9PUFNfUlVMRV9DTEFVU0VfREVMRVRFRBCjBhIqCiFBVVRPT1BTX1JVTEVfVFJJR0dFUkVEX0FUX0NIQU5HRUQQpAYaAggBEiAKG09QU19FVkVOVF9SQVRFX0NMQVVTRV9BRERFRBClBhIiCh1PUFNfRVZFTlRfUkFURV9DTEFVU0VfQ0hBTkdFRBCmBhIaChVEQVRFVElNRV9DTEFVU0VfQURERUQQpwYSHAoXREFURVRJTUVfQ0xBVVNFX0NIQU5HRUQQqAYSGQoUQVVUT09QU19SVUxFX1NUT1BQRUQQqQYSJAofQVVUT09QU19SVUxFX09QU19TVEFUVVNfQ0hBTkdFRBCqBhIRCgxQVVNIX0NSRUFURUQQhAcSEQoMUFVTSF9ERUxFVEVEEIUHEhQKD1BVU0hfVEFHU19BRERFRBCGBxIWChFQVVNIX1RBR1NfREVMRVRFRBCHBxIRCgxQVVNIX1JFTkFNRUQQiAcSEQoMUFVTSF9VUERBVEVEEIkHEhkKFFNVQlNDUklQVElPTl9DUkVBVEVEEOgHEhkKFFNVQlNDUklQVElPTl9ERUxFVEVEEOkHEhkKFFNVQlNDUklQVElPTl9FTkFCTEVEEOoHEhoKFVNVQlNDUklQVElPTl9ESVNBQkxFRBDrBxIjCh5TVUJTQ1JJUFRJT05fU09VUkNFX1RZUEVfQURERUQQ7AcSJQogU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0RFTEVURUQQ7QcSGQoUU1VCU0NSSVBUSU9OX1JFTkFNRUQQ7gcSGQoUU1VCU0NSSVBUSU9OX1VQREFURUQQ7wcSHwoaQURNSU5fU1VCU0NSSVBUSU9OX0NSRUFURUQQzAgSHwoaQURNSU5fU1VCU0NSSVBUSU9OX0RFTEVURUQQzQgSHwoaQURNSU5fU1VCU0NSSVBUSU9OX0VOQUJMRUQQzggSIAobQURNSU5fU1VCU0NSSVBUSU9OX0RJU0FCTEVEEM8IEikKJEFETUlOX1NVQlNDUklQVElPTl9TT1VSQ0VfVFlQRV9BRERFRBDQCBIrCiZBRE1JTl9TVUJTQ1JJUFRJT05fU09VUkNFX1RZUEVfREVMRVRFRBDRCBIfChpBRE1JTl9TVUJTQ1JJUFRJT05fUkVOQU1FRBDSCBIUCg9QUk9KRUNUX0NSRUFURUQQsAkSIAobUFJPSkVDVF9ERVNDUklQVElPTl9DSEFOR0VEELEJEhQKD1BST0pFQ1RfRU5BQkxFRBCyCRIVChBQUk9KRUNUX0RJU0FCTEVEELMJEhoKFVBST0pFQ1RfVFJJQUxfQ1JFQVRFRBC0CRIcChdQUk9KRUNUX1RSSUFMX0NPTlZFUlRFRBC1CRIUCg9QUk9KRUNUX1JFTkFNRUQQtgkSIAobUFJPR1JFU1NJVkVfUk9MTE9VVF9DUkVBVEVEEPgKEiAKG1BST0dSRVNTSVZFX1JPTExPVVRfREVMRVRFRBD5ChI2CjFQUk9HUkVTU0lWRV9ST0xMT1VUX1NDSEVEVUxFX1RSSUdHRVJFRF9BVF9DSEFOR0VEEPoKEiAKG1BST0dSRVNTSVZFX1JPTExPVVRfU1RPUFBFRBD7ChIZChRPUkdBTklaQVRJT05fQ1JFQVRFRBDcCxIeChlPUkdBTklaQVRJT05fTkFNRV9DSEFOR0VEEN0LEiUKIE9SR0FOSVpBVElPTl9ERVNDUklQVElPTl9DSEFOR0VEEN4LEhkKFE9SR0FOSVpBVElPTl9FTkFCTEVEEN8LEhoKFU9SR0FOSVpBVElPTl9ESVNBQkxFRBDgCxIaChVPUkdBTklaQVRJT05fQVJDSElWRUQQ4QsSHAoXT1JHQU5JWkFUSU9OX1VOQVJDSElWRUQQ4gsSIQocT1JHQU5JWkFUSU9OX1RSSUFMX0NPTlZFUlRFRBDjCxIlCiBPUkdBTklaQVRJT05fT1dORVJfRU1BSUxfQ0hBTkdFRBDkCxIZChRGTEFHX1RSSUdHRVJfQ1JFQVRFRBDBDBIXChJGTEFHX1RSSUdHRVJfUkVTRVQQwgwSJQogRkxBR19UUklHR0VSX0RFU0NSSVBUSU9OX0NIQU5HRUQQwwwSGgoVRkxBR19UUklHR0VSX0RJU0FCTEVEEMQMEhkKFEZMQUdfVFJJR0dFUl9FTkFCTEVEEMUMEhkKFEZMQUdfVFJJR0dFUl9ERUxFVEVEEMYMEh8KGkZMQUdfVFJJR0dFUl9VU0FHRV9VUERBVEVEEMcMIgYIlAoQlAoiBgiVChCVCiIGCJYKEJYKIgYIlwoQlwoiBgiYChCYCiIGCJkKEJkKSgQICBAJIowCCgZFZGl0b3ISFAoFZW1haWwYASABKAlSBWVtYWlsEhkKCGlzX2FkbWluGAMgASgIUgdpc0FkbWluEhIKBG5hbWUYBCABKAlSBG5hbWUSWgoRcHVibGljX2FwaV9lZGl0b3IYBSABKAsyLi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkVkaXRvci5QdWJsaWNBUElFZGl0b3JSD3B1YmxpY0FwaUVkaXRvchpbCg9QdWJsaWNBUElFZGl0b3ISFAoFdG9rZW4YASABKAlSBXRva2VuEh4KCm1haW50YWluZXIYAiABKAlSCm1haW50YWluZXISEgoEbmFtZRgDIAEoCVIEbmFtZUoECAIQAyJECgdPcHRpb25zEhgKB2NvbW1lbnQYASABKAlSB2NvbW1lbnQSHwoLbmV3X3ZlcnNpb24YAiABKAVSCm5ld1ZlcnNpb24i8wQKE0ZlYXR1cmVDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhIKBHVzZXIYBCABKAlSBHVzZXISPAoKdmFyaWF0aW9ucxgFIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlEhIKBHRhZ3MYCSADKAlSBHRhZ3MSRQoNcHJlcmVxdWlzaXRlcxgKIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxItCgVydWxlcxgLIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEjMKB3RhcmdldHMYDCADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMiZgoTRmVhdHVyZVVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSFgoEZGF0YRgCIAEoCUICGAFSBGRhdGESJwoNcHJldmlvdXNfZGF0YRgDIAEoCUICGAFSDHByZXZpb3VzRGF0YSIlChNGZWF0dXJlRW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCImChRGZWF0dXJlRGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoURmVhdHVyZUFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIigKFkZlYXR1cmVVbmFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiUKE0ZlYXR1cmVEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIi0KG0V2YWx1YXRpb25EZWxheWFibGVTZXRFdmVudBIOCgJpZBgBIAEoCVICaWQiLwodRXZhbHVhdGlvblVuZGVsYXlhYmxlU2V0RXZlbnQSDgoCaWQYASABKAlSAmlkIjkKE0ZlYXR1cmVSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiUgoeRmVhdHVyZURlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iVgofRmVhdHVyZU9mZlZhcmlhdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIwoNb2ZmX3ZhcmlhdGlvbhgCIAEoCVIMb2ZmVmFyaWF0aW9uImgKGkZlYXR1cmVWYXJpYXRpb25BZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBI6Cgl2YXJpYXRpb24YAiABKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCXZhcmlhdGlvbiJRChxGZWF0dXJlVmFyaWF0aW9uUmVtb3ZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkImEKGlZhcmlhdGlvblZhbHVlQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIl4KGVZhcmlhdGlvbk5hbWVDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEg4KAmlkGAIgASgJUgJpZBISCgRuYW1lGAMgASgJUgRuYW1lInMKIFZhcmlhdGlvbkRlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uIlwKF1ZhcmlhdGlvblVzZXJBZGRlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSEgoEdXNlchgDIAEoCVIEdXNlciJeChlWYXJpYXRpb25Vc2VyUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSEgoEdXNlchgDIAEoCVIEdXNlciJUChVGZWF0dXJlUnVsZUFkZGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEisKBHJ1bGUYAiABKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgRydWxlIpEBCh5GZWF0dXJlQ2hhbmdlUnVsZVN0cmF0ZWd5RXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI3CghzdHJhdGVneRgDIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSJZCh1GZWF0dXJlUnVsZXNPcmRlckNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiQgoXRmVhdHVyZVJ1bGVEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCKYAQogRmVhdHVyZUZpeGVkU3RyYXRlZ3lDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI8CghzdHJhdGVneRgDIAEoCzIgLmJ1Y2tldGVlci5mZWF0dXJlLkZpeGVkU3RyYXRlZ3lSCHN0cmF0ZWd5IpwBCiJGZWF0dXJlUm9sbG91dFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSPgoIc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSCHN0cmF0ZWd5IoEBChRSdWxlQ2xhdXNlQWRkZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgDIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlImAKFlJ1bGVDbGF1c2VEZWxldGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQigwEKG0NsYXVzZUF0dHJpYnV0ZUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEg4KAmlkGAMgASgJUgJpZBIcCglhdHRyaWJ1dGUYBCABKAlSCWF0dHJpYnV0ZSKkAQoaQ2xhdXNlT3BlcmF0b3JDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSPgoIb3BlcmF0b3IYBCABKA4yIi5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2UuT3BlcmF0b3JSCG9wZXJhdG9yInUKFUNsYXVzZVZhbHVlQWRkZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEg4KAmlkGAMgASgJUgJpZBIUCgV2YWx1ZRgEIAEoCVIFdmFsdWUidwoXQ2xhdXNlVmFsdWVSZW1vdmVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIm0KIkZlYXR1cmVEZWZhdWx0U3RyYXRlZ3lDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEjcKCHN0cmF0ZWd5GAIgASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSCHN0cmF0ZWd5IjgKFEZlYXR1cmVUYWdBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIQCgN0YWcYAiABKAlSA3RhZyI6ChZGZWF0dXJlVGFnUmVtb3ZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIQCgN0YWcYAiABKAlSA3RhZyJKCh5GZWF0dXJlVmVyc2lvbkluY3JlbWVudGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhgKB3ZlcnNpb24YAiABKAVSB3ZlcnNpb24itQQKEkZlYXR1cmVDbG9uZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SPAoKdmFyaWF0aW9ucxgEIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAUgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGAYgAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgHIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgIIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYCSADKAlSBHRhZ3MSHgoKbWFpbnRhaW5lchgKIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgLIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRJFCg1wcmVyZXF1aXNpdGVzGAwgAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzIkQKHUZlYXR1cmVTYW1wbGluZ1NlZWRSZXNldEV2ZW50EiMKDXNhbXBsaW5nX3NlZWQYASABKAlSDHNhbXBsaW5nU2VlZCKwAQoQR29hbENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SGAoHZGVsZXRlZBgEIAEoCFIHZGVsZXRlZBIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0IjYKEEdvYWxSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiTwobR29hbERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iIwoRR29hbEFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiIKEEdvYWxEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIvMDChZFeHBlcmltZW50Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJwoPZmVhdHVyZV92ZXJzaW9uGAMgASgFUg5mZWF0dXJlVmVyc2lvbhI8Cgp2YXJpYXRpb25zGAQgAygLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgp2YXJpYXRpb25zEhsKB2dvYWxfaWQYBSABKAlCAhgBUgZnb2FsSWQSGQoIc3RhcnRfYXQYBiABKANSB3N0YXJ0QXQSFwoHc3RvcF9hdBgHIAEoA1IGc3RvcEF0EhgKB3N0b3BwZWQYCCABKAhSB3N0b3BwZWQSHQoKc3RvcHBlZF9hdBgJIAEoA1IJc3RvcHBlZEF0Eh0KCmNyZWF0ZWRfYXQYCiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAsgASgDUgl1cGRhdGVkQXQSGQoIZ29hbF9pZHMYDCADKAlSB2dvYWxJZHMSEgoEbmFtZRgNIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgOIAEoCVILZGVzY3JpcHRpb24SKgoRYmFzZV92YXJpYXRpb25faWQYDyABKAlSD2Jhc2VWYXJpYXRpb25JZCJHChZFeHBlcmltZW50U3RvcHBlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpzdG9wcGVkX2F0GAIgASgDUglzdG9wcGVkQXQiKQoXRXhwZXJpbWVudEFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIigKFkV4cGVyaW1lbnREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIkoKHUV4cGVyaW1lbnRTdGFydEF0Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIZCghzdGFydF9hdBgCIAEoA1IHc3RhcnRBdCJHChxFeHBlcmltZW50U3RvcEF0Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIXCgdzdG9wX2F0GAIgASgDUgZzdG9wQXQiYgocRXhwZXJpbWVudFBlcmlvZENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSGQoIc3RhcnRfYXQYAiABKANSB3N0YXJ0QXQSFwoHc3RvcF9hdBgDIAEoA1IGc3RvcEF0IkAKGkV4cGVyaW1lbnROYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlUKIUV4cGVyaW1lbnREZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIhgKFkV4cGVyaW1lbnRTdGFydGVkRXZlbnQiGQoXRXhwZXJpbWVudEZpbmlzaGVkRXZlbnQi/gMKFUFjY291bnRWMkNyZWF0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIdCgpmaXJzdF9uYW1lGAogASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAsgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgMIAEoCVIIbGFuZ3VhZ2UiVgoVQWNjb3VudFYyVXBkYXRlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkIkUKGUFjY291bnRWMk5hbWVDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUiZQojQWNjb3VudFYyQXZhdGFySW1hZ2VVUkxDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEigKEGF2YXRhcl9pbWFnZV91cmwYAiABKAlSDmF2YXRhckltYWdlVXJsIpoBCiVBY2NvdW50VjJPcmdhbml6YXRpb25Sb2xlQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBJbChFvcmdhbml6YXRpb25fcm9sZRgCIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZSKYAQolQWNjb3VudFYyRW52aXJvbm1lbnRSb2xlc0NoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSWQoRZW52aXJvbm1lbnRfcm9sZXMYAiADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzIi0KFUFjY291bnRWMkVuYWJsZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiLgoWQWNjb3VudFYyRGlzYWJsZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiLQoVQWNjb3VudFYyRGVsZXRlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbCLXAQoYU2VhcmNoRmlsdGVyQ3JlYXRlZEV2ZW50EhIKBE5hbWUYASABKAlSBE5hbWUSFAoFUXVlcnkYAiABKAlSBVF1ZXJ5EkMKClRhcmdldFR5cGUYAyABKA4yIy5idWNrZXRlZXIuYWNjb3VudC5GaWx0ZXJUYXJnZXRUeXBlUgpUYXJnZXRUeXBlEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkEiUKDmRlZmF1bHRfZmlsdGVyGAUgASgIUg1kZWZhdWx0RmlsdGVyIkIKHFNlYXJjaEZpbHRlck5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBE5hbWUYAiABKAlSBE5hbWUiRQodU2VhcmNoRmlsdGVyUXVlcnlDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhQKBVF1ZXJ5GAIgASgJUgVRdWVyeSJYCh9TZWFyY2hGaWx0ZXJEZWZhdWx0Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIlCg5kZWZhdWx0X2ZpbHRlchgCIAEoCFINZGVmYXVsdEZpbHRlciIqChhTZWFyY2hGaWx0ZXJEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIv8BChJBUElLZXlDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSMgoEcm9sZRgDIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAQgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Eh4KCm1haW50YWluZXIYByABKAlSCm1haW50YWluZXISFwoHYXBpX2tleRgIIAEoCVIGYXBpS2V5IiQKEkFQSUtleUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiPAoWQVBJS2V5TmFtZUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSIkChJBUElLZXlFbmFibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiUKE0FQSUtleURpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIlsKE1NlZ21lbnRDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uIiUKE1NlZ21lbnREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIj0KF1NlZ21lbnROYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlIKHlNlZ21lbnREZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlQKFVNlZ21lbnRSdWxlQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSKwoEcnVsZRgCIAEoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBHJ1bGUiQgoXU2VnbWVudFJ1bGVEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCKIAQobU2VnbWVudFJ1bGVDbGF1c2VBZGRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSMQoGY2xhdXNlGAMgASgLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgZjbGF1c2UidAodU2VnbWVudFJ1bGVDbGF1c2VEZWxldGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkIpcBCiJTZWdtZW50Q2xhdXNlQXR0cmlidXRlQ2hhbmdlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSGwoJY2xhdXNlX2lkGAMgASgJUghjbGF1c2VJZBIcCglhdHRyaWJ1dGUYBCABKAlSCWF0dHJpYnV0ZSK4AQohU2VnbWVudENsYXVzZU9wZXJhdG9yQ2hhbmdlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSGwoJY2xhdXNlX2lkGAMgASgJUghjbGF1c2VJZBI+CghvcGVyYXRvchgEIAEoDjIiLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3IiiQEKHFNlZ21lbnRDbGF1c2VWYWx1ZUFkZGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSKLAQoeU2VnbWVudENsYXVzZVZhbHVlUmVtb3ZlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSGwoJY2xhdXNlX2lkGAMgASgJUghjbGF1c2VJZBIUCgV2YWx1ZRgEIAEoCVIFdmFsdWUijQEKFVNlZ21lbnRVc2VyQWRkZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSGQoIdXNlcl9pZHMYAiADKAlSB3VzZXJJZHMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUijwEKF1NlZ21lbnRVc2VyRGVsZXRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIZCgh1c2VyX2lkcxgCIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSKzAQobU2VnbWVudEJ1bGtVcGxvYWRVc2Vyc0V2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBI5CgZzdGF0dXMYAiABKA4yIS5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50LlN0YXR1c1IGc3RhdHVzEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlItYBCihTZWdtZW50QnVsa1VwbG9hZFVzZXJzU3RhdHVzQ2hhbmdlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBI5CgZzdGF0dXMYAiABKA4yIS5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50LlN0YXR1c1IGc3RhdHVzEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlEhQKBWNvdW50GAQgASgDUgVjb3VudCL0AQoXRW52aXJvbm1lbnRDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhwKCW5hbWVzcGFjZRgCIAEoCVIJbmFtZXNwYWNlEhIKBG5hbWUYAyABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBIdCgpwcm9qZWN0X2lkGAggASgJUglwcm9qZWN0SWQiPQoXRW52aXJvbm1lbnRSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVgoiRW52aXJvbm1lbnREZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIkcKF0Vudmlyb25tZW50RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIcCgluYW1lc3BhY2UYAiABKAlSCW5hbWVzcGFjZSKeAgoZRW52aXJvbm1lbnRWMkNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgDIAEoCVIHdXJsQ29kZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SHQoKcHJvamVjdF9pZBgFIAEoCVIJcHJvamVjdElkEhoKCGFyY2hpdmVkGAYgASgIUghhcmNoaXZlZBIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EicKD3JlcXVpcmVfY29tbWVudBgJIAEoCFIOcmVxdWlyZUNvbW1lbnQigAEKGUVudmlyb25tZW50VjJSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCnByb2plY3RfaWQYAiABKAlSCXByb2plY3RJZBIZCghvbGRfbmFtZRgDIAEoCVIHb2xkTmFtZRIZCghuZXdfbmFtZRgEIAEoCVIHbmV3TmFtZSK7AQokRW52aXJvbm1lbnRWMkRlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZBInCg9vbGRfZGVzY3JpcHRpb24YBCABKAlSDm9sZERlc2NyaXB0aW9uEicKD25ld19kZXNjcmlwdGlvbhgFIAEoCVIObmV3RGVzY3JpcHRpb24ilQEKJ0Vudmlyb25tZW50VjJSZXF1aXJlQ29tbWVudENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpwcm9qZWN0X2lkGAMgASgJUglwcm9qZWN0SWQSJwoPcmVxdWlyZV9jb21tZW50GAQgASgIUg5yZXF1aXJlQ29tbWVudCJfChpFbnZpcm9ubWVudFYyQXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpwcm9qZWN0X2lkGAMgASgJUglwcm9qZWN0SWQiYQocRW52aXJvbm1lbnRWMlVuYXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpwcm9qZWN0X2lkGAMgASgJUglwcm9qZWN0SWQiqQIKF0F1dG9PcHNSdWxlQ3JlYXRlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBI1CghvcHNfdHlwZRgCIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUSMwoHY2xhdXNlcxgDIAMoCzIZLmJ1Y2tldGVlci5hdXRvb3BzLkNsYXVzZVIHY2xhdXNlcxIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Ej8KCm9wc19zdGF0dXMYByABKA4yIC5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzU3RhdHVzUglvcHNTdGF0dXNKBAgEEAUiGQoXQXV0b09wc1J1bGVTdG9wcGVkRXZlbnQiGQoXQXV0b09wc1J1bGVEZWxldGVkRXZlbnQiVwoeQXV0b09wc1J1bGVPcHNUeXBlQ2hhbmdlZEV2ZW50EjUKCG9wc190eXBlGAEgASgOMhouYnVja2V0ZWVyLmF1dG9vcHMuT3BzVHlwZVIHb3BzVHlwZSIkCiJBdXRvT3BzUnVsZVRyaWdnZXJlZEF0Q2hhbmdlZEV2ZW50ImMKIEF1dG9PcHNSdWxlT3BzU3RhdHVzQ2hhbmdlZEV2ZW50Ej8KCm9wc19zdGF0dXMYASABKA4yIC5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzU3RhdHVzUglvcHNTdGF0dXMilQEKHE9wc0V2ZW50UmF0ZUNsYXVzZUFkZGVkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJYChVvcHNfZXZlbnRfcmF0ZV9jbGF1c2UYAiABKAsyJS5idWNrZXRlZXIuYXV0b29wcy5PcHNFdmVudFJhdGVDbGF1c2VSEm9wc0V2ZW50UmF0ZUNsYXVzZSKXAQoeT3BzRXZlbnRSYXRlQ2xhdXNlQ2hhbmdlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQSWAoVb3BzX2V2ZW50X3JhdGVfY2xhdXNlGAIgASgLMiUuYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlUhJvcHNFdmVudFJhdGVDbGF1c2UiPAodQXV0b09wc1J1bGVDbGF1c2VEZWxldGVkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZCKDAQoYRGF0ZXRpbWVDbGF1c2VBZGRlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQSSgoPZGF0ZXRpbWVfY2xhdXNlGAIgASgLMiEuYnVja2V0ZWVyLmF1dG9vcHMuRGF0ZXRpbWVDbGF1c2VSDmRhdGV0aW1lQ2xhdXNlIoUBChpEYXRldGltZUNsYXVzZUNoYW5nZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkEkoKD2RhdGV0aW1lX2NsYXVzZRgCIAEoCzIhLmJ1Y2tldGVlci5hdXRvb3BzLkRhdGV0aW1lQ2xhdXNlUg5kYXRldGltZUNsYXVzZSJwChBQdXNoQ3JlYXRlZEV2ZW50Ei4KE2ZjbV9zZXJ2aWNlX2FjY291bnQYASABKAlSEWZjbVNlcnZpY2VBY2NvdW50EhIKBHRhZ3MYAyADKAlSBHRhZ3MSEgoEbmFtZRgEIAEoCVIEbmFtZUoECAIQAyISChBQdXNoRGVsZXRlZEV2ZW50IigKElB1c2hUYWdzQWRkZWRFdmVudBISCgR0YWdzGAIgAygJUgR0YWdzIioKFFB1c2hUYWdzRGVsZXRlZEV2ZW50EhIKBHRhZ3MYAiADKAlSBHRhZ3MiJgoQUHVzaFJlbmFtZWRFdmVudBISCgRuYW1lGAIgASgJUgRuYW1lIioKFFB1c2hUYWdzVXBkYXRlZEV2ZW50EhIKBHRhZ3MYAiADKAlSBHRhZ3MiWAoQUHVzaFVwZGF0ZWRFdmVudBIwCgRuYW1lGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEhIKBHRhZ3MYAiADKAlSBHRhZ3MiwwEKGFN1YnNjcmlwdGlvbkNyZWF0ZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcxI/CglyZWNpcGllbnQYAiABKAsyIS5idWNrZXRlZXIubm90aWZpY2F0aW9uLlJlY2lwaWVudFIJcmVjaXBpZW50EhIKBG5hbWUYAyABKAlSBG5hbWUiGgoYU3Vic2NyaXB0aW9uRGVsZXRlZEV2ZW50IhoKGFN1YnNjcmlwdGlvbkVuYWJsZWRFdmVudCIbChlTdWJzY3JpcHRpb25EaXNhYmxlZEV2ZW50IncKIVN1YnNjcmlwdGlvblNvdXJjZVR5cGVzQWRkZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyJ5CiNTdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0RlbGV0ZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyIuChhTdWJzY3JpcHRpb25SZW5hbWVkRXZlbnQSEgoEbmFtZRgBIAEoCVIEbmFtZSLoAQoYU3Vic2NyaXB0aW9uVXBkYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIwCgRuYW1lGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lElIKDHNvdXJjZV90eXBlcxgDIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEjYKCGRpc2FibGVkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQiyAEKHUFkbWluU3Vic2NyaXB0aW9uQ3JlYXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgCIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgDIAEoCVIEbmFtZSIfCh1BZG1pblN1YnNjcmlwdGlvbkRlbGV0ZWRFdmVudCIfCh1BZG1pblN1YnNjcmlwdGlvbkVuYWJsZWRFdmVudCIgCh5BZG1pblN1YnNjcmlwdGlvbkRpc2FibGVkRXZlbnQifAomQWRtaW5TdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0FkZGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMifgooQWRtaW5TdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0RlbGV0ZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyIzCh1BZG1pblN1YnNjcmlwdGlvblJlbmFtZWRFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lIosCChNQcm9qZWN0Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYAyABKAhSCGRpc2FibGVkEhQKBXRyaWFsGAQgASgIUgV0cmlhbBIjCg1jcmVhdG9yX2VtYWlsGAUgASgJUgxjcmVhdG9yRW1haWwSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAggASgJUgRuYW1lEhkKCHVybF9jb2RlGAkgASgJUgd1cmxDb2RlIlIKHlByb2plY3REZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIjkKE1Byb2plY3RSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiJQoTUHJvamVjdEVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoUUHJvamVjdERpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIpACChhQcm9qZWN0VHJpYWxDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUiLAoaUHJvamVjdFRyaWFsQ29udmVydGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIl0KFlByZXJlcXVpc2l0ZUFkZGVkRXZlbnQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUiaAohUHJlcmVxdWlzaXRlVmFyaWF0aW9uQ2hhbmdlZEV2ZW50EkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjkKGFByZXJlcXVpc2l0ZVJlbW92ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQi+wEKHlByb2dyZXNzaXZlUm9sbG91dENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiwKBmNsYXVzZRgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBmNsYXVzZRIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgFIAEoA1IJdXBkYXRlZEF0Ej4KBHR5cGUYBiABKA4yKi5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuVHlwZVIEdHlwZSLlAQoeUHJvZ3Jlc3NpdmVSb2xsb3V0U3RvcHBlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBJECgZzdGF0dXMYAiABKA4yLC5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuU3RhdHVzUgZzdGF0dXMSTgoKc3RvcHBlZF9ieRgDIAEoDjIvLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdG9wcGVkQnlSCXN0b3BwZWRCeRIdCgpzdG9wcGVkX2F0GAQgASgDUglzdG9wcGVkQXQiMAoeUHJvZ3Jlc3NpdmVSb2xsb3V0RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCJUCjFQcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVRyaWdnZXJlZEF0Q2hhbmdlZEV2ZW50Eh8KC3NjaGVkdWxlX2lkGAEgASgJUgpzY2hlZHVsZUlkIqgCChhPcmdhbml6YXRpb25DcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSHwoLb3duZXJfZW1haWwYCiABKAlSCm93bmVyRW1haWwiVwojT3JnYW5pemF0aW9uRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiJVCiJPcmdhbml6YXRpb25Pd25lckVtYWlsQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIfCgtvd25lcl9lbWFpbBgCIAEoCVIKb3duZXJFbWFpbCJCChxPcmdhbml6YXRpb25OYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIioKGE9yZ2FuaXphdGlvbkVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKwoZT3JnYW5pemF0aW9uRGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKwoZT3JnYW5pemF0aW9uQXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiLQobT3JnYW5pemF0aW9uVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIxCh9Pcmdhbml6YXRpb25UcmlhbENvbnZlcnRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCLjAgoXRmxhZ1RyaWdnZXJDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SFAoFdG9rZW4YByABKAlSBXRva2VuEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiiQEKFUZsYWdUcmlnZ2VyUmVzZXRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEhQKBXRva2VuGAQgASgJUgV0b2tlbhIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCKiAQoiRmxhZ1RyaWdnZXJEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJ2ChhGbGFnVHJpZ2dlckRpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJ1ChdGbGFnVHJpZ2dlckVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInUKF0ZsYWdUcmlnZ2VyRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiywEKHEZsYWdUcmlnZ2VyVXNhZ2VVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIqChFsYXN0X3RyaWdnZXJlZF9hdBgEIAEoA1IPbGFzdFRyaWdnZXJlZEF0EiMKDXRyaWdnZXJfdGltZXMYBSABKAVSDHRyaWdnZXJUaW1lcxIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJVCh5BY2NvdW50VjJGaXJzdE5hbWVDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEh0KCmZpcnN0X25hbWUYAiABKAlSCWZpcnN0TmFtZSJSCh1BY2NvdW50VjJMYXN0TmFtZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSGwoJbGFzdF9uYW1lGAIgASgJUghsYXN0TmFtZSJRCh1BY2NvdW50VjJMYW5ndWFnZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSGgoIbGFuZ3VhZ2UYAiABKAlSCGxhbmd1YWdlQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ldmVudC9kb21haW5iBnByb3RvMwrKAQoqcHJvdG8vZXZlbnQvZG9tYWluL2xvY2FsaXplZF9tZXNzYWdlLnByb3RvEhZidWNrZXRlZXIuZXZlbnQuZG9tYWluIkQKEExvY2FsaXplZE1lc3NhZ2USFgoGbG9jYWxlGAEgASgJUgZsb2NhbGUSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZUI2WjRnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXZlbnQvZG9tYWluYgZwcm90bzMK+gUKHXByb3RvL2F1ZGl0bG9nL2F1ZGl0bG9nLnByb3RvEhJidWNrZXRlZXIuYXVkaXRsb2caGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHnByb3RvL2V2ZW50L2RvbWFpbi9ldmVudC5wcm90bxoqcHJvdG8vZXZlbnQvZG9tYWluL2xvY2FsaXplZF9tZXNzYWdlLnByb3RvIqEECghBdWRpdExvZxIOCgJpZBgBIAEoCVICaWQSHAoJdGltZXN0YW1wGAIgASgDUgl0aW1lc3RhbXASSQoLZW50aXR5X3R5cGUYAyABKA4yKC5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LkVudGl0eVR5cGVSCmVudGl0eVR5cGUSGwoJZW50aXR5X2lkGAQgASgJUghlbnRpdHlJZBI2CgR0eXBlGAUgASgOMiIuYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FdmVudC5UeXBlUgR0eXBlEioKBWV2ZW50GAYgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIFZXZlbnQSNgoGZWRpdG9yGAcgASgLMh4uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FZGl0b3JSBmVkaXRvchI5CgdvcHRpb25zGAggASgLMh8uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5PcHRpb25zUgdvcHRpb25zElUKEWxvY2FsaXplZF9tZXNzYWdlGAkgASgLMiguYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5Mb2NhbGl6ZWRNZXNzYWdlUhBsb2NhbGl6ZWRNZXNzYWdlEh8KC2VudGl0eV9kYXRhGAogASgJUgplbnRpdHlEYXRhEjAKFHByZXZpb3VzX2VudGl0eV9kYXRhGAsgASgJUhJwcmV2aW91c0VudGl0eURhdGFCMlowZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1ZGl0bG9nYgZwcm90bzMKoBMKHHByb3RvL2F1ZGl0bG9nL3NlcnZpY2UucHJvdG8SEmJ1Y2tldGVlci5hdWRpdGxvZxoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGh1wcm90by9hdWRpdGxvZy9hdWRpdGxvZy5wcm90byL8AwoUTGlzdEF1ZGl0TG9nc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJLCghvcmRlcl9ieRgEIAEoDjIwLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmAKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI3LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSEgoEZnJvbRgHIAEoA1IEZnJvbRIOCgJ0bxgIIAEoA1ICdG8SPAoLZW50aXR5X3R5cGUYCSABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIKZW50aXR5VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgKIAEoCVINZW52aXJvbm1lbnRJZCIlCgdPcmRlckJ5EgsKB0RFRkFVTFQQABINCglUSU1FU1RBTVAQASIjCg5PcmRlckRpcmVjdGlvbhIICgRERVNDEAASBwoDQVNDEAFKBAgDEAQijQEKFUxpc3RBdWRpdExvZ3NSZXNwb25zZRI7CgphdWRpdF9sb2dzGAEgAygLMhwuYnVja2V0ZWVyLmF1ZGl0bG9nLkF1ZGl0TG9nUglhdWRpdExvZ3MSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQi3gMKGUxpc3RBZG1pbkF1ZGl0TG9nc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchJQCghvcmRlcl9ieRgDIAEoDjI1LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QWRtaW5BdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZQoPb3JkZXJfZGlyZWN0aW9uGAQgASgOMjwuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBZG1pbkF1ZGl0TG9nc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAUgASgJUg1zZWFyY2hLZXl3b3JkEhIKBGZyb20YBiABKANSBGZyb20SDgoCdG8YByABKANSAnRvEjwKC2VudGl0eV90eXBlGAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSCmVudGl0eVR5cGUiJQoHT3JkZXJCeRILCgdERUZBVUxUEAASDQoJVElNRVNUQU1QEAEiIwoOT3JkZXJEaXJlY3Rpb24SCAoEREVTQxAAEgcKA0FTQxABIpIBChpMaXN0QWRtaW5BdWRpdExvZ3NSZXNwb25zZRI7CgphdWRpdF9sb2dzGAEgAygLMhwuYnVja2V0ZWVyLmF1ZGl0bG9nLkF1ZGl0TG9nUglhdWRpdExvZ3MSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQi7AMKGUxpc3RGZWF0dXJlSGlzdG9yeVJlcXVlc3QSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhsKCXBhZ2Vfc2l6ZRgCIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISUAoIb3JkZXJfYnkYBSABKA4yNS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEZlYXR1cmVIaXN0b3J5UmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmUKD29yZGVyX2RpcmVjdGlvbhgGIAEoDjI8LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgHIAEoCVINc2VhcmNoS2V5d29yZBISCgRmcm9tGAggASgDUgRmcm9tEg4KAnRvGAkgASgDUgJ0bxIlCg5lbnZpcm9ubWVudF9pZBgKIAEoCVINZW52aXJvbm1lbnRJZCIlCgdPcmRlckJ5EgsKB0RFRkFVTFQQABINCglUSU1FU1RBTVAQASIjCg5PcmRlckRpcmVjdGlvbhIICgRERVNDEAASBwoDQVNDEAFKBAgEEAUikgEKGkxpc3RGZWF0dXJlSGlzdG9yeVJlc3BvbnNlEjsKCmF1ZGl0X2xvZ3MYASADKAsyHC5idWNrZXRlZXIuYXVkaXRsb2cuQXVkaXRMb2dSCWF1ZGl0TG9ncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudDLnAgoPQXVkaXRMb2dTZXJ2aWNlEmYKDUxpc3RBdWRpdExvZ3MSKC5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaKS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlIgASdQoSTGlzdEFkbWluQXVkaXRMb2dzEi0uYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBZG1pbkF1ZGl0TG9nc1JlcXVlc3QaLi5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVzcG9uc2UiABJ1ChJMaXN0RmVhdHVyZUhpc3RvcnkSLS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEZlYXR1cmVIaXN0b3J5UmVxdWVzdBouLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXNwb25zZSIAQjJaMGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdWRpdGxvZ2IGcHJvdG8z + auditlogDescriptor: CuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKxwMKGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSLaAgoGQ2xhdXNlEg4KAmlkGAEgASgJUgJpZBIcCglhdHRyaWJ1dGUYAiABKAlSCWF0dHJpYnV0ZRI+CghvcGVyYXRvchgDIAEoDjIiLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISFgoGdmFsdWVzGAQgAygJUgZ2YWx1ZXMiyQEKCE9wZXJhdG9yEgoKBkVRVUFMUxAAEgYKAklOEAESDQoJRU5EU19XSVRIEAISDwoLU1RBUlRTX1dJVEgQAxILCgdTRUdNRU5UEAQSCwoHR1JFQVRFUhAFEhQKEEdSRUFURVJfT1JfRVFVQUwQBhIICgRMRVNTEAcSEQoNTEVTU19PUl9FUVVBTBAIEgoKBkJFRk9SRRAJEgkKBUFGVEVSEAoSEAoMRkVBVFVSRV9GTEFHEAsSEwoPUEFSVElBTExZX01BVENIEAxCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrAEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEiqAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50GtcBCgRSb2xlIlkKC0Vudmlyb25tZW50EhoKFkVudmlyb25tZW50X1VOQVNTSUdORUQQABIWChJFbnZpcm9ubWVudF9WSUVXRVIQARIWChJFbnZpcm9ubWVudF9FRElUT1IQAiJ0CgxPcmdhbml6YXRpb24SGwoXT3JnYW5pemF0aW9uX1VOQVNTSUdORUQQABIXChNPcmdhbml6YXRpb25fTUVNQkVSEAESFgoST3JnYW5pemF0aW9uX0FETUlOEAISFgoST3JnYW5pemF0aW9uX09XTkVSEAMaewoPRW52aXJvbm1lbnRSb2xlEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkEKBHJvbGUYAiABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZSLqBgoOQ29uc29sZUFjY291bnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKYXZhdGFyX3VybBgDIAEoCVIJYXZhdGFyVXJsEiYKD2lzX3N5c3RlbV9hZG1pbhgEIAEoCFINaXNTeXN0ZW1BZG1pbhJHCgxvcmdhbml6YXRpb24YBSABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24SWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSXgoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyMS5idWNrZXRlZXIuYWNjb3VudC5Db25zb2xlQWNjb3VudC5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSRgoOc2VhcmNoX2ZpbHRlcnMYCCADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgJIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgKIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCyABKAlSCGxhbmd1YWdlEigKEGF2YXRhcl9maWxlX3R5cGUYDCABKAlSDmF2YXRhckZpbGVUeXBlEiEKDGF2YXRhcl9pbWFnZRgNIAEoDFILYXZhdGFySW1hZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhrWAQoPRW52aXJvbm1lbnRSb2xlEkYKC2Vudmlyb25tZW50GAEgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EjgKB3Byb2plY3QYAiABKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIHcHJvamVjdBJBCgRyb2xlGAMgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGVCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrmBgobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8iuwMKBkFQSUtleRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIyCgRyb2xlGAMgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHgoKbWFpbnRhaW5lchgHIAEoCVIKbWFpbnRhaW5lchIXCgdhcGlfa2V5GAggASgJUgZhcGlLZXkSIAoLZGVzY3JpcHRpb24YCSABKAlSC2Rlc2NyaXB0aW9uEikKEGVudmlyb25tZW50X25hbWUYCiABKAlSD2Vudmlyb25tZW50TmFtZSJ5CgRSb2xlEgsKB1VOS05PV04QABIOCgpTREtfQ0xJRU5UEAESDgoKU0RLX1NFUlZFUhACEhgKFFBVQkxJQ19BUElfUkVBRF9PTkxZEAMSFAoQUFVCTElDX0FQSV9XUklURRAEEhQKEFBVQkxJQ19BUElfQURNSU4QBSKVAgoRRW52aXJvbm1lbnRBUElLZXkSMgoHYXBpX2tleRgCIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5EjEKFGVudmlyb25tZW50X2Rpc2FibGVkGAMgASgIUhNlbnZpcm9ubWVudERpc2FibGVkEiEKCnByb2plY3RfaWQYBCABKAlCAhgBUglwcm9qZWN0SWQSRgoLZW52aXJvbm1lbnQYBSABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSKAoQcHJvamVjdF91cmxfY29kZRgGIAEoCVIOcHJvamVjdFVybENvZGVKBAgBEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwqaCwoacHJvdG8vYXV0b29wcy9jbGF1c2UucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvIoYBCgZDbGF1c2USDgoCaWQYASABKAlSAmlkEiwKBmNsYXVzZRgCIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBmNsYXVzZRI+CgthY3Rpb25fdHlwZRgDIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUi3wIKEk9wc0V2ZW50UmF0ZUNsYXVzZRIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkEhcKB2dvYWxfaWQYAyABKAlSBmdvYWxJZBIbCgltaW5fY291bnQYBCABKANSCG1pbkNvdW50EikKEHRocmVhZHNob2xkX3JhdGUYBSABKAFSD3RocmVhZHNob2xkUmF0ZRJKCghvcGVyYXRvchgGIAEoDjIuLmJ1Y2tldGVlci5hdXRvb3BzLk9wc0V2ZW50UmF0ZUNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISPgoLYWN0aW9uX3R5cGUYByABKA4yHS5idWNrZXRlZXIuYXV0b29wcy5BY3Rpb25UeXBlUgphY3Rpb25UeXBlIjMKCE9wZXJhdG9yEhQKEEdSRUFURVJfT1JfRVFVQUwQABIRCg1MRVNTX09SX0VRVUFMEAFKBAgBEAIiZAoORGF0ZXRpbWVDbGF1c2USEgoEdGltZRgBIAEoA1IEdGltZRI+CgthY3Rpb25fdHlwZRgCIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUilwEKGlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlEh8KC3NjaGVkdWxlX2lkGAEgASgJUgpzY2hlZHVsZUlkEh0KCmV4ZWN1dGVfYXQYAiABKANSCWV4ZWN1dGVBdBIWCgZ3ZWlnaHQYAyABKAVSBndlaWdodBIhCgx0cmlnZ2VyZWRfYXQYBCABKANSC3RyaWdnZXJlZEF0IpgBCiZQcm9ncmVzc2l2ZVJvbGxvdXRNYW51YWxTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQi2AIKKFByb2dyZXNzaXZlUm9sbG91dFRlbXBsYXRlU2NoZWR1bGVDbGF1c2USSwoJc2NoZWR1bGVzGAEgAygLMi0uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGVSCXNjaGVkdWxlcxJgCghpbnRlcnZhbBgCIAEoDjJELmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFRlbXBsYXRlU2NoZWR1bGVDbGF1c2UuSW50ZXJ2YWxSCGludGVydmFsEh4KCmluY3JlbWVudHMYAyABKANSCmluY3JlbWVudHMSIQoMdmFyaWF0aW9uX2lkGAQgASgJUgt2YXJpYXRpb25JZCI6CghJbnRlcnZhbBILCgdVTktOT1dOEAASCgoGSE9VUkxZEAESCQoFREFJTFkQAhIKCgZXRUVLTFkQAyoyCgpBY3Rpb25UeXBlEgsKB1VOS05PV04QABIKCgZFTkFCTEUQARILCgdESVNBQkxFEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1dG9vcHNiBnByb3RvMwq9BQohcHJvdG8vYXV0b29wcy9hdXRvX29wc19ydWxlLnByb3RvEhFidWNrZXRlZXIuYXV0b29wcxoacHJvdG8vYXV0b29wcy9jbGF1c2UucHJvdG8i0AIKC0F1dG9PcHNSdWxlEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSNQoIb3BzX3R5cGUYAyABKA4yGi5idWNrZXRlZXIuYXV0b29wcy5PcHNUeXBlUgdvcHNUeXBlEjMKB2NsYXVzZXMYBCADKAsyGS5idWNrZXRlZXIuYXV0b29wcy5DbGF1c2VSB2NsYXVzZXMSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAkgASgIUgdkZWxldGVkEkgKD2F1dG9fb3BzX3N0YXR1cxgKIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSDWF1dG9PcHNTdGF0dXNKBAgGEAciVAoMQXV0b09wc1J1bGVzEkQKDmF1dG9fb3BzX3J1bGVzGAEgAygLMh4uYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1J1bGVSDGF1dG9PcHNSdWxlcyo/CgdPcHNUeXBlEhAKDFRZUEVfVU5LTk9XThAAEgwKCFNDSEVEVUxFEAISDgoKRVZFTlRfUkFURRADIgQIARABKkQKDUF1dG9PcHNTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARIMCghGSU5JU0hFRBACEgsKB1NUT1BQRUQQA0IxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCvADCiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvEhZidWNrZXRlZXIubm90aWZpY2F0aW9uIrcCCglSZWNpcGllbnQSOgoEdHlwZRgBIAEoDjImLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50LlR5cGVSBHR5cGUSZQoXc2xhY2tfY2hhbm5lbF9yZWNpcGllbnQYAiABKAsyLS5idWNrZXRlZXIubm90aWZpY2F0aW9uLlNsYWNrQ2hhbm5lbFJlY2lwaWVudFIVc2xhY2tDaGFubmVsUmVjaXBpZW50EkYKCGxhbmd1YWdlGAMgASgOMiouYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnQuTGFuZ3VhZ2VSCGxhbmd1YWdlIhgKBFR5cGUSEAoMU2xhY2tDaGFubmVsEAAiJQoITGFuZ3VhZ2USCwoHRU5HTElTSBAAEgwKCEpBUEFORVNFEAEiOAoVU2xhY2tDaGFubmVsUmVjaXBpZW50Eh8KC3dlYmhvb2tfdXJsGAEgASgJUgp3ZWJob29rVXJsQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ub3RpZmljYXRpb25iBnByb3RvMwrPCAolcHJvdG8vbm90aWZpY2F0aW9uL3N1YnNjcmlwdGlvbi5wcm90bxIWYnVja2V0ZWVyLm5vdGlmaWNhdGlvbhoicHJvdG8vbm90aWZpY2F0aW9uL3JlY2lwaWVudC5wcm90byKpBwoMU3Vic2NyaXB0aW9uEg4KAmlkGAEgASgJUgJpZBIdCgpjcmVhdGVkX2F0GAIgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0EhoKCGRpc2FibGVkGAQgASgIUghkaXNhYmxlZBJSCgxzb3VyY2VfdHlwZXMYBSADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcxI/CglyZWNpcGllbnQYBiABKAsyIS5idWNrZXRlZXIubm90aWZpY2F0aW9uLlJlY2lwaWVudFIJcmVjaXBpZW50EhIKBG5hbWUYByABKAlSBG5hbWUSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWQSKQoQZW52aXJvbm1lbnRfbmFtZRgJIAEoCVIPZW52aXJvbm1lbnROYW1lIrMECgpTb3VyY2VUeXBlEhgKFERPTUFJTl9FVkVOVF9GRUFUVVJFEAASFQoRRE9NQUlOX0VWRU5UX0dPQUwQARIbChdET01BSU5fRVZFTlRfRVhQRVJJTUVOVBACEhgKFERPTUFJTl9FVkVOVF9BQ0NPVU5UEAMSFwoTRE9NQUlOX0VWRU5UX0FQSUtFWRAEEhgKFERPTUFJTl9FVkVOVF9TRUdNRU5UEAUSHAoYRE9NQUlOX0VWRU5UX0VOVklST05NRU5UEAYSHgoaRE9NQUlOX0VWRU5UX0FETUlOX0FDQ09VTlQQBxIdChlET01BSU5fRVZFTlRfQVVUT09QU19SVUxFEAgSFQoRRE9NQUlOX0VWRU5UX1BVU0gQCRIdChlET01BSU5fRVZFTlRfU1VCU0NSSVBUSU9OEAoSIwofRE9NQUlOX0VWRU5UX0FETUlOX1NVQlNDUklQVElPThALEhgKFERPTUFJTl9FVkVOVF9QUk9KRUNUEAwSGAoURE9NQUlOX0VWRU5UX1dFQkhPT0sQDRIkCiBET01BSU5fRVZFTlRfUFJPR1JFU1NJVkVfUk9MTE9VVBAOEh0KGURPTUFJTl9FVkVOVF9PUkdBTklaQVRJT04QDxIdChlET01BSU5fRVZFTlRfRkxBR19UUklHR0VSEBASEQoNRkVBVFVSRV9TVEFMRRBkEhcKEkVYUEVSSU1FTlRfUlVOTklORxDIARIOCglNQVVfQ09VTlQQrAJCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL25vdGlmaWNhdGlvbmIGcHJvdG8zCvcFCidwcm90by9hdXRvb3BzL3Byb2dyZXNzaXZlX3JvbGxvdXQucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvIuIEChJQcm9ncmVzc2l2ZVJvbGxvdXQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIsCgZjbGF1c2UYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgZjbGF1c2USRAoGc3RhdHVzGAQgASgOMiwuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0YXR1c1IGc3RhdHVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSPgoEdHlwZRgHIAEoDjIqLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5UeXBlUgR0eXBlEk4KCnN0b3BwZWRfYnkYCCABKA4yLy5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuU3RvcHBlZEJ5UglzdG9wcGVkQnkSHQoKc3RvcHBlZF9hdBgJIAEoA1IJc3RvcHBlZEF0IjIKBFR5cGUSEwoPTUFOVUFMX1NDSEVEVUxFEAASFQoRVEVNUExBVEVfU0NIRURVTEUQASI9CgZTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARIMCghGSU5JU0hFRBACEgsKB1NUT1BQRUQQAyJJCglTdG9wcGVkQnkSCwoHVU5LTk9XThAAEggKBFVTRVIQARIQCgxPUFNfU0NIRURVTEUQAhITCg9PUFNfS0lMTF9TV0lUQ0gQA0IxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCqAFCiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUirQQKC0ZsYWdUcmlnZ2VyEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAUgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBiABKAlSC2Rlc2NyaXB0aW9uEiMKDXRyaWdnZXJfY291bnQYByABKAVSDHRyaWdnZXJDb3VudBIqChFsYXN0X3RyaWdnZXJlZF9hdBgIIAEoA1IPbGFzdFRyaWdnZXJlZEF0EhQKBXRva2VuGAkgASgJUgV0b2tlbhIaCghkaXNhYmxlZBgKIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgLIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYDCABKANSCXVwZGF0ZWRBdBIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCIqCgRUeXBlEhAKDFR5cGVfVU5LTk9XThAAEhAKDFR5cGVfV0VCSE9PSxABIjsKBkFjdGlvbhISCg5BY3Rpb25fVU5LTk9XThAAEg0KCUFjdGlvbl9PThABEg4KCkFjdGlvbl9PRkYQAkoECAMQBEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCofIAQoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvEhZidWNrZXRlZXIuZXZlbnQuZG9tYWluGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8aG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8aGnByb3RvL2F1dG9vcHMvY2xhdXNlLnByb3RvGiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvGiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIrUuCgVFdmVudBIOCgJpZBgBIAEoCVICaWQSHAoJdGltZXN0YW1wGAIgASgDUgl0aW1lc3RhbXASSQoLZW50aXR5X3R5cGUYAyABKA4yKC5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LkVudGl0eVR5cGVSCmVudGl0eVR5cGUSGwoJZW50aXR5X2lkGAQgASgJUghlbnRpdHlJZBI2CgR0eXBlGAUgASgOMiIuYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FdmVudC5UeXBlUgR0eXBlEjYKBmVkaXRvchgGIAEoCzIeLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRWRpdG9yUgZlZGl0b3ISKAoEZGF0YRgHIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBGRhdGESJAoOaXNfYWRtaW5fZXZlbnQYCSABKAhSDGlzQWRtaW5FdmVudBI5CgdvcHRpb25zGAogASgLMh8uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5PcHRpb25zUgdvcHRpb25zEh8KC2VudGl0eV9kYXRhGAsgASgJUgplbnRpdHlEYXRhEjAKFHByZXZpb3VzX2VudGl0eV9kYXRhGAwgASgJUhJwcmV2aW91c0VudGl0eURhdGESJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQikwIKCkVudGl0eVR5cGUSCwoHRkVBVFVSRRAAEggKBEdPQUwQARIOCgpFWFBFUklNRU5UEAISCwoHQUNDT1VOVBADEgoKBkFQSUtFWRAEEgsKB1NFR01FTlQQBRIPCgtFTlZJUk9OTUVOVBAGEhEKDUFETUlOX0FDQ09VTlQQBxIQCgxBVVRPT1BTX1JVTEUQCBIICgRQVVNIEAkSEAoMU1VCU0NSSVBUSU9OEAoSFgoSQURNSU5fU1VCU0NSSVBUSU9OEAsSCwoHUFJPSkVDVBAMEhcKE1BST0dSRVNTSVZFX1JPTExPVVQQDhIQCgxPUkdBTklaQVRJT04QDxIQCgxGTEFHX1RSSUdHRVIQECIECA0QDSKEKAoEVHlwZRILCgdVTktOT1dOEAASEwoPRkVBVFVSRV9DUkVBVEVEEAESEwoPRkVBVFVSRV9SRU5BTUVEEAISEwoPRkVBVFVSRV9FTkFCTEVEEAMSFAoQRkVBVFVSRV9ESVNBQkxFRBAEEhMKD0ZFQVRVUkVfREVMRVRFRBAFEh8KG0ZFQVRVUkVfREVTQ1JJUFRJT05fQ0hBTkdFRBAIEhsKF0ZFQVRVUkVfVkFSSUFUSU9OX0FEREVEEAkSHQoZRkVBVFVSRV9WQVJJQVRJT05fUkVNT1ZFRBAKEiEKHUZFQVRVUkVfT0ZGX1ZBUklBVElPTl9DSEFOR0VEEAsSGwoXVkFSSUFUSU9OX1ZBTFVFX0NIQU5HRUQQDBIaChZWQVJJQVRJT05fTkFNRV9DSEFOR0VEEA0SIQodVkFSSUFUSU9OX0RFU0NSSVBUSU9OX0NIQU5HRUQQDhIYChRWQVJJQVRJT05fVVNFUl9BRERFRBAPEhoKFlZBUklBVElPTl9VU0VSX1JFTU9WRUQQEBIWChJGRUFUVVJFX1JVTEVfQURERUQQERIhCh1GRUFUVVJFX1JVTEVfU1RSQVRFR1lfQ0hBTkdFRBASEhgKFEZFQVRVUkVfUlVMRV9ERUxFVEVEEBMSFQoRUlVMRV9DTEFVU0VfQURERUQQFBIXChNSVUxFX0NMQVVTRV9ERUxFVEVEEBUSHwobUlVMRV9GSVhFRF9TVFJBVEVHWV9DSEFOR0VEEBYSIQodUlVMRV9ST0xMT1VUX1NUUkFURUdZX0NIQU5HRUQQFxIcChhDTEFVU0VfQVRUUklCVVRFX0NIQU5HRUQQGBIbChdDTEFVU0VfT1BFUkFUT1JfQ0hBTkdFRBAZEhYKEkNMQVVTRV9WQUxVRV9BRERFRBAaEhgKFENMQVVTRV9WQUxVRV9SRU1PVkVEEBsSJAogRkVBVFVSRV9ERUZBVUxUX1NUUkFURUdZX0NIQU5HRUQQHBIVChFGRUFUVVJFX1RBR19BRERFRBAdEhcKE0ZFQVRVUkVfVEFHX1JFTU9WRUQQHhIfChtGRUFUVVJFX1ZFUlNJT05fSU5DUkVNRU5URUQQHxIUChBGRUFUVVJFX0FSQ0hJVkVEECASEgoORkVBVFVSRV9DTE9ORUQQIRIWChJGRUFUVVJFX1VOQVJDSElWRUQQIxIXChNTQU1QTElOR19TRUVEX1JFU0VUECISFgoSUFJFUkVRVUlTSVRFX0FEREVEECQSGAoUUFJFUkVRVUlTSVRFX1JFTU9WRUQQJRIiCh5QUkVSRVFVSVNJVEVfVkFSSUFUSU9OX0NIQU5HRUQQJhIfChtGRUFUVVJFX1JVTEVTX09SREVSX0NIQU5HRUQQJxITCg9GRUFUVVJFX1VQREFURUQQKBIQCgxHT0FMX0NSRUFURUQQZBIQCgxHT0FMX1JFTkFNRUQQZRIcChhHT0FMX0RFU0NSSVBUSU9OX0NIQU5HRUQQZhIQCgxHT0FMX0RFTEVURUQQZxIRCg1HT0FMX0FSQ0hJVkVEEGgSFwoSRVhQRVJJTUVOVF9DUkVBVEVEEMgBEhcKEkVYUEVSSU1FTlRfU1RPUFBFRBDJARIgChtFWFBFUklNRU5UX1NUQVJUX0FUX0NIQU5HRUQQygESHwoaRVhQRVJJTUVOVF9TVE9QX0FUX0NIQU5HRUQQywESFwoSRVhQRVJJTUVOVF9ERUxFVEVEEMwBEh4KGUVYUEVSSU1FTlRfUEVSSU9EX0NIQU5HRUQQzQESHAoXRVhQRVJJTUVOVF9OQU1FX0NIQU5HRUQQzgESIwoeRVhQRVJJTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEM8BEhcKEkVYUEVSSU1FTlRfU1RBUlRFRBDQARIYChNFWFBFUklNRU5UX0ZJTklTSEVEENEBEhgKE0VYUEVSSU1FTlRfQVJDSElWRUQQ0gESGAoPQUNDT1VOVF9DUkVBVEVEEKwCGgIIARIdChRBQ0NPVU5UX1JPTEVfQ0hBTkdFRBCtAhoCCAESGAoPQUNDT1VOVF9FTkFCTEVEEK4CGgIIARIZChBBQ0NPVU5UX0RJU0FCTEVEEK8CGgIIARIYCg9BQ0NPVU5UX0RFTEVURUQQsAIaAggBEhcKEkFDQ09VTlRfVjJfQ1JFQVRFRBCxAhIcChdBQ0NPVU5UX1YyX05BTUVfQ0hBTkdFRBCyAhIoCiNBQ0NPVU5UX1YyX0FWQVRBUl9JTUFHRV9VUkxfQ0hBTkdFRBCzAhIpCiRBQ0NPVU5UX1YyX09SR0FOSVpBVElPTl9ST0xFX0NIQU5HRUQQtAISKQokQUNDT1VOVF9WMl9FTlZJUk9OTUVOVF9ST0xFU19DSEFOR0VEELUCEhcKEkFDQ09VTlRfVjJfRU5BQkxFRBC2AhIYChNBQ0NPVU5UX1YyX0RJU0FCTEVEELcCEhcKEkFDQ09VTlRfVjJfREVMRVRFRBC4AhIlCiBBQ0NPVU5UX1YyX0NSRUFURURfU0VBUkNIX0ZJTFRFUhC5AhIqCiVBQ0NPVU5UX1YyX1NFQVJDSF9GSUxURVJfTkFORV9DSEFOR0VEELoCEisKJkFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9RVUVSWV9DSEFOR0VEELsCEi0KKEFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9ERUZBVUxUX0NIQU5HRUQQvAISJQogQUNDT1VOVF9WMl9TRUFSQ0hfRklMVEVSX0RFTEVURUQQvQISIgodQUNDT1VOVF9WMl9GSVJTVF9OQU1FX0NIQU5HRUQQvgISIQocQUNDT1VOVF9WMl9MQVNUX05BTUVfQ0hBTkdFRBC/AhIgChtBQ0NPVU5UX1YyX0xBTkdVQUdFX0NIQU5HRUQQwAISFwoSQUNDT1VOVF9WMl9VUERBVEVEEMECEhMKDkFQSUtFWV9DUkVBVEVEEJADEhgKE0FQSUtFWV9OQU1FX0NIQU5HRUQQkQMSEwoOQVBJS0VZX0VOQUJMRUQQkgMSFAoPQVBJS0VZX0RJU0FCTEVEEJMDEhMKDkFQSUtFWV9DSEFOR0VEEJQDEhQKD1NFR01FTlRfQ1JFQVRFRBD0AxIUCg9TRUdNRU5UX0RFTEVURUQQ9QMSGQoUU0VHTUVOVF9OQU1FX0NIQU5HRUQQ9gMSIAobU0VHTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEPcDEhcKElNFR01FTlRfUlVMRV9BRERFRBD4AxIZChRTRUdNRU5UX1JVTEVfREVMRVRFRBD5AxIeChlTRUdNRU5UX1JVTEVfQ0xBVVNFX0FEREVEEPoDEiAKG1NFR01FTlRfUlVMRV9DTEFVU0VfREVMRVRFRBD7AxIlCiBTRUdNRU5UX0NMQVVTRV9BVFRSSUJVVEVfQ0hBTkdFRBD8AxIkCh9TRUdNRU5UX0NMQVVTRV9PUEVSQVRPUl9DSEFOR0VEEP0DEh8KGlNFR01FTlRfQ0xBVVNFX1ZBTFVFX0FEREVEEP4DEiEKHFNFR01FTlRfQ0xBVVNFX1ZBTFVFX1JFTU9WRUQQ/wMSFwoSU0VHTUVOVF9VU0VSX0FEREVEEIAEEhkKFFNFR01FTlRfVVNFUl9ERUxFVEVEEIEEEh4KGVNFR01FTlRfQlVMS19VUExPQURfVVNFUlMQggQSLQooU0VHTUVOVF9CVUxLX1VQTE9BRF9VU0VSU19TVEFUVVNfQ0hBTkdFRBCDBBIUCg9TRUdNRU5UX1VQREFURUQQhAQSGAoTRU5WSVJPTk1FTlRfQ1JFQVRFRBDYBBIYChNFTlZJUk9OTUVOVF9SRU5BTUVEENkEEiQKH0VOVklST05NRU5UX0RFU0NSSVBUSU9OX0NIQU5HRUQQ2gQSGAoTRU5WSVJPTk1FTlRfREVMRVRFRBDbBBIbChZFTlZJUk9OTUVOVF9WMl9DUkVBVEVEENwEEhsKFkVOVklST05NRU5UX1YyX1JFTkFNRUQQ3QQSJwoiRU5WSVJPTk1FTlRfVjJfREVTQ1JJUFRJT05fQ0hBTkdFRBDeBBIcChdFTlZJUk9OTUVOVF9WMl9BUkNISVZFRBDfBBIeChlFTlZJUk9OTUVOVF9WMl9VTkFSQ0hJVkVEEOAEEisKJkVOVklST05NRU5UX1YyX1JFUVVJUkVfQ09NTUVOVF9DSEFOR0VEEOEEEh4KFUFETUlOX0FDQ09VTlRfQ1JFQVRFRBC8BRoCCAESHgoVQURNSU5fQUNDT1VOVF9FTkFCTEVEEL4FGgIIARIfChZBRE1JTl9BQ0NPVU5UX0RJU0FCTEVEEL8FGgIIARIZChRBVVRPT1BTX1JVTEVfQ1JFQVRFRBCgBhIZChRBVVRPT1BTX1JVTEVfREVMRVRFRBChBhIiCh1BVVRPT1BTX1JVTEVfT1BTX1RZUEVfQ0hBTkdFRBCiBhIgChtBVVRPT1BTX1JVTEVfQ0xBVVNFX0RFTEVURUQQowYSKgohQVVUT09QU19SVUxFX1RSSUdHRVJFRF9BVF9DSEFOR0VEEKQGGgIIARIgChtPUFNfRVZFTlRfUkFURV9DTEFVU0VfQURERUQQpQYSIgodT1BTX0VWRU5UX1JBVEVfQ0xBVVNFX0NIQU5HRUQQpgYSGgoVREFURVRJTUVfQ0xBVVNFX0FEREVEEKcGEhwKF0RBVEVUSU1FX0NMQVVTRV9DSEFOR0VEEKgGEhkKFEFVVE9PUFNfUlVMRV9TVE9QUEVEEKkGEiQKH0FVVE9PUFNfUlVMRV9PUFNfU1RBVFVTX0NIQU5HRUQQqgYSEQoMUFVTSF9DUkVBVEVEEIQHEhEKDFBVU0hfREVMRVRFRBCFBxIUCg9QVVNIX1RBR1NfQURERUQQhgcSFgoRUFVTSF9UQUdTX0RFTEVURUQQhwcSEQoMUFVTSF9SRU5BTUVEEIgHEhEKDFBVU0hfVVBEQVRFRBCJBxIZChRTVUJTQ1JJUFRJT05fQ1JFQVRFRBDoBxIZChRTVUJTQ1JJUFRJT05fREVMRVRFRBDpBxIZChRTVUJTQ1JJUFRJT05fRU5BQkxFRBDqBxIaChVTVUJTQ1JJUFRJT05fRElTQUJMRUQQ6wcSIwoeU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0FEREVEEOwHEiUKIFNVQlNDUklQVElPTl9TT1VSQ0VfVFlQRV9ERUxFVEVEEO0HEhkKFFNVQlNDUklQVElPTl9SRU5BTUVEEO4HEhkKFFNVQlNDUklQVElPTl9VUERBVEVEEO8HEh8KGkFETUlOX1NVQlNDUklQVElPTl9DUkVBVEVEEMwIEh8KGkFETUlOX1NVQlNDUklQVElPTl9ERUxFVEVEEM0IEh8KGkFETUlOX1NVQlNDUklQVElPTl9FTkFCTEVEEM4IEiAKG0FETUlOX1NVQlNDUklQVElPTl9ESVNBQkxFRBDPCBIpCiRBRE1JTl9TVUJTQ1JJUFRJT05fU09VUkNFX1RZUEVfQURERUQQ0AgSKwomQURNSU5fU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0RFTEVURUQQ0QgSHwoaQURNSU5fU1VCU0NSSVBUSU9OX1JFTkFNRUQQ0ggSFAoPUFJPSkVDVF9DUkVBVEVEELAJEiAKG1BST0pFQ1RfREVTQ1JJUFRJT05fQ0hBTkdFRBCxCRIUCg9QUk9KRUNUX0VOQUJMRUQQsgkSFQoQUFJPSkVDVF9ESVNBQkxFRBCzCRIaChVQUk9KRUNUX1RSSUFMX0NSRUFURUQQtAkSHAoXUFJPSkVDVF9UUklBTF9DT05WRVJURUQQtQkSFAoPUFJPSkVDVF9SRU5BTUVEELYJEiAKG1BST0dSRVNTSVZFX1JPTExPVVRfQ1JFQVRFRBD4ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX0RFTEVURUQQ+QoSNgoxUFJPR1JFU1NJVkVfUk9MTE9VVF9TQ0hFRFVMRV9UUklHR0VSRURfQVRfQ0hBTkdFRBD6ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX1NUT1BQRUQQ+woSGQoUT1JHQU5JWkFUSU9OX0NSRUFURUQQ3AsSHgoZT1JHQU5JWkFUSU9OX05BTUVfQ0hBTkdFRBDdCxIlCiBPUkdBTklaQVRJT05fREVTQ1JJUFRJT05fQ0hBTkdFRBDeCxIZChRPUkdBTklaQVRJT05fRU5BQkxFRBDfCxIaChVPUkdBTklaQVRJT05fRElTQUJMRUQQ4AsSGgoVT1JHQU5JWkFUSU9OX0FSQ0hJVkVEEOELEhwKF09SR0FOSVpBVElPTl9VTkFSQ0hJVkVEEOILEiEKHE9SR0FOSVpBVElPTl9UUklBTF9DT05WRVJURUQQ4wsSJQogT1JHQU5JWkFUSU9OX09XTkVSX0VNQUlMX0NIQU5HRUQQ5AsSGQoURkxBR19UUklHR0VSX0NSRUFURUQQwQwSFwoSRkxBR19UUklHR0VSX1JFU0VUEMIMEiUKIEZMQUdfVFJJR0dFUl9ERVNDUklQVElPTl9DSEFOR0VEEMMMEhoKFUZMQUdfVFJJR0dFUl9ESVNBQkxFRBDEDBIZChRGTEFHX1RSSUdHRVJfRU5BQkxFRBDFDBIZChRGTEFHX1RSSUdHRVJfREVMRVRFRBDGDBIfChpGTEFHX1RSSUdHRVJfVVNBR0VfVVBEQVRFRBDHDCIGCJQKEJQKIgYIlQoQlQoiBgiWChCWCiIGCJcKEJcKIgYImAoQmAoiBgiZChCZCkoECAgQCSKMAgoGRWRpdG9yEhQKBWVtYWlsGAEgASgJUgVlbWFpbBIZCghpc19hZG1pbhgDIAEoCFIHaXNBZG1pbhISCgRuYW1lGAQgASgJUgRuYW1lEloKEXB1YmxpY19hcGlfZWRpdG9yGAUgASgLMi4uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FZGl0b3IuUHVibGljQVBJRWRpdG9yUg9wdWJsaWNBcGlFZGl0b3IaWwoPUHVibGljQVBJRWRpdG9yEhQKBXRva2VuGAEgASgJUgV0b2tlbhIeCgptYWludGFpbmVyGAIgASgJUgptYWludGFpbmVyEhIKBG5hbWUYAyABKAlSBG5hbWVKBAgCEAMiRAoHT3B0aW9ucxIYCgdjb21tZW50GAEgASgJUgdjb21tZW50Eh8KC25ld192ZXJzaW9uGAIgASgFUgpuZXdWZXJzaW9uIvMEChNGZWF0dXJlQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhISCgR1c2VyGAQgASgJUgR1c2VyEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSWAoaZGVmYXVsdF9vbl92YXJpYXRpb25faW5kZXgYBiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIXZGVmYXVsdE9uVmFyaWF0aW9uSW5kZXgSWgobZGVmYXVsdF9vZmZfdmFyaWF0aW9uX2luZGV4GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSGGRlZmF1bHRPZmZWYXJpYXRpb25JbmRleBJPCg52YXJpYXRpb25fdHlwZRgIIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRISCgR0YWdzGAkgAygJUgR0YWdzEkUKDXByZXJlcXVpc2l0ZXMYCiADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDXByZXJlcXVpc2l0ZXMSLQoFcnVsZXMYCyADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzImYKE0ZlYXR1cmVVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhYKBGRhdGEYAiABKAlCAhgBUgRkYXRhEicKDXByZXZpb3VzX2RhdGEYAyABKAlCAhgBUgxwcmV2aW91c0RhdGEiJQoTRmVhdHVyZUVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoURmVhdHVyZURpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiYKFEZlYXR1cmVBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIoChZGZWF0dXJlVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIlChNGZWF0dXJlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCItChtFdmFsdWF0aW9uRGVsYXlhYmxlU2V0RXZlbnQSDgoCaWQYASABKAlSAmlkIi8KHUV2YWx1YXRpb25VbmRlbGF5YWJsZVNldEV2ZW50Eg4KAmlkGAEgASgJUgJpZCI5ChNGZWF0dXJlUmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlIKHkZlYXR1cmVEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlYKH0ZlYXR1cmVPZmZWYXJpYXRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiMKDW9mZl92YXJpYXRpb24YAiABKAlSDG9mZlZhcmlhdGlvbiJoChpGZWF0dXJlVmFyaWF0aW9uQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSOgoJdmFyaWF0aW9uGAIgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgl2YXJpYXRpb24iUQocRmVhdHVyZVZhcmlhdGlvblJlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCJhChpWYXJpYXRpb25WYWx1ZUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhQKBXZhbHVlGAMgASgJUgV2YWx1ZSJeChlWYXJpYXRpb25OYW1lQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSEgoEbmFtZRgDIAEoCVIEbmFtZSJzCiBWYXJpYXRpb25EZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiJcChdWYXJpYXRpb25Vc2VyQWRkZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiXgoZVmFyaWF0aW9uVXNlclJlbW92ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiVAoVRmVhdHVyZVJ1bGVBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIrCgRydWxlGAIgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSKRAQoeRmVhdHVyZUNoYW5nZVJ1bGVTdHJhdGVneUV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiWQodRmVhdHVyZVJ1bGVzT3JkZXJDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHJ1bGVfaWRzGAIgAygJUgdydWxlSWRzIkIKF0ZlYXR1cmVSdWxlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQimAEKIEZlYXR1cmVGaXhlZFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSPAoIc3RyYXRlZ3kYAyABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5UghzdHJhdGVneSKcAQoiRmVhdHVyZVJvbGxvdXRTdHJhdGVneUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCHN0cmF0ZWd5GAMgASgLMiIuYnVja2V0ZWVyLmZlYXR1cmUuUm9sbG91dFN0cmF0ZWd5UghzdHJhdGVneSKBAQoUUnVsZUNsYXVzZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIxCgZjbGF1c2UYAyABKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSBmNsYXVzZSJgChZSdWxlQ2xhdXNlRGVsZXRlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkIoMBChtDbGF1c2VBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSHAoJYXR0cmlidXRlGAQgASgJUglhdHRyaWJ1dGUipAEKGkNsYXVzZU9wZXJhdG9yQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEj4KCG9wZXJhdG9yGAQgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJ1ChVDbGF1c2VWYWx1ZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIncKF0NsYXVzZVZhbHVlUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSJtCiJGZWF0dXJlRGVmYXVsdFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI4ChRGZWF0dXJlVGFnQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciOgoWRmVhdHVyZVRhZ1JlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciSgoeRmVhdHVyZVZlcnNpb25JbmNyZW1lbnRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uIrUEChJGZWF0dXJlQ2xvbmVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSMwoHdGFyZ2V0cxgFIAMoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlRhcmdldFIHdGFyZ2V0cxItCgVydWxlcxgGIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEkYKEGRlZmF1bHRfc3RyYXRlZ3kYByABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIPZGVmYXVsdFN0cmF0ZWd5EiMKDW9mZl92YXJpYXRpb24YCCABKAlSDG9mZlZhcmlhdGlvbhISCgR0YWdzGAkgAygJUgR0YWdzEh4KCm1haW50YWluZXIYCiABKAlSCm1haW50YWluZXISTwoOdmFyaWF0aW9uX3R5cGUYCyABKA4yKC5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlLlZhcmlhdGlvblR5cGVSDXZhcmlhdGlvblR5cGUSRQoNcHJlcmVxdWlzaXRlcxgMIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcyJECh1GZWF0dXJlU2FtcGxpbmdTZWVkUmVzZXRFdmVudBIjCg1zYW1wbGluZ19zZWVkGAEgASgJUgxzYW1wbGluZ1NlZWQisAEKEEdvYWxDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBCABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdCI2ChBHb2FsUmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIk8KG0dvYWxEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIiMKEUdvYWxBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIiChBHb2FsRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCLzAwoWRXhwZXJpbWVudENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SPAoKdmFyaWF0aW9ucxgEIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIbCgdnb2FsX2lkGAUgASgJQgIYAVIGZ29hbElkEhkKCHN0YXJ0X2F0GAYgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYByABKANSBnN0b3BBdBIYCgdzdG9wcGVkGAggASgIUgdzdG9wcGVkEh0KCnN0b3BwZWRfYXQYCSABKANSCXN0b3BwZWRBdBIdCgpjcmVhdGVkX2F0GAogASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgLIAEoA1IJdXBkYXRlZEF0EhkKCGdvYWxfaWRzGAwgAygJUgdnb2FsSWRzEhIKBG5hbWUYDSABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YDiABKAlSC2Rlc2NyaXB0aW9uEioKEWJhc2VfdmFyaWF0aW9uX2lkGA8gASgJUg9iYXNlVmFyaWF0aW9uSWQiRwoWRXhwZXJpbWVudFN0b3BwZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKc3RvcHBlZF9hdBgCIAEoA1IJc3RvcHBlZEF0IikKF0V4cGVyaW1lbnRBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIoChZFeHBlcmltZW50RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCJKCh1FeHBlcmltZW50U3RhcnRBdENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSGQoIc3RhcnRfYXQYAiABKANSB3N0YXJ0QXQiRwocRXhwZXJpbWVudFN0b3BBdENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSFwoHc3RvcF9hdBgCIAEoA1IGc3RvcEF0ImIKHEV4cGVyaW1lbnRQZXJpb2RDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhkKCHN0YXJ0X2F0GAIgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYAyABKANSBnN0b3BBdCJAChpFeHBlcmltZW50TmFtZUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJVCiFFeHBlcmltZW50RGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiIYChZFeHBlcmltZW50U3RhcnRlZEV2ZW50IhkKF0V4cGVyaW1lbnRGaW5pc2hlZEV2ZW50Iv4DChVBY2NvdW50VjJDcmVhdGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSJwoPb3JnYW5pemF0aW9uX2lkGAQgASgJUg5vcmdhbml6YXRpb25JZBJbChFvcmdhbml6YXRpb25fcm9sZRgFIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgGIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSGgoIZGlzYWJsZWQYByABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSHQoKZmlyc3RfbmFtZRgKIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgLIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYDCABKAlSCGxhbmd1YWdlIlYKFUFjY291bnRWMlVwZGF0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZCJFChlBY2NvdW50VjJOYW1lQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBISCgRuYW1lGAIgASgJUgRuYW1lImUKI0FjY291bnRWMkF2YXRhckltYWdlVVJMQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIoChBhdmF0YXJfaW1hZ2VfdXJsGAIgASgJUg5hdmF0YXJJbWFnZVVybCKaAQolQWNjb3VudFYyT3JnYW5pemF0aW9uUm9sZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSWwoRb3JnYW5pemF0aW9uX3JvbGUYAiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUimAEKJUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsElkKEWVudmlyb25tZW50X3JvbGVzGAIgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcyItChVBY2NvdW50VjJFbmFibGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsIi4KFkFjY291bnRWMkRpc2FibGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsIi0KFUFjY291bnRWMkRlbGV0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwi1wEKGFNlYXJjaEZpbHRlckNyZWF0ZWRFdmVudBISCgROYW1lGAEgASgJUgROYW1lEhQKBVF1ZXJ5GAIgASgJUgVRdWVyeRJDCgpUYXJnZXRUeXBlGAMgASgOMiMuYnVja2V0ZWVyLmFjY291bnQuRmlsdGVyVGFyZ2V0VHlwZVIKVGFyZ2V0VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZBIlCg5kZWZhdWx0X2ZpbHRlchgFIAEoCFINZGVmYXVsdEZpbHRlciJCChxTZWFyY2hGaWx0ZXJOYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgROYW1lGAIgASgJUgROYW1lIkUKHVNlYXJjaEZpbHRlclF1ZXJ5Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIUCgVRdWVyeRgCIAEoCVIFUXVlcnkiWAofU2VhcmNoRmlsdGVyRGVmYXVsdENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSJQoOZGVmYXVsdF9maWx0ZXIYAiABKAhSDWRlZmF1bHRGaWx0ZXIiKgoYU2VhcmNoRmlsdGVyRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCL/AQoSQVBJS2V5Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEjIKBHJvbGUYAyABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgEIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEhcKB2FwaV9rZXkYCCABKAlSBmFwaUtleSIkChJBUElLZXlDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkIjwKFkFQSUtleU5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiJAoSQVBJS2V5RW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIlChNBUElLZXlEaXNhYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCJbChNTZWdtZW50Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiIlChNTZWdtZW50RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCKXAQoTU2VnbWVudFVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSMAoEbmFtZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24iPQoXU2VnbWVudE5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiUgoeU2VnbWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iVAoVU2VnbWVudFJ1bGVBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIrCgRydWxlGAIgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJCChdTZWdtZW50UnVsZURlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkIogBChtTZWdtZW50UnVsZUNsYXVzZUFkZGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIxCgZjbGF1c2UYAyABKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSBmNsYXVzZSJ0Ch1TZWdtZW50UnVsZUNsYXVzZURlbGV0ZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQilwEKIlNlZ21lbnRDbGF1c2VBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEhwKCWF0dHJpYnV0ZRgEIAEoCVIJYXR0cmlidXRlIrgBCiFTZWdtZW50Q2xhdXNlT3BlcmF0b3JDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEj4KCG9wZXJhdG9yGAQgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciKJAQocU2VnbWVudENsYXVzZVZhbHVlQWRkZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIosBCh5TZWdtZW50Q2xhdXNlVmFsdWVSZW1vdmVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSKNAQoVU2VnbWVudFVzZXJBZGRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIZCgh1c2VyX2lkcxgCIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSKPAQoXU2VnbWVudFVzZXJEZWxldGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhkKCHVzZXJfaWRzGAIgAygJUgd1c2VySWRzEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIrMBChtTZWdtZW50QnVsa1VwbG9hZFVzZXJzRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEjkKBnN0YXR1cxgCIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUi1gEKKFNlZ21lbnRCdWxrVXBsb2FkVXNlcnNTdGF0dXNDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEjkKBnN0YXR1cxgCIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYBCABKANSBWNvdW50IvQBChdFbnZpcm9ubWVudENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHAoJbmFtZXNwYWNlGAIgASgJUgluYW1lc3BhY2USEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SGAoHZGVsZXRlZBgFIAEoCFIHZGVsZXRlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0Eh0KCnByb2plY3RfaWQYCCABKAlSCXByb2plY3RJZCI9ChdFbnZpcm9ubWVudFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJWCiJFbnZpcm9ubWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iRwoXRW52aXJvbm1lbnREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhwKCW5hbWVzcGFjZRgCIAEoCVIJbmFtZXNwYWNlIp4CChlFbnZpcm9ubWVudFYyQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIdCgpwcm9qZWN0X2lkGAUgASgJUglwcm9qZWN0SWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEh0KCmNyZWF0ZWRfYXQYByABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAggASgDUgl1cGRhdGVkQXQSJwoPcmVxdWlyZV9jb21tZW50GAkgASgIUg5yZXF1aXJlQ29tbWVudCKAAQoZRW52aXJvbm1lbnRWMlJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKcHJvamVjdF9pZBgCIAEoCVIJcHJvamVjdElkEhkKCG9sZF9uYW1lGAMgASgJUgdvbGROYW1lEhkKCG5ld19uYW1lGAQgASgJUgduZXdOYW1lIrsBCiRFbnZpcm9ubWVudFYyRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKcHJvamVjdF9pZBgDIAEoCVIJcHJvamVjdElkEicKD29sZF9kZXNjcmlwdGlvbhgEIAEoCVIOb2xkRGVzY3JpcHRpb24SJwoPbmV3X2Rlc2NyaXB0aW9uGAUgASgJUg5uZXdEZXNjcmlwdGlvbiKVAQonRW52aXJvbm1lbnRWMlJlcXVpcmVDb21tZW50Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZBInCg9yZXF1aXJlX2NvbW1lbnQYBCABKAhSDnJlcXVpcmVDb21tZW50Il8KGkVudmlyb25tZW50VjJBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZCJhChxFbnZpcm9ubWVudFYyVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZCKpAgoXQXV0b09wc1J1bGVDcmVhdGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEjUKCG9wc190eXBlGAIgASgOMhouYnVja2V0ZWVyLmF1dG9vcHMuT3BzVHlwZVIHb3BzVHlwZRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmF1dG9vcHMuQ2xhdXNlUgdjbGF1c2VzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSPwoKb3BzX3N0YXR1cxgHIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSCW9wc1N0YXR1c0oECAQQBSIZChdBdXRvT3BzUnVsZVN0b3BwZWRFdmVudCIZChdBdXRvT3BzUnVsZURlbGV0ZWRFdmVudCJXCh5BdXRvT3BzUnVsZU9wc1R5cGVDaGFuZ2VkRXZlbnQSNQoIb3BzX3R5cGUYASABKA4yGi5idWNrZXRlZXIuYXV0b29wcy5PcHNUeXBlUgdvcHNUeXBlIiQKIkF1dG9PcHNSdWxlVHJpZ2dlcmVkQXRDaGFuZ2VkRXZlbnQiYwogQXV0b09wc1J1bGVPcHNTdGF0dXNDaGFuZ2VkRXZlbnQSPwoKb3BzX3N0YXR1cxgBIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSCW9wc1N0YXR1cyKVAQocT3BzRXZlbnRSYXRlQ2xhdXNlQWRkZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkElgKFW9wc19ldmVudF9yYXRlX2NsYXVzZRgCIAEoCzIlLmJ1Y2tldGVlci5hdXRvb3BzLk9wc0V2ZW50UmF0ZUNsYXVzZVISb3BzRXZlbnRSYXRlQ2xhdXNlIpcBCh5PcHNFdmVudFJhdGVDbGF1c2VDaGFuZ2VkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJYChVvcHNfZXZlbnRfcmF0ZV9jbGF1c2UYAiABKAsyJS5idWNrZXRlZXIuYXV0b29wcy5PcHNFdmVudFJhdGVDbGF1c2VSEm9wc0V2ZW50UmF0ZUNsYXVzZSI8Ch1BdXRvT3BzUnVsZUNsYXVzZURlbGV0ZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkIoMBChhEYXRldGltZUNsYXVzZUFkZGVkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJKCg9kYXRldGltZV9jbGF1c2UYAiABKAsyIS5idWNrZXRlZXIuYXV0b29wcy5EYXRldGltZUNsYXVzZVIOZGF0ZXRpbWVDbGF1c2UihQEKGkRhdGV0aW1lQ2xhdXNlQ2hhbmdlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQSSgoPZGF0ZXRpbWVfY2xhdXNlGAIgASgLMiEuYnVja2V0ZWVyLmF1dG9vcHMuRGF0ZXRpbWVDbGF1c2VSDmRhdGV0aW1lQ2xhdXNlInAKEFB1c2hDcmVhdGVkRXZlbnQSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgBIAEoCVIRZmNtU2VydmljZUFjY291bnQSEgoEdGFncxgDIAMoCVIEdGFncxISCgRuYW1lGAQgASgJUgRuYW1lSgQIAhADIhIKEFB1c2hEZWxldGVkRXZlbnQiKAoSUHVzaFRhZ3NBZGRlZEV2ZW50EhIKBHRhZ3MYAiADKAlSBHRhZ3MiKgoUUHVzaFRhZ3NEZWxldGVkRXZlbnQSEgoEdGFncxgCIAMoCVIEdGFncyImChBQdXNoUmVuYW1lZEV2ZW50EhIKBG5hbWUYAiABKAlSBG5hbWUiKgoUUHVzaFRhZ3NVcGRhdGVkRXZlbnQSEgoEdGFncxgCIAMoCVIEdGFncyJYChBQdXNoVXBkYXRlZEV2ZW50EjAKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSEgoEdGFncxgCIAMoCVIEdGFncyLDAQoYU3Vic2NyaXB0aW9uQ3JlYXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgCIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgDIAEoCVIEbmFtZSIaChhTdWJzY3JpcHRpb25EZWxldGVkRXZlbnQiGgoYU3Vic2NyaXB0aW9uRW5hYmxlZEV2ZW50IhsKGVN1YnNjcmlwdGlvbkRpc2FibGVkRXZlbnQidwohU3Vic2NyaXB0aW9uU291cmNlVHlwZXNBZGRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzInkKI1N1YnNjcmlwdGlvblNvdXJjZVR5cGVzRGVsZXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzIi4KGFN1YnNjcmlwdGlvblJlbmFtZWRFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lIugBChhTdWJzY3JpcHRpb25VcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEjAKBG5hbWUYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSUgoMc291cmNlX3R5cGVzGAMgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMSNgoIZGlzYWJsZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZCLIAQodQWRtaW5TdWJzY3JpcHRpb25DcmVhdGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMSPwoJcmVjaXBpZW50GAIgASgLMiEuYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnRSCXJlY2lwaWVudBISCgRuYW1lGAMgASgJUgRuYW1lIh8KHUFkbWluU3Vic2NyaXB0aW9uRGVsZXRlZEV2ZW50Ih8KHUFkbWluU3Vic2NyaXB0aW9uRW5hYmxlZEV2ZW50IiAKHkFkbWluU3Vic2NyaXB0aW9uRGlzYWJsZWRFdmVudCJ8CiZBZG1pblN1YnNjcmlwdGlvblNvdXJjZVR5cGVzQWRkZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyJ+CihBZG1pblN1YnNjcmlwdGlvblNvdXJjZVR5cGVzRGVsZXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzIjMKHUFkbWluU3Vic2NyaXB0aW9uUmVuYW1lZEV2ZW50EhIKBG5hbWUYASABKAlSBG5hbWUiiwIKE1Byb2plY3RDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUiUgoeUHJvamVjdERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iOQoTUHJvamVjdFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSIlChNQcm9qZWN0RW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCImChRQcm9qZWN0RGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQikAIKGFByb2plY3RUcmlhbENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAMgASgIUghkaXNhYmxlZBIUCgV0cmlhbBgEIAEoCFIFdHJpYWwSIwoNY3JlYXRvcl9lbWFpbBgFIAEoCVIMY3JlYXRvckVtYWlsEh0KCmNyZWF0ZWRfYXQYBiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAcgASgDUgl1cGRhdGVkQXQSEgoEbmFtZRgIIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgJIAEoCVIHdXJsQ29kZSIsChpQcm9qZWN0VHJpYWxDb252ZXJ0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiXQoWUHJlcmVxdWlzaXRlQWRkZWRFdmVudBJDCgxwcmVyZXF1aXNpdGUYASABKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDHByZXJlcXVpc2l0ZSJoCiFQcmVyZXF1aXNpdGVWYXJpYXRpb25DaGFuZ2VkRXZlbnQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUiOQoYUHJlcmVxdWlzaXRlUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZCL7AQoeUHJvZ3Jlc3NpdmVSb2xsb3V0Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSLAoGY2xhdXNlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEh0KCmNyZWF0ZWRfYXQYBCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAUgASgDUgl1cGRhdGVkQXQSPgoEdHlwZRgGIAEoDjIqLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5UeXBlUgR0eXBlIuUBCh5Qcm9ncmVzc2l2ZVJvbGxvdXRTdG9wcGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEkQKBnN0YXR1cxgCIAEoDjIsLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdGF0dXNSBnN0YXR1cxJOCgpzdG9wcGVkX2J5GAMgASgOMi8uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0b3BwZWRCeVIJc3RvcHBlZEJ5Eh0KCnN0b3BwZWRfYXQYBCABKANSCXN0b3BwZWRBdCIwCh5Qcm9ncmVzc2l2ZVJvbGxvdXREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIlQKMVByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlVHJpZ2dlcmVkQXRDaGFuZ2VkRXZlbnQSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQiqAIKGE9yZ2FuaXphdGlvbkNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgDIAEoCVIHdXJsQ29kZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYBSABKAhSCGRpc2FibGVkEhoKCGFyY2hpdmVkGAYgASgIUghhcmNoaXZlZBIUCgV0cmlhbBgHIAEoCFIFdHJpYWwSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIfCgtvd25lcl9lbWFpbBgKIAEoCVIKb3duZXJFbWFpbCJXCiNPcmdhbml6YXRpb25EZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlUKIk9yZ2FuaXphdGlvbk93bmVyRW1haWxDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEh8KC293bmVyX2VtYWlsGAIgASgJUgpvd25lckVtYWlsIkIKHE9yZ2FuaXphdGlvbk5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiKgoYT3JnYW5pemF0aW9uRW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIrChlPcmdhbml6YXRpb25EaXNhYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIrChlPcmdhbml6YXRpb25BcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCItChtPcmdhbml6YXRpb25VbmFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIjEKH09yZ2FuaXphdGlvblRyaWFsQ29udmVydGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIuMCChdGbGFnVHJpZ2dlckNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEjcKBHR5cGUYBCABKA4yIy5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5UeXBlUgR0eXBlEj0KBmFjdGlvbhgFIAEoDjIlLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLkFjdGlvblIGYWN0aW9uEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIUCgV0b2tlbhgHIAEoCVIFdG9rZW4SHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIlCg5lbnZpcm9ubWVudF9pZBgKIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCKJAQoVRmxhZ1RyaWdnZXJSZXNldEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSFAoFdG9rZW4YBCABKAlSBXRva2VuEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIqIBCiJGbGFnVHJpZ2dlckRlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInYKGEZsYWdUcmlnZ2VyRGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInUKF0ZsYWdUcmlnZ2VyRW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQidQoXRmxhZ1RyaWdnZXJEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCLLAQocRmxhZ1RyaWdnZXJVc2FnZVVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEioKEWxhc3RfdHJpZ2dlcmVkX2F0GAQgASgDUg9sYXN0VHJpZ2dlcmVkQXQSIwoNdHJpZ2dlcl90aW1lcxgFIAEoBVIMdHJpZ2dlclRpbWVzEiUKDmVudmlyb25tZW50X2lkGAYgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIlUKHkFjY291bnRWMkZpcnN0TmFtZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSHQoKZmlyc3RfbmFtZRgCIAEoCVIJZmlyc3ROYW1lIlIKHUFjY291bnRWMkxhc3ROYW1lQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIbCglsYXN0X25hbWUYAiABKAlSCGxhc3ROYW1lIlEKHUFjY291bnRWMkxhbmd1YWdlQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIaCghsYW5ndWFnZRgCIAEoCVIIbGFuZ3VhZ2VCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V2ZW50L2RvbWFpbmIGcHJvdG8zCsoBCipwcm90by9ldmVudC9kb21haW4vbG9jYWxpemVkX21lc3NhZ2UucHJvdG8SFmJ1Y2tldGVlci5ldmVudC5kb21haW4iRAoQTG9jYWxpemVkTWVzc2FnZRIWCgZsb2NhbGUYASABKAlSBmxvY2FsZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ldmVudC9kb21haW5iBnByb3RvMwr6BQodcHJvdG8vYXVkaXRsb2cvYXVkaXRsb2cucHJvdG8SEmJ1Y2tldGVlci5hdWRpdGxvZxoZZ29vZ2xlL3Byb3RvYnVmL2FueS5wcm90bxoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvGipwcm90by9ldmVudC9kb21haW4vbG9jYWxpemVkX21lc3NhZ2UucHJvdG8ioQQKCEF1ZGl0TG9nEg4KAmlkGAEgASgJUgJpZBIcCgl0aW1lc3RhbXAYAiABKANSCXRpbWVzdGFtcBJJCgtlbnRpdHlfdHlwZRgDIAEoDjIoLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRXZlbnQuRW50aXR5VHlwZVIKZW50aXR5VHlwZRIbCgllbnRpdHlfaWQYBCABKAlSCGVudGl0eUlkEjYKBHR5cGUYBSABKA4yIi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LlR5cGVSBHR5cGUSKgoFZXZlbnQYBiABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgVldmVudBI2CgZlZGl0b3IYByABKAsyHi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkVkaXRvclIGZWRpdG9yEjkKB29wdGlvbnMYCCABKAsyHy5idWNrZXRlZXIuZXZlbnQuZG9tYWluLk9wdGlvbnNSB29wdGlvbnMSVQoRbG9jYWxpemVkX21lc3NhZ2UYCSABKAsyKC5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkxvY2FsaXplZE1lc3NhZ2VSEGxvY2FsaXplZE1lc3NhZ2USHwoLZW50aXR5X2RhdGEYCiABKAlSCmVudGl0eURhdGESMAoUcHJldmlvdXNfZW50aXR5X2RhdGEYCyABKAlSEnByZXZpb3VzRW50aXR5RGF0YUIyWjBnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXVkaXRsb2diBnByb3RvMwqgEwoccHJvdG8vYXVkaXRsb2cvc2VydmljZS5wcm90bxISYnVja2V0ZWVyLmF1ZGl0bG9nGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aHXByb3RvL2F1ZGl0bG9nL2F1ZGl0bG9nLnByb3RvIvwDChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEksKCG9yZGVyX2J5GAQgASgOMjAuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYAoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjcuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgGIAEoCVINc2VhcmNoS2V5d29yZBISCgRmcm9tGAcgASgDUgRmcm9tEg4KAnRvGAggASgDUgJ0bxI8CgtlbnRpdHlfdHlwZRgJIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUgplbnRpdHlUeXBlEiUKDmVudmlyb25tZW50X2lkGAogASgJUg1lbnZpcm9ubWVudElkIiUKB09yZGVyQnkSCwoHREVGQVVMVBAAEg0KCVRJTUVTVEFNUBABIiMKDk9yZGVyRGlyZWN0aW9uEggKBERFU0MQABIHCgNBU0MQAUoECAMQBCKNAQoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEjsKCmF1ZGl0X2xvZ3MYASADKAsyHC5idWNrZXRlZXIuYXVkaXRsb2cuQXVkaXRMb2dSCWF1ZGl0TG9ncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCLeAwoZTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yElAKCG9yZGVyX2J5GAMgASgOMjUuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBZG1pbkF1ZGl0TG9nc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJlCg9vcmRlcl9kaXJlY3Rpb24YBCABKA4yPC5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBSABKAlSDXNlYXJjaEtleXdvcmQSEgoEZnJvbRgGIAEoA1IEZnJvbRIOCgJ0bxgHIAEoA1ICdG8SPAoLZW50aXR5X3R5cGUYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIKZW50aXR5VHlwZSIlCgdPcmRlckJ5EgsKB0RFRkFVTFQQABINCglUSU1FU1RBTVAQASIjCg5PcmRlckRpcmVjdGlvbhIICgRERVNDEAASBwoDQVNDEAEikgEKGkxpc3RBZG1pbkF1ZGl0TG9nc1Jlc3BvbnNlEjsKCmF1ZGl0X2xvZ3MYASADKAsyHC5idWNrZXRlZXIuYXVkaXRsb2cuQXVkaXRMb2dSCWF1ZGl0TG9ncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCLsAwoZTGlzdEZlYXR1cmVIaXN0b3J5UmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSGwoJcGFnZV9zaXplGAIgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchJQCghvcmRlcl9ieRgFIAEoDjI1LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZQoPb3JkZXJfZGlyZWN0aW9uGAYgASgOMjwuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAcgASgJUg1zZWFyY2hLZXl3b3JkEhIKBGZyb20YCCABKANSBGZyb20SDgoCdG8YCSABKANSAnRvEiUKDmVudmlyb25tZW50X2lkGAogASgJUg1lbnZpcm9ubWVudElkIiUKB09yZGVyQnkSCwoHREVGQVVMVBAAEg0KCVRJTUVTVEFNUBABIiMKDk9yZGVyRGlyZWN0aW9uEggKBERFU0MQABIHCgNBU0MQAUoECAQQBSKSAQoaTGlzdEZlYXR1cmVIaXN0b3J5UmVzcG9uc2USOwoKYXVkaXRfbG9ncxgBIAMoCzIcLmJ1Y2tldGVlci5hdWRpdGxvZy5BdWRpdExvZ1IJYXVkaXRMb2dzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50MucCCg9BdWRpdExvZ1NlcnZpY2USZgoNTGlzdEF1ZGl0TG9ncxIoLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVxdWVzdBopLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVzcG9uc2UiABJ1ChJMaXN0QWRtaW5BdWRpdExvZ3MSLS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdBouLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QWRtaW5BdWRpdExvZ3NSZXNwb25zZSIAEnUKEkxpc3RGZWF0dXJlSGlzdG9yeRItLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Gi4uYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlc3BvbnNlIgBCMlowZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1ZGl0bG9nYgZwcm90bzM= config: grpcPort: 9000 httpPort: 9003 diff --git a/pkg/domainevent/domain/message.go b/pkg/domainevent/domain/message.go index 08a0e51159..a3d816b461 100644 --- a/pkg/domainevent/domain/message.go +++ b/pkg/domainevent/domain/message.go @@ -685,6 +685,14 @@ func LocalizedMessage(eventType proto.Event_Type, localizer locale.Localizer) *p localizer.MustLocalizeWithTemplate(locale.Segment), ), } + case proto.Event_SEGMENT_UPDATED: + return &proto.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate( + locale.UpdatedTemplate, + localizer.MustLocalizeWithTemplate(locale.Segment), + ), + } case proto.Event_SEGMENT_NAME_CHANGED: return &proto.LocalizedMessage{ Locale: localizer.GetLocale(), diff --git a/pkg/feature/api/segment.go b/pkg/feature/api/segment.go index b8d8358fec..c84668802e 100644 --- a/pkg/feature/api/segment.go +++ b/pkg/feature/api/segment.go @@ -293,6 +293,9 @@ func (s *FeatureService) DeleteSegment( if err != nil { return nil, err } + if req.Command == nil { + return s.deleteSegmentNoCommand(ctx, req, editor, localizer) + } if err := validateDeleteSegmentRequest(req, localizer); err != nil { s.logger.Error( "Invalid argument", @@ -306,7 +309,7 @@ func (s *FeatureService) DeleteSegment( if err := s.checkSegmentInUse(ctx, req.Id, req.EnvironmentId, localizer); err != nil { return nil, err } - if err := s.updateSegment( + if _, err := s.updateSegment( ctx, editor, []command.Command{req.Command}, @@ -319,6 +322,109 @@ func (s *FeatureService) DeleteSegment( return &featureproto.DeleteSegmentResponse{}, nil } +func (s *FeatureService) deleteSegmentNoCommand( + ctx context.Context, + req *featureproto.DeleteSegmentRequest, + editor *eventproto.Editor, + localizer locale.Localizer, +) (*featureproto.DeleteSegmentResponse, error) { + if err := validateDeleteSegmentRequest(req, localizer); err != nil { + s.logger.Error( + "Invalid argument", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return nil, err + } + if err := s.checkSegmentInUse(ctx, req.Id, req.EnvironmentId, localizer); err != nil { + return nil, err + } + + tx, err := s.mysqlClient.BeginTx(ctx) + if err != nil { + s.logger.Error( + "Failed to begin transaction", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + )..., + ) + dt, err := statusInternal.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.InternalServerError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + err = s.mysqlClient.RunInTransaction(ctx, tx, func() error { + segmentStorage := v2fs.NewSegmentStorage(tx) + segment, _, err := segmentStorage.GetSegment(ctx, req.Id, req.EnvironmentId) + if err != nil { + s.logger.Error( + "Failed to get segment", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return err + } + prev := &domain.Segment{} + if err := copier.Copy(prev, segment); err != nil { + return err + } + event, err := domainevent.NewEvent( + editor, + eventproto.Event_SEGMENT, + segment.Id, + eventproto.Event_SEGMENT_DELETED, + &eventproto.SegmentDeletedEvent{ + Id: segment.Id, + }, + req.EnvironmentId, + segment.Segment, + prev, + ) + if err != nil { + return nil + } + if err := s.domainPublisher.Publish(ctx, event); err != nil { + return err + } + return segmentStorage.DeleteSegment(ctx, segment.Id) + }) + if err != nil { + if errors.Is(err, v2fs.ErrSegmentNotFound) || errors.Is(err, v2fs.ErrSegmentUnexpectedAffectedRows) { + dt, err := statusNotFound.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.NotFoundError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + s.logger.Error( + "Failed to delete segment", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + )..., + ) + dt, err := statusInternal.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.InternalServerError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + return &featureproto.DeleteSegmentResponse{}, nil +} + func (s *FeatureService) checkSegmentInUse( ctx context.Context, segmentID, environmentId string, @@ -408,6 +514,9 @@ func (s *FeatureService) UpdateSegment( ) return nil, err } + if req.Commands == nil { + return s.updateSegmentNoCommand(ctx, req, editor, localizer) + } commands := make([]command.Command, 0, len(req.Commands)) for _, c := range req.Commands { cmd, err := command.UnmarshalCommand(c) @@ -440,17 +549,135 @@ func (s *FeatureService) UpdateSegment( ) return nil, err } - if err := s.updateSegment( + segment, err := s.updateSegment( ctx, editor, commands, req.Id, req.EnvironmentId, localizer, - ); err != nil { + ) + if err != nil { return nil, err } - return &featureproto.UpdateSegmentResponse{}, nil + return &featureproto.UpdateSegmentResponse{ + Segment: segment, + }, nil +} + +func (s *FeatureService) updateSegmentNoCommand( + ctx context.Context, + req *featureproto.UpdateSegmentRequest, + editor *eventproto.Editor, + localizer locale.Localizer, +) (*featureproto.UpdateSegmentResponse, error) { + err := validateUpdateSegmentNoCommand(req, localizer) + if err != nil { + s.logger.Error( + "Invalid argument", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return nil, err + } + tx, err := s.mysqlClient.BeginTx(ctx) + if err != nil { + s.logger.Error( + "Failed to begin transaction", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + )..., + ) + dt, err := statusInternal.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.InternalServerError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + + var updatedSegment *featureproto.Segment + err = s.mysqlClient.RunInTransaction(ctx, tx, func() error { + segmentStorage := v2fs.NewSegmentStorage(tx) + segment, _, err := segmentStorage.GetSegment(ctx, req.Id, req.EnvironmentId) + if err != nil { + s.logger.Error( + "Failed to get segment", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return err + } + updated, err := segment.UpdateSegment(req.Name, req.Description) + if err != nil { + s.logger.Error( + "Failed to update segment", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return err + } + updatedSegment = updated.Segment + e, err := domainevent.NewEvent( + editor, + eventproto.Event_SEGMENT, + req.Id, + eventproto.Event_SEGMENT_NAME_CHANGED, + &eventproto.SegmentUpdatedEvent{ + Id: req.Id, + Name: req.Name, + Description: req.Description, + }, + req.EnvironmentId, + updated.Segment, + segment.Segment, + ) + if err != nil { + return err + } + if err := s.domainPublisher.Publish(ctx, e); err != nil { + return err + } + return segmentStorage.UpdateSegment(ctx, updated, req.EnvironmentId) + }) + if err != nil { + if errors.Is(err, v2fs.ErrSegmentNotFound) || errors.Is(err, v2fs.ErrSegmentUnexpectedAffectedRows) { + dt, err := statusNotFound.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.NotFoundError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + s.logger.Error( + "Failed to update segment", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + dt, err := statusInternal.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalize(locale.InternalServerError), + }) + if err != nil { + return nil, statusInternal.Err() + } + return nil, dt.Err() + } + return &featureproto.UpdateSegmentResponse{ + Segment: updatedSegment, + }, nil } func (s *FeatureService) updateSegment( @@ -459,7 +686,7 @@ func (s *FeatureService) updateSegment( commands []command.Command, segmentID, environmentId string, localizer locale.Localizer, -) error { +) (*featureproto.Segment, error) { tx, err := s.mysqlClient.BeginTx(ctx) if err != nil { s.logger.Error( @@ -473,10 +700,12 @@ func (s *FeatureService) updateSegment( Message: localizer.MustLocalize(locale.InternalServerError), }) if err != nil { - return statusInternal.Err() + return nil, statusInternal.Err() } - return dt.Err() + return nil, dt.Err() } + + var updatedSegment *featureproto.Segment err = s.mysqlClient.RunInTransaction(ctx, tx, func() error { segmentStorage := v2fs.NewSegmentStorage(tx) segment, _, err := segmentStorage.GetSegment(ctx, segmentID, environmentId) @@ -511,18 +740,19 @@ func (s *FeatureService) updateSegment( return err } } + updatedSegment = segment.Segment return segmentStorage.UpdateSegment(ctx, segment, environmentId) }) if err != nil { - if err == v2fs.ErrSegmentNotFound || err == v2fs.ErrSegmentUnexpectedAffectedRows { + if errors.Is(err, v2fs.ErrSegmentNotFound) || errors.Is(err, v2fs.ErrSegmentUnexpectedAffectedRows) { dt, err := statusNotFound.WithDetails(&errdetails.LocalizedMessage{ Locale: localizer.GetLocale(), Message: localizer.MustLocalize(locale.NotFoundError), }) if err != nil { - return statusInternal.Err() + return nil, statusInternal.Err() } - return dt.Err() + return nil, dt.Err() } s.logger.Error( "Failed to update segment", @@ -536,11 +766,11 @@ func (s *FeatureService) updateSegment( Message: localizer.MustLocalize(locale.InternalServerError), }) if err != nil { - return statusInternal.Err() + return nil, statusInternal.Err() } - return dt.Err() + return nil, dt.Err() } - return nil + return updatedSegment, nil } func (s *FeatureService) GetSegment( diff --git a/pkg/feature/api/segment_test.go b/pkg/feature/api/segment_test.go index 850c2817b3..cc57aa21ca 100644 --- a/pkg/feature/api/segment_test.go +++ b/pkg/feature/api/segment_test.go @@ -26,6 +26,7 @@ import ( "google.golang.org/genproto/googleapis/rpc/errdetails" "google.golang.org/grpc/metadata" gstatus "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/wrapperspb" accountproto "github.com/bucketeer-io/bucketeer/proto/account" @@ -193,17 +194,10 @@ func TestDeleteSegmentMySQL(t *testing.T) { { setup: nil, id: "", - cmd: nil, + cmd: &featureproto.DeleteSegmentCommand{}, environmentId: "ns0", expected: createError(statusMissingID, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id")), }, - { - setup: nil, - id: "id", - cmd: nil, - environmentId: "ns0", - expected: createError(statusMissingCommand, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "command")), - }, { setup: func(s *FeatureService) { rows := mysqlmock.NewMockRows(mockController) @@ -269,6 +263,105 @@ func TestDeleteSegmentMySQL(t *testing.T) { } } +func TestDeleteSegmentNoCommandMySQL(t *testing.T) { + t.Parallel() + mockController := gomock.NewController(t) + defer mockController.Finish() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + ctx = metadata.NewIncomingContext(ctx, metadata.MD{ + "accept-language": []string{"ja"}, + }) + localizer := locale.NewLocalizer(ctx) + createError := func(status *gstatus.Status, msg string) error { + st, err := status.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: msg, + }) + require.NoError(t, err) + return st.Err() + } + + testcases := []struct { + desc string + setup func(*FeatureService) + req *featureproto.DeleteSegmentRequest + expected error + }{ + { + desc: "error: missing id", + setup: nil, + req: &featureproto.DeleteSegmentRequest{ + Id: "", + EnvironmentId: "ns0", + }, + expected: createError(statusMissingID, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id")), + }, + { + desc: "error: segment not found", + setup: func(s *FeatureService) { + rows := mysqlmock.NewMockRows(mockController) + rows.EXPECT().Close().Return(nil) + rows.EXPECT().Next().Return(false) + rows.EXPECT().Err().Return(nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().QueryContext( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(rows, nil) + row := mysqlmock.NewMockRow(mockController) + row.EXPECT().Scan(gomock.Any()).Return(nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().QueryRowContext( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(row) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(v2fs.ErrSegmentNotFound) + }, + req: &featureproto.DeleteSegmentRequest{ + Id: "id", + EnvironmentId: "ns0", + }, + expected: createError(statusNotFound, localizer.MustLocalize(locale.NotFoundError)), + }, + { + desc: "success", + setup: func(s *FeatureService) { + rows := mysqlmock.NewMockRows(mockController) + rows.EXPECT().Close().Return(nil) + rows.EXPECT().Next().Return(false) + rows.EXPECT().Err().Return(nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().QueryContext( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(rows, nil) + row := mysqlmock.NewMockRow(mockController) + row.EXPECT().Scan(gomock.Any()).Return(nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().QueryRowContext( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(row) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(nil) + }, + req: &featureproto.DeleteSegmentRequest{ + Id: "id", + EnvironmentId: "ns0", + }, + expected: nil, + }, + } + for _, tc := range testcases { + service := createFeatureService(mockController) + if tc.setup != nil { + tc.setup(service) + } + ctx = setToken(ctx) + _, err := service.DeleteSegment(ctx, tc.req) + assert.Equal(t, tc.expected, err) + } +} + func TestUpdateSegmentMySQL(t *testing.T) { t.Parallel() mockController := gomock.NewController(t) @@ -305,13 +398,6 @@ func TestUpdateSegmentMySQL(t *testing.T) { environmentId: "ns0", expected: createError(statusMissingID, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id")), }, - { - setup: nil, - id: "id", - cmds: nil, - environmentId: "ns0", - expected: createError(statusMissingCommand, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "command")), - }, { setup: func(s *FeatureService) { s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil) @@ -343,6 +429,91 @@ func TestUpdateSegmentMySQL(t *testing.T) { } } +func TestUpdateSegmentNoCommandMySQL(t *testing.T) { + t.Parallel() + mockController := gomock.NewController(t) + defer mockController.Finish() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + ctx = metadata.NewIncomingContext(ctx, metadata.MD{ + "accept-language": []string{"ja"}, + }) + localizer := locale.NewLocalizer(ctx) + createError := func(status *gstatus.Status, msg string) error { + st, err := status.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: msg, + }) + require.NoError(t, err) + return st.Err() + } + + testcases := []struct { + desc string + setup func(*FeatureService) + req *featureproto.UpdateSegmentRequest + expected error + }{ + { + desc: "error: missing id", + setup: nil, + req: &featureproto.UpdateSegmentRequest{ + EnvironmentId: "ns0", + }, + expected: createError(statusMissingID, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id")), + }, + { + desc: "error: update empty name", + setup: nil, + req: &featureproto.UpdateSegmentRequest{ + Id: "id0", + EnvironmentId: "ns0", + Name: wrapperspb.String(""), + }, + expected: createError(statusMissingName, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "name")), + }, + { + desc: "success update name", + setup: func(s *FeatureService) { + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(nil) + }, + req: &featureproto.UpdateSegmentRequest{ + Id: "id0", + EnvironmentId: "ns0", + Name: wrapperspb.String("new-name"), + }, + expected: nil, + }, + { + desc: "success update description", + setup: func(s *FeatureService) { + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().BeginTx(gomock.Any()).Return(nil, nil) + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransaction( + gomock.Any(), gomock.Any(), gomock.Any(), + ).Return(nil) + }, + req: &featureproto.UpdateSegmentRequest{ + Id: "id0", + EnvironmentId: "ns0", + Description: wrapperspb.String("new-description"), + }, + }, + } + for _, tc := range testcases { + service := createFeatureService(mockController) + if tc.setup != nil { + tc.setup(service) + } + ctx = setToken(ctx) + _, err := service.UpdateSegment(ctx, tc.req) + assert.Equal(t, tc.expected, err) + } +} + func TestGetSegmentMySQL(t *testing.T) { t.Parallel() mockController := gomock.NewController(t) diff --git a/pkg/feature/api/validation.go b/pkg/feature/api/validation.go index ac9e4980d9..9493403abb 100644 --- a/pkg/feature/api/validation.go +++ b/pkg/feature/api/validation.go @@ -214,21 +214,28 @@ func validateDeleteSegmentRequest(req *featureproto.DeleteSegmentRequest, locali } return dt.Err() } - if req.Command == nil { - dt, err := statusMissingCommand.WithDetails(&errdetails.LocalizedMessage{ + return nil +} + +func validateUpdateSegment(segmentID string, commands []command.Command, localizer locale.Localizer) error { + if segmentID == "" { + dt, err := statusMissingID.WithDetails(&errdetails.LocalizedMessage{ Locale: localizer.GetLocale(), - Message: localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "command"), + Message: localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id"), }) if err != nil { return statusInternal.Err() } return dt.Err() } - return nil + return validateUpdateSegmentCommands(commands, localizer) } -func validateUpdateSegment(segmentID string, commands []command.Command, localizer locale.Localizer) error { - if segmentID == "" { +func validateUpdateSegmentNoCommand( + req *featureproto.UpdateSegmentRequest, + localizer locale.Localizer, +) error { + if req.Id == "" { dt, err := statusMissingID.WithDetails(&errdetails.LocalizedMessage{ Locale: localizer.GetLocale(), Message: localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id"), @@ -238,7 +245,17 @@ func validateUpdateSegment(segmentID string, commands []command.Command, localiz } return dt.Err() } - return validateUpdateSegmentCommands(commands, localizer) + if req.Name != nil && req.Name.Value == "" { + dt, err := statusMissingName.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "name"), + }) + if err != nil { + return statusInternal.Err() + } + return dt.Err() + } + return nil } func validateUpdateSegmentCommands(commands []command.Command, localizer locale.Localizer) error { diff --git a/pkg/feature/domain/segment.go b/pkg/feature/domain/segment.go index a2db31af6b..97ad751619 100644 --- a/pkg/feature/domain/segment.go +++ b/pkg/feature/domain/segment.go @@ -17,6 +17,9 @@ package domain import ( "time" + "github.com/jinzhu/copier" + "google.golang.org/protobuf/types/known/wrapperspb" + "github.com/bucketeer-io/bucketeer/pkg/uuid" featureproto "github.com/bucketeer-io/bucketeer/proto/feature" ) @@ -41,6 +44,24 @@ func NewSegment(name string, description string) (*Segment, error) { }, nil } +func (s *Segment) UpdateSegment( + name *wrapperspb.StringValue, + description *wrapperspb.StringValue, +) (*Segment, error) { + updated := &Segment{} + if err := copier.Copy(updated, s); err != nil { + return nil, err + } + if name != nil { + updated.Name = name.Value + } + if description != nil { + updated.Description = description.Value + } + updated.UpdatedAt = time.Now().Unix() + return updated, nil +} + func (s *Segment) SetDeleted() error { s.Segment.Deleted = true s.Segment.UpdatedAt = time.Now().Unix() diff --git a/pkg/feature/domain/segment_test.go b/pkg/feature/domain/segment_test.go index 0a1dbb2663..66e47c8746 100644 --- a/pkg/feature/domain/segment_test.go +++ b/pkg/feature/domain/segment_test.go @@ -20,10 +20,64 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/wrapperspb" featureproto "github.com/bucketeer-io/bucketeer/proto/feature" ) +func TestUpdateSegment(t *testing.T) { + testcases := []struct { + name *wrapperspb.StringValue + description *wrapperspb.StringValue + segment *Segment + expected *Segment + }{ + { + segment: &Segment{ + Segment: &featureproto.Segment{ + Id: "id0", + Name: "name", + Description: "description", + }, + }, + name: nil, + description: wrapperspb.String("new-description"), + expected: &Segment{ + Segment: &featureproto.Segment{ + Id: "id0", + Name: "name", + Description: "new-description", + }, + }, + }, + { + segment: &Segment{ + Segment: &featureproto.Segment{ + Id: "id1", + Name: "name", + Description: "description", + }, + }, + name: wrapperspb.String("new-name"), + description: nil, + expected: &Segment{ + Segment: &featureproto.Segment{ + Id: "id1", + Name: "new-name", + Description: "description", + }, + }, + }, + } + for i, tc := range testcases { + des := fmt.Sprintf("index: %d", i) + updated, err := tc.segment.UpdateSegment(tc.name, tc.description) + require.NoError(t, err) + assert.Equal(t, tc.expected.Name, updated.Name, des) + assert.Equal(t, tc.expected.Description, updated.Description, des) + } +} + func TestAddClauseValueToSegment(t *testing.T) { testcases := []struct { ruleID, clauseID string diff --git a/pkg/feature/storage/v2/mock/segment.go b/pkg/feature/storage/v2/mock/segment.go index 51c19a98f2..fcec7ba8a7 100644 --- a/pkg/feature/storage/v2/mock/segment.go +++ b/pkg/feature/storage/v2/mock/segment.go @@ -57,6 +57,20 @@ func (mr *MockSegmentStorageMockRecorder) CreateSegment(ctx, segment, environmen return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSegment", reflect.TypeOf((*MockSegmentStorage)(nil).CreateSegment), ctx, segment, environmentId) } +// DeleteSegment mocks base method. +func (m *MockSegmentStorage) DeleteSegment(ctx context.Context, id string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteSegment", ctx, id) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteSegment indicates an expected call of DeleteSegment. +func (mr *MockSegmentStorageMockRecorder) DeleteSegment(ctx, id any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSegment", reflect.TypeOf((*MockSegmentStorage)(nil).DeleteSegment), ctx, id) +} + // GetSegment mocks base method. func (m *MockSegmentStorage) GetSegment(ctx context.Context, id, environmentId string) (*domain.Segment, []string, error) { m.ctrl.T.Helper() diff --git a/pkg/feature/storage/v2/segment.go b/pkg/feature/storage/v2/segment.go index 5882a59ff2..54db9dd0a2 100644 --- a/pkg/feature/storage/v2/segment.go +++ b/pkg/feature/storage/v2/segment.go @@ -45,6 +45,7 @@ type SegmentStorage interface { isInUseStatus *bool, environmentId string, ) ([]*proto.Segment, int, int64, map[string][]string, error) + DeleteSegment(ctx context.Context, id string) error } type segmentStorage struct { @@ -96,7 +97,7 @@ func (s *segmentStorage) CreateSegment( environmentId, ) if err != nil { - if err == mysql.ErrDuplicateEntry { + if errors.Is(err, mysql.ErrDuplicateEntry) { return ErrSegmentAlreadyExists } return err @@ -212,7 +213,7 @@ func (s *segmentStorage) GetSegment( featureIDs, ) if err != nil { - if err == mysql.ErrNoRows { + if errors.Is(err, mysql.ErrNoRows) { return nil, nil, ErrSegmentNotFound } return nil, nil, err @@ -351,3 +352,22 @@ func (s *segmentStorage) ListSegments( } return segments, nextOffset, totalCount, featureIDsMap, nil } + +func (s *segmentStorage) DeleteSegment(ctx context.Context, id string) error { + query := ` + DELETE FROM segment + WHERE id = ? + ` + result, err := s.qe.ExecContext(ctx, query, id) + if err != nil { + return err + } + rowsAffected, err := result.RowsAffected() + if err != nil { + return err + } + if rowsAffected != 1 { + return ErrSegmentUnexpectedAffectedRows + } + return nil +} diff --git a/proto/auditlog/proto_descriptor.pb b/proto/auditlog/proto_descriptor.pb index 85d3b610f818483c3fe62809ac27ff1f3b64ec4e..d13faf36976893ffe181c52ac92e32fc99e3a448 100644 GIT binary patch delta 128 zcmdn;fa%FYrVY9FOzkH&=i5(WV%e(4#X5Onj@V@XCHpqtbP8r-YSGxN=gP+|BErQV z?CS38>K76p8sOp>;_4#Mve_y?NsD_rBbRV+YI<&JUdiMO3uGt%>^BmyV!Z delta 53 zcmV-50LuU5;R3Ya0 bucketeer.event.domain.Event.EntityType 1, // 1: bucketeer.event.domain.Event.type:type_name -> bucketeer.event.domain.Event.Type 3, // 2: bucketeer.event.domain.Event.editor:type_name -> bucketeer.event.domain.Editor - 170, // 3: bucketeer.event.domain.Event.data:type_name -> google.protobuf.Any + 171, // 3: bucketeer.event.domain.Event.data:type_name -> google.protobuf.Any 4, // 4: bucketeer.event.domain.Event.options:type_name -> bucketeer.event.domain.Options - 169, // 5: bucketeer.event.domain.Editor.public_api_editor:type_name -> bucketeer.event.domain.Editor.PublicAPIEditor - 171, // 6: bucketeer.event.domain.FeatureCreatedEvent.variations:type_name -> bucketeer.feature.Variation - 172, // 7: bucketeer.event.domain.FeatureCreatedEvent.default_on_variation_index:type_name -> google.protobuf.Int32Value - 172, // 8: bucketeer.event.domain.FeatureCreatedEvent.default_off_variation_index:type_name -> google.protobuf.Int32Value - 173, // 9: bucketeer.event.domain.FeatureCreatedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType - 174, // 10: bucketeer.event.domain.FeatureCreatedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite - 175, // 11: bucketeer.event.domain.FeatureCreatedEvent.rules:type_name -> bucketeer.feature.Rule - 176, // 12: bucketeer.event.domain.FeatureCreatedEvent.targets:type_name -> bucketeer.feature.Target - 171, // 13: bucketeer.event.domain.FeatureVariationAddedEvent.variation:type_name -> bucketeer.feature.Variation - 175, // 14: bucketeer.event.domain.FeatureRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule - 177, // 15: bucketeer.event.domain.FeatureChangeRuleStrategyEvent.strategy:type_name -> bucketeer.feature.Strategy - 178, // 16: bucketeer.event.domain.FeatureFixedStrategyChangedEvent.strategy:type_name -> bucketeer.feature.FixedStrategy - 179, // 17: bucketeer.event.domain.FeatureRolloutStrategyChangedEvent.strategy:type_name -> bucketeer.feature.RolloutStrategy - 180, // 18: bucketeer.event.domain.RuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause - 181, // 19: bucketeer.event.domain.ClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator - 177, // 20: bucketeer.event.domain.FeatureDefaultStrategyChangedEvent.strategy:type_name -> bucketeer.feature.Strategy - 171, // 21: bucketeer.event.domain.FeatureClonedEvent.variations:type_name -> bucketeer.feature.Variation - 176, // 22: bucketeer.event.domain.FeatureClonedEvent.targets:type_name -> bucketeer.feature.Target - 175, // 23: bucketeer.event.domain.FeatureClonedEvent.rules:type_name -> bucketeer.feature.Rule - 177, // 24: bucketeer.event.domain.FeatureClonedEvent.default_strategy:type_name -> bucketeer.feature.Strategy - 173, // 25: bucketeer.event.domain.FeatureClonedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType - 174, // 26: bucketeer.event.domain.FeatureClonedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite - 171, // 27: bucketeer.event.domain.ExperimentCreatedEvent.variations:type_name -> bucketeer.feature.Variation - 182, // 28: bucketeer.event.domain.AccountV2CreatedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization - 183, // 29: bucketeer.event.domain.AccountV2CreatedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole - 182, // 30: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization - 183, // 31: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole - 184, // 32: bucketeer.event.domain.SearchFilterCreatedEvent.TargetType:type_name -> bucketeer.account.FilterTargetType - 185, // 33: bucketeer.event.domain.APIKeyCreatedEvent.role:type_name -> bucketeer.account.APIKey.Role - 175, // 34: bucketeer.event.domain.SegmentRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule - 180, // 35: bucketeer.event.domain.SegmentRuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause - 181, // 36: bucketeer.event.domain.SegmentClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator - 186, // 37: bucketeer.event.domain.SegmentUserAddedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 186, // 38: bucketeer.event.domain.SegmentUserDeletedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 187, // 39: bucketeer.event.domain.SegmentBulkUploadUsersEvent.status:type_name -> bucketeer.feature.Segment.Status - 186, // 40: bucketeer.event.domain.SegmentBulkUploadUsersEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 187, // 41: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.status:type_name -> bucketeer.feature.Segment.Status - 186, // 42: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 188, // 43: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_type:type_name -> bucketeer.autoops.OpsType - 189, // 44: bucketeer.event.domain.AutoOpsRuleCreatedEvent.clauses:type_name -> bucketeer.autoops.Clause - 190, // 45: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus - 188, // 46: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent.ops_type:type_name -> bucketeer.autoops.OpsType - 190, // 47: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus - 191, // 48: bucketeer.event.domain.OpsEventRateClauseAddedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause - 191, // 49: bucketeer.event.domain.OpsEventRateClauseChangedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause - 192, // 50: bucketeer.event.domain.DatetimeClauseAddedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause - 192, // 51: bucketeer.event.domain.DatetimeClauseChangedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause - 193, // 52: bucketeer.event.domain.PushUpdatedEvent.name:type_name -> google.protobuf.StringValue - 194, // 53: bucketeer.event.domain.SubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 195, // 54: bucketeer.event.domain.SubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient - 194, // 55: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 194, // 56: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 193, // 57: bucketeer.event.domain.SubscriptionUpdatedEvent.name:type_name -> google.protobuf.StringValue - 194, // 58: bucketeer.event.domain.SubscriptionUpdatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 196, // 59: bucketeer.event.domain.SubscriptionUpdatedEvent.disabled:type_name -> google.protobuf.BoolValue - 194, // 60: bucketeer.event.domain.AdminSubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 195, // 61: bucketeer.event.domain.AdminSubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient - 194, // 62: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 194, // 63: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 174, // 64: bucketeer.event.domain.PrerequisiteAddedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite - 174, // 65: bucketeer.event.domain.PrerequisiteVariationChangedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite - 170, // 66: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.clause:type_name -> google.protobuf.Any - 197, // 67: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.type:type_name -> bucketeer.autoops.ProgressiveRollout.Type - 198, // 68: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.status:type_name -> bucketeer.autoops.ProgressiveRollout.Status - 199, // 69: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.stopped_by:type_name -> bucketeer.autoops.ProgressiveRollout.StoppedBy - 200, // 70: bucketeer.event.domain.FlagTriggerCreatedEvent.type:type_name -> bucketeer.feature.FlagTrigger.Type - 201, // 71: bucketeer.event.domain.FlagTriggerCreatedEvent.action:type_name -> bucketeer.feature.FlagTrigger.Action - 72, // [72:72] is the sub-list for method output_type - 72, // [72:72] is the sub-list for method input_type - 72, // [72:72] is the sub-list for extension type_name - 72, // [72:72] is the sub-list for extension extendee - 0, // [0:72] is the sub-list for field type_name + 170, // 5: bucketeer.event.domain.Editor.public_api_editor:type_name -> bucketeer.event.domain.Editor.PublicAPIEditor + 172, // 6: bucketeer.event.domain.FeatureCreatedEvent.variations:type_name -> bucketeer.feature.Variation + 173, // 7: bucketeer.event.domain.FeatureCreatedEvent.default_on_variation_index:type_name -> google.protobuf.Int32Value + 173, // 8: bucketeer.event.domain.FeatureCreatedEvent.default_off_variation_index:type_name -> google.protobuf.Int32Value + 174, // 9: bucketeer.event.domain.FeatureCreatedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType + 175, // 10: bucketeer.event.domain.FeatureCreatedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite + 176, // 11: bucketeer.event.domain.FeatureCreatedEvent.rules:type_name -> bucketeer.feature.Rule + 177, // 12: bucketeer.event.domain.FeatureCreatedEvent.targets:type_name -> bucketeer.feature.Target + 172, // 13: bucketeer.event.domain.FeatureVariationAddedEvent.variation:type_name -> bucketeer.feature.Variation + 176, // 14: bucketeer.event.domain.FeatureRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule + 178, // 15: bucketeer.event.domain.FeatureChangeRuleStrategyEvent.strategy:type_name -> bucketeer.feature.Strategy + 179, // 16: bucketeer.event.domain.FeatureFixedStrategyChangedEvent.strategy:type_name -> bucketeer.feature.FixedStrategy + 180, // 17: bucketeer.event.domain.FeatureRolloutStrategyChangedEvent.strategy:type_name -> bucketeer.feature.RolloutStrategy + 181, // 18: bucketeer.event.domain.RuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause + 182, // 19: bucketeer.event.domain.ClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator + 178, // 20: bucketeer.event.domain.FeatureDefaultStrategyChangedEvent.strategy:type_name -> bucketeer.feature.Strategy + 172, // 21: bucketeer.event.domain.FeatureClonedEvent.variations:type_name -> bucketeer.feature.Variation + 177, // 22: bucketeer.event.domain.FeatureClonedEvent.targets:type_name -> bucketeer.feature.Target + 176, // 23: bucketeer.event.domain.FeatureClonedEvent.rules:type_name -> bucketeer.feature.Rule + 178, // 24: bucketeer.event.domain.FeatureClonedEvent.default_strategy:type_name -> bucketeer.feature.Strategy + 174, // 25: bucketeer.event.domain.FeatureClonedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType + 175, // 26: bucketeer.event.domain.FeatureClonedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite + 172, // 27: bucketeer.event.domain.ExperimentCreatedEvent.variations:type_name -> bucketeer.feature.Variation + 183, // 28: bucketeer.event.domain.AccountV2CreatedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization + 184, // 29: bucketeer.event.domain.AccountV2CreatedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole + 183, // 30: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization + 184, // 31: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole + 185, // 32: bucketeer.event.domain.SearchFilterCreatedEvent.TargetType:type_name -> bucketeer.account.FilterTargetType + 186, // 33: bucketeer.event.domain.APIKeyCreatedEvent.role:type_name -> bucketeer.account.APIKey.Role + 187, // 34: bucketeer.event.domain.SegmentUpdatedEvent.name:type_name -> google.protobuf.StringValue + 187, // 35: bucketeer.event.domain.SegmentUpdatedEvent.description:type_name -> google.protobuf.StringValue + 176, // 36: bucketeer.event.domain.SegmentRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule + 181, // 37: bucketeer.event.domain.SegmentRuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause + 182, // 38: bucketeer.event.domain.SegmentClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator + 188, // 39: bucketeer.event.domain.SegmentUserAddedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 188, // 40: bucketeer.event.domain.SegmentUserDeletedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 189, // 41: bucketeer.event.domain.SegmentBulkUploadUsersEvent.status:type_name -> bucketeer.feature.Segment.Status + 188, // 42: bucketeer.event.domain.SegmentBulkUploadUsersEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 189, // 43: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.status:type_name -> bucketeer.feature.Segment.Status + 188, // 44: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 190, // 45: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_type:type_name -> bucketeer.autoops.OpsType + 191, // 46: bucketeer.event.domain.AutoOpsRuleCreatedEvent.clauses:type_name -> bucketeer.autoops.Clause + 192, // 47: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus + 190, // 48: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent.ops_type:type_name -> bucketeer.autoops.OpsType + 192, // 49: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus + 193, // 50: bucketeer.event.domain.OpsEventRateClauseAddedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause + 193, // 51: bucketeer.event.domain.OpsEventRateClauseChangedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause + 194, // 52: bucketeer.event.domain.DatetimeClauseAddedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause + 194, // 53: bucketeer.event.domain.DatetimeClauseChangedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause + 187, // 54: bucketeer.event.domain.PushUpdatedEvent.name:type_name -> google.protobuf.StringValue + 195, // 55: bucketeer.event.domain.SubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 196, // 56: bucketeer.event.domain.SubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient + 195, // 57: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 195, // 58: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 187, // 59: bucketeer.event.domain.SubscriptionUpdatedEvent.name:type_name -> google.protobuf.StringValue + 195, // 60: bucketeer.event.domain.SubscriptionUpdatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 197, // 61: bucketeer.event.domain.SubscriptionUpdatedEvent.disabled:type_name -> google.protobuf.BoolValue + 195, // 62: bucketeer.event.domain.AdminSubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 196, // 63: bucketeer.event.domain.AdminSubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient + 195, // 64: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 195, // 65: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 175, // 66: bucketeer.event.domain.PrerequisiteAddedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite + 175, // 67: bucketeer.event.domain.PrerequisiteVariationChangedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite + 171, // 68: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.clause:type_name -> google.protobuf.Any + 198, // 69: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.type:type_name -> bucketeer.autoops.ProgressiveRollout.Type + 199, // 70: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.status:type_name -> bucketeer.autoops.ProgressiveRollout.Status + 200, // 71: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.stopped_by:type_name -> bucketeer.autoops.ProgressiveRollout.StoppedBy + 201, // 72: bucketeer.event.domain.FlagTriggerCreatedEvent.type:type_name -> bucketeer.feature.FlagTrigger.Type + 202, // 73: bucketeer.event.domain.FlagTriggerCreatedEvent.action:type_name -> bucketeer.feature.FlagTrigger.Action + 74, // [74:74] is the sub-list for method output_type + 74, // [74:74] is the sub-list for method input_type + 74, // [74:74] is the sub-list for extension type_name + 74, // [74:74] is the sub-list for extension extendee + 0, // [0:74] is the sub-list for field type_name } func init() { file_proto_event_domain_event_proto_init() } @@ -13636,7 +13716,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentNameChangedEvent); i { + switch v := v.(*SegmentUpdatedEvent); i { case 0: return &v.state case 1: @@ -13648,7 +13728,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentDescriptionChangedEvent); i { + switch v := v.(*SegmentNameChangedEvent); i { case 0: return &v.state case 1: @@ -13660,7 +13740,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentRuleAddedEvent); i { + switch v := v.(*SegmentDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -13672,7 +13752,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentRuleDeletedEvent); i { + switch v := v.(*SegmentRuleAddedEvent); i { case 0: return &v.state case 1: @@ -13684,7 +13764,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentRuleClauseAddedEvent); i { + switch v := v.(*SegmentRuleDeletedEvent); i { case 0: return &v.state case 1: @@ -13696,7 +13776,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentRuleClauseDeletedEvent); i { + switch v := v.(*SegmentRuleClauseAddedEvent); i { case 0: return &v.state case 1: @@ -13708,7 +13788,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentClauseAttributeChangedEvent); i { + switch v := v.(*SegmentRuleClauseDeletedEvent); i { case 0: return &v.state case 1: @@ -13720,7 +13800,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentClauseOperatorChangedEvent); i { + switch v := v.(*SegmentClauseAttributeChangedEvent); i { case 0: return &v.state case 1: @@ -13732,7 +13812,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentClauseValueAddedEvent); i { + switch v := v.(*SegmentClauseOperatorChangedEvent); i { case 0: return &v.state case 1: @@ -13744,7 +13824,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentClauseValueRemovedEvent); i { + switch v := v.(*SegmentClauseValueAddedEvent); i { case 0: return &v.state case 1: @@ -13756,7 +13836,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentUserAddedEvent); i { + switch v := v.(*SegmentClauseValueRemovedEvent); i { case 0: return &v.state case 1: @@ -13768,7 +13848,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentUserDeletedEvent); i { + switch v := v.(*SegmentUserAddedEvent); i { case 0: return &v.state case 1: @@ -13780,7 +13860,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentBulkUploadUsersEvent); i { + switch v := v.(*SegmentUserDeletedEvent); i { case 0: return &v.state case 1: @@ -13792,7 +13872,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegmentBulkUploadUsersStatusChangedEvent); i { + switch v := v.(*SegmentBulkUploadUsersEvent); i { case 0: return &v.state case 1: @@ -13804,7 +13884,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentCreatedEvent); i { + switch v := v.(*SegmentBulkUploadUsersStatusChangedEvent); i { case 0: return &v.state case 1: @@ -13816,7 +13896,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentRenamedEvent); i { + switch v := v.(*EnvironmentCreatedEvent); i { case 0: return &v.state case 1: @@ -13828,7 +13908,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentDescriptionChangedEvent); i { + switch v := v.(*EnvironmentRenamedEvent); i { case 0: return &v.state case 1: @@ -13840,7 +13920,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentDeletedEvent); i { + switch v := v.(*EnvironmentDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -13852,7 +13932,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2CreatedEvent); i { + switch v := v.(*EnvironmentDeletedEvent); i { case 0: return &v.state case 1: @@ -13864,7 +13944,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2RenamedEvent); i { + switch v := v.(*EnvironmentV2CreatedEvent); i { case 0: return &v.state case 1: @@ -13876,7 +13956,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2DescriptionChangedEvent); i { + switch v := v.(*EnvironmentV2RenamedEvent); i { case 0: return &v.state case 1: @@ -13888,7 +13968,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2RequireCommentChangedEvent); i { + switch v := v.(*EnvironmentV2DescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -13900,7 +13980,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2ArchivedEvent); i { + switch v := v.(*EnvironmentV2RequireCommentChangedEvent); i { case 0: return &v.state case 1: @@ -13912,7 +13992,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnvironmentV2UnarchivedEvent); i { + switch v := v.(*EnvironmentV2ArchivedEvent); i { case 0: return &v.state case 1: @@ -13924,7 +14004,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleCreatedEvent); i { + switch v := v.(*EnvironmentV2UnarchivedEvent); i { case 0: return &v.state case 1: @@ -13936,7 +14016,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleStoppedEvent); i { + switch v := v.(*AutoOpsRuleCreatedEvent); i { case 0: return &v.state case 1: @@ -13948,7 +14028,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleDeletedEvent); i { + switch v := v.(*AutoOpsRuleStoppedEvent); i { case 0: return &v.state case 1: @@ -13960,7 +14040,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleOpsTypeChangedEvent); i { + switch v := v.(*AutoOpsRuleDeletedEvent); i { case 0: return &v.state case 1: @@ -13972,7 +14052,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleTriggeredAtChangedEvent); i { + switch v := v.(*AutoOpsRuleOpsTypeChangedEvent); i { case 0: return &v.state case 1: @@ -13984,7 +14064,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleOpsStatusChangedEvent); i { + switch v := v.(*AutoOpsRuleTriggeredAtChangedEvent); i { case 0: return &v.state case 1: @@ -13996,7 +14076,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpsEventRateClauseAddedEvent); i { + switch v := v.(*AutoOpsRuleOpsStatusChangedEvent); i { case 0: return &v.state case 1: @@ -14008,7 +14088,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpsEventRateClauseChangedEvent); i { + switch v := v.(*OpsEventRateClauseAddedEvent); i { case 0: return &v.state case 1: @@ -14020,7 +14100,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AutoOpsRuleClauseDeletedEvent); i { + switch v := v.(*OpsEventRateClauseChangedEvent); i { case 0: return &v.state case 1: @@ -14032,7 +14112,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatetimeClauseAddedEvent); i { + switch v := v.(*AutoOpsRuleClauseDeletedEvent); i { case 0: return &v.state case 1: @@ -14044,7 +14124,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatetimeClauseChangedEvent); i { + switch v := v.(*DatetimeClauseAddedEvent); i { case 0: return &v.state case 1: @@ -14056,7 +14136,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushCreatedEvent); i { + switch v := v.(*DatetimeClauseChangedEvent); i { case 0: return &v.state case 1: @@ -14068,7 +14148,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushDeletedEvent); i { + switch v := v.(*PushCreatedEvent); i { case 0: return &v.state case 1: @@ -14080,7 +14160,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushTagsAddedEvent); i { + switch v := v.(*PushDeletedEvent); i { case 0: return &v.state case 1: @@ -14092,7 +14172,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushTagsDeletedEvent); i { + switch v := v.(*PushTagsAddedEvent); i { case 0: return &v.state case 1: @@ -14104,7 +14184,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushRenamedEvent); i { + switch v := v.(*PushTagsDeletedEvent); i { case 0: return &v.state case 1: @@ -14116,7 +14196,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushTagsUpdatedEvent); i { + switch v := v.(*PushRenamedEvent); i { case 0: return &v.state case 1: @@ -14128,7 +14208,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PushUpdatedEvent); i { + switch v := v.(*PushTagsUpdatedEvent); i { case 0: return &v.state case 1: @@ -14140,7 +14220,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionCreatedEvent); i { + switch v := v.(*PushUpdatedEvent); i { case 0: return &v.state case 1: @@ -14152,7 +14232,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionDeletedEvent); i { + switch v := v.(*SubscriptionCreatedEvent); i { case 0: return &v.state case 1: @@ -14164,7 +14244,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionEnabledEvent); i { + switch v := v.(*SubscriptionDeletedEvent); i { case 0: return &v.state case 1: @@ -14176,7 +14256,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionDisabledEvent); i { + switch v := v.(*SubscriptionEnabledEvent); i { case 0: return &v.state case 1: @@ -14188,7 +14268,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionSourceTypesAddedEvent); i { + switch v := v.(*SubscriptionDisabledEvent); i { case 0: return &v.state case 1: @@ -14200,7 +14280,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionSourceTypesDeletedEvent); i { + switch v := v.(*SubscriptionSourceTypesAddedEvent); i { case 0: return &v.state case 1: @@ -14212,7 +14292,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionRenamedEvent); i { + switch v := v.(*SubscriptionSourceTypesDeletedEvent); i { case 0: return &v.state case 1: @@ -14224,7 +14304,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionUpdatedEvent); i { + switch v := v.(*SubscriptionRenamedEvent); i { case 0: return &v.state case 1: @@ -14236,7 +14316,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionCreatedEvent); i { + switch v := v.(*SubscriptionUpdatedEvent); i { case 0: return &v.state case 1: @@ -14248,7 +14328,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionDeletedEvent); i { + switch v := v.(*AdminSubscriptionCreatedEvent); i { case 0: return &v.state case 1: @@ -14260,7 +14340,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionEnabledEvent); i { + switch v := v.(*AdminSubscriptionDeletedEvent); i { case 0: return &v.state case 1: @@ -14272,7 +14352,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionDisabledEvent); i { + switch v := v.(*AdminSubscriptionEnabledEvent); i { case 0: return &v.state case 1: @@ -14284,7 +14364,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionSourceTypesAddedEvent); i { + switch v := v.(*AdminSubscriptionDisabledEvent); i { case 0: return &v.state case 1: @@ -14296,7 +14376,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionSourceTypesDeletedEvent); i { + switch v := v.(*AdminSubscriptionSourceTypesAddedEvent); i { case 0: return &v.state case 1: @@ -14308,7 +14388,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminSubscriptionRenamedEvent); i { + switch v := v.(*AdminSubscriptionSourceTypesDeletedEvent); i { case 0: return &v.state case 1: @@ -14320,7 +14400,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectCreatedEvent); i { + switch v := v.(*AdminSubscriptionRenamedEvent); i { case 0: return &v.state case 1: @@ -14332,7 +14412,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectDescriptionChangedEvent); i { + switch v := v.(*ProjectCreatedEvent); i { case 0: return &v.state case 1: @@ -14344,7 +14424,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectRenamedEvent); i { + switch v := v.(*ProjectDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14356,7 +14436,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectEnabledEvent); i { + switch v := v.(*ProjectRenamedEvent); i { case 0: return &v.state case 1: @@ -14368,7 +14448,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectDisabledEvent); i { + switch v := v.(*ProjectEnabledEvent); i { case 0: return &v.state case 1: @@ -14380,7 +14460,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectTrialCreatedEvent); i { + switch v := v.(*ProjectDisabledEvent); i { case 0: return &v.state case 1: @@ -14392,7 +14472,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectTrialConvertedEvent); i { + switch v := v.(*ProjectTrialCreatedEvent); i { case 0: return &v.state case 1: @@ -14404,7 +14484,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrerequisiteAddedEvent); i { + switch v := v.(*ProjectTrialConvertedEvent); i { case 0: return &v.state case 1: @@ -14416,7 +14496,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrerequisiteVariationChangedEvent); i { + switch v := v.(*PrerequisiteAddedEvent); i { case 0: return &v.state case 1: @@ -14428,7 +14508,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrerequisiteRemovedEvent); i { + switch v := v.(*PrerequisiteVariationChangedEvent); i { case 0: return &v.state case 1: @@ -14440,7 +14520,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProgressiveRolloutCreatedEvent); i { + switch v := v.(*PrerequisiteRemovedEvent); i { case 0: return &v.state case 1: @@ -14452,7 +14532,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProgressiveRolloutStoppedEvent); i { + switch v := v.(*ProgressiveRolloutCreatedEvent); i { case 0: return &v.state case 1: @@ -14464,7 +14544,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProgressiveRolloutDeletedEvent); i { + switch v := v.(*ProgressiveRolloutStoppedEvent); i { case 0: return &v.state case 1: @@ -14476,7 +14556,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProgressiveRolloutScheduleTriggeredAtChangedEvent); i { + switch v := v.(*ProgressiveRolloutDeletedEvent); i { case 0: return &v.state case 1: @@ -14488,7 +14568,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationCreatedEvent); i { + switch v := v.(*ProgressiveRolloutScheduleTriggeredAtChangedEvent); i { case 0: return &v.state case 1: @@ -14500,7 +14580,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationDescriptionChangedEvent); i { + switch v := v.(*OrganizationCreatedEvent); i { case 0: return &v.state case 1: @@ -14512,7 +14592,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationOwnerEmailChangedEvent); i { + switch v := v.(*OrganizationDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14524,7 +14604,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationNameChangedEvent); i { + switch v := v.(*OrganizationOwnerEmailChangedEvent); i { case 0: return &v.state case 1: @@ -14536,7 +14616,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationEnabledEvent); i { + switch v := v.(*OrganizationNameChangedEvent); i { case 0: return &v.state case 1: @@ -14548,7 +14628,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationDisabledEvent); i { + switch v := v.(*OrganizationEnabledEvent); i { case 0: return &v.state case 1: @@ -14560,7 +14640,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationArchivedEvent); i { + switch v := v.(*OrganizationDisabledEvent); i { case 0: return &v.state case 1: @@ -14572,7 +14652,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationUnarchivedEvent); i { + switch v := v.(*OrganizationArchivedEvent); i { case 0: return &v.state case 1: @@ -14584,7 +14664,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationTrialConvertedEvent); i { + switch v := v.(*OrganizationUnarchivedEvent); i { case 0: return &v.state case 1: @@ -14596,7 +14676,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerCreatedEvent); i { + switch v := v.(*OrganizationTrialConvertedEvent); i { case 0: return &v.state case 1: @@ -14608,7 +14688,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerResetEvent); i { + switch v := v.(*FlagTriggerCreatedEvent); i { case 0: return &v.state case 1: @@ -14620,7 +14700,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerDescriptionChangedEvent); i { + switch v := v.(*FlagTriggerResetEvent); i { case 0: return &v.state case 1: @@ -14632,7 +14712,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerDisabledEvent); i { + switch v := v.(*FlagTriggerDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14644,7 +14724,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerEnabledEvent); i { + switch v := v.(*FlagTriggerDisabledEvent); i { case 0: return &v.state case 1: @@ -14656,7 +14736,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerDeletedEvent); i { + switch v := v.(*FlagTriggerEnabledEvent); i { case 0: return &v.state case 1: @@ -14668,7 +14748,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlagTriggerUsageUpdatedEvent); i { + switch v := v.(*FlagTriggerDeletedEvent); i { case 0: return &v.state case 1: @@ -14680,7 +14760,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2FirstNameChangedEvent); i { + switch v := v.(*FlagTriggerUsageUpdatedEvent); i { case 0: return &v.state case 1: @@ -14692,7 +14772,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2LastNameChangedEvent); i { + switch v := v.(*AccountV2FirstNameChangedEvent); i { case 0: return &v.state case 1: @@ -14704,7 +14784,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2LanguageChangedEvent); i { + switch v := v.(*AccountV2LastNameChangedEvent); i { case 0: return &v.state case 1: @@ -14716,6 +14796,18 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccountV2LanguageChangedEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_event_domain_event_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Editor_PublicAPIEditor); i { case 0: return &v.state @@ -14734,7 +14826,7 @@ func file_proto_event_domain_event_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_event_domain_event_proto_rawDesc, NumEnums: 2, - NumMessages: 168, + NumMessages: 169, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/event/domain/event.proto b/proto/event/domain/event.proto index 893c2750e1..553bd5af5f 100644 --- a/proto/event/domain/event.proto +++ b/proto/event/domain/event.proto @@ -157,6 +157,7 @@ message Event { SEGMENT_USER_DELETED = 513; SEGMENT_BULK_UPLOAD_USERS = 514; SEGMENT_BULK_UPLOAD_USERS_STATUS_CHANGED = 515; + SEGMENT_UPDATED = 516; ENVIRONMENT_CREATED = 600; ENVIRONMENT_RENAMED = 601; ENVIRONMENT_DESCRIPTION_CHANGED = 602; @@ -691,6 +692,12 @@ message SegmentDeletedEvent { string id = 1; } +message SegmentUpdatedEvent { + string id = 1; + google.protobuf.StringValue name = 2; + google.protobuf.StringValue description = 3; +} + message SegmentNameChangedEvent { string id = 1; string name = 2; diff --git a/proto/feature/proto_descriptor.pb b/proto/feature/proto_descriptor.pb index b1a101710d9496111f4f9708a027179cdb8b1aec..a0182fa9c2c269660b58ccd2c0adf0ef6f1762c1 100644 GIT binary patch delta 320 zcmdnm%iKMUdBdrCrhU^kpQ+cCWL!D<*9;Bj5H9w~5BilREA+EXj-SmwdFvFF$e>&3#sEWo1V%Ox6GkTTh4s^{jQS>eJ=mn=4~UVDs(V=)UCuS;r9>SXyX za&Sw%w#dNQXLfPQ?qiJH#M(Bhz+EpBvncftaIiTIkptAz~&D-3K_+C zwYc@m4E14(mjP`6SuM9ke)9eGY?HNjb58czA_Zj&Os?4?$PJWF1epg?H)D%DTPc_i THcn8$2-!F*My<^@yDPZ?aDsH{ delta 128 zcmV-`0Du3BmIJko1F*_}0_csi%zrHz0hW{cm?)FHizSmFj|P))y9bj!oIaDKnHd6$ z0h7R)CzGd=IFnACEf^OH6;*I#VRU6vWoK<=Zgf&*b8v5Nb7iw6n^+S9&oQ%puEq=j iWRpg_V*>yZWRq;YV+a5eY6=cPWMq?iz#y}^zfudFax-E8 diff --git a/proto/feature/service.pb.go b/proto/feature/service.pb.go index af71460669..4236dc25ee 100644 --- a/proto/feature/service.pb.go +++ b/proto/feature/service.pb.go @@ -2715,7 +2715,8 @@ type DeleteSegmentRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + // Deprecated: Do not use. Command *DeleteSegmentCommand `protobuf:"bytes,2,opt,name=command,proto3" json:"command"` EnvironmentId string `protobuf:"bytes,4,opt,name=environment_id,json=environmentId,proto3" json:"environment_id"` } @@ -2759,6 +2760,7 @@ func (x *DeleteSegmentRequest) GetId() string { return "" } +// Deprecated: Do not use. func (x *DeleteSegmentRequest) GetCommand() *DeleteSegmentCommand { if x != nil { return x.Command @@ -2816,9 +2818,12 @@ type UpdateSegmentRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` - Commands []*Command `protobuf:"bytes,2,rep,name=commands,proto3" json:"commands"` - EnvironmentId string `protobuf:"bytes,4,opt,name=environment_id,json=environmentId,proto3" json:"environment_id"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + // Deprecated: Do not use. + Commands []*Command `protobuf:"bytes,2,rep,name=commands,proto3" json:"commands"` + EnvironmentId string `protobuf:"bytes,4,opt,name=environment_id,json=environmentId,proto3" json:"environment_id"` + Name *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=name,proto3" json:"name"` + Description *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=description,proto3" json:"description"` } func (x *UpdateSegmentRequest) Reset() { @@ -2860,6 +2865,7 @@ func (x *UpdateSegmentRequest) GetId() string { return "" } +// Deprecated: Do not use. func (x *UpdateSegmentRequest) GetCommands() []*Command { if x != nil { return x.Commands @@ -2874,10 +2880,26 @@ func (x *UpdateSegmentRequest) GetEnvironmentId() string { return "" } +func (x *UpdateSegmentRequest) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *UpdateSegmentRequest) GetDescription() *wrapperspb.StringValue { + if x != nil { + return x.Description + } + return nil +} + type UpdateSegmentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Segment *Segment `protobuf:"bytes,1,opt,name=segment,proto3" json:"segment"` } func (x *UpdateSegmentResponse) Reset() { @@ -2912,6 +2934,13 @@ func (*UpdateSegmentResponse) Descriptor() ([]byte, []int) { return file_proto_feature_service_proto_rawDescGZIP(), []int{39} } +func (x *UpdateSegmentResponse) GetSegment() *Segment { + if x != nil { + return x.Segment + } + return nil +} + type AddSegmentUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5308,486 +5337,533 @@ var file_proto_feature_service_proto_rawDesc = []byte{ 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x14, + 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, - 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, - 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, - 0x18, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x22, 0x4c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x22, 0xe6, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x68, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0xd0, 0x02, 0x0a, 0x1d, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x11, + 0x18, 0x01, 0x92, 0x41, 0x0c, 0x32, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x95, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x11, 0x18, 0x01, 0x92, 0x41, 0x0c, 0x32, 0x0a, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0x92, 0x41, 0x31, 0x32, 0x2f, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x64, 0x73, 0x20, - 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x20, 0x0a, 0x1e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1f, 0x42, 0x75, 0x6c, - 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x22, 0x36, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa1, 0x01, 0x0a, - 0x17, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, - 0x22, 0x69, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x45, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, - 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac, 0x03, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x42, 0x79, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x5a, 0x0a, 0x0f, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, - 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x06, 0x0a, - 0x02, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, - 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, - 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x04, 0x22, - 0x23, 0x0a, 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, - 0x53, 0x43, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x77, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x6a, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x52, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x70, 0x0a, 0x19, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6c, - 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xc3, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x4d, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x42, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9e, 0x01, 0x0a, + 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x1b, 0x0a, + 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x4c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x18, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, - 0x03, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, - 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x8c, 0x01, 0x0a, 0x27, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x68, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xd0, 0x02, 0x0a, 0x1d, 0x42, 0x75, 0x6c, 0x6b, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, + 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x11, 0x18, 0x01, 0x92, 0x41, + 0x0c, 0x32, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x48, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0x92, 0x41, 0x31, + 0x32, 0x2f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, + 0x64, 0x73, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6c, 0x69, 0x6e, + 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x20, 0x0a, 0x1e, 0x42, 0x75, 0x6c, + 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1f, + 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x23, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x61, - 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, + 0x65, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, - 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x52, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, + 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x36, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xa1, 0x01, 0x0a, 0x17, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x22, 0x69, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4d, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x75, + 0x73, 0x65, 0x72, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac, + 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x5a, + 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, + 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x41, 0x4d, 0x45, + 0x10, 0x04, 0x22, 0x23, 0x0a, 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x77, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x70, 0x0a, 0x19, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, + 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, + 0x0b, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xc3, + 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x18, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x8c, + 0x01, 0x0a, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x23, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x1b, 0x0a, 0x19, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x6d, 0x0a, 0x1c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, - 0x03, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xbf, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x72, - 0x65, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x17, 0x72, 0x65, 0x73, - 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, - 0x03, 0x22, 0x6f, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x22, 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x6d, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x46, + 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, + 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x1b, 0x0a, + 0x19, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x19, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x6d, 0x0a, 0x1c, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x19, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, - 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xaa, 0x03, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x52, 0x07, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x62, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x39, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x36, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x0b, 0x0a, 0x07, - 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x22, 0x23, 0x0a, 0x0e, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x4a, 0x04, - 0x08, 0x02, 0x10, 0x03, 0x22, 0xa3, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, - 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x57, 0x69, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x52, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, - 0x69, 0x0a, 0x12, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x69, - 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, + 0x73, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x67, + 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x17, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x22, 0x6f, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, + 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x54, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x6d, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x31, 0x0a, 0x19, 0x46, 0x6c, - 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x1c, 0x0a, - 0x1a, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xcf, 0x31, 0x0a, 0x0e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, - 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x2e, 0x62, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xaa, 0x03, 0x0a, 0x17, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0c, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x75, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x62, 0x0a, 0x0f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, + 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x22, 0x23, 0x0a, 0x0e, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, + 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, + 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xa3, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x0e, 0x44, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x28, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x52, 0x0c, 0x66, 0x6c, 0x61, + 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x1a, 0x69, 0x0a, 0x12, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x57, 0x69, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x66, 0x6c, 0x61, 0x67, + 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x0b, + 0x66, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x31, 0x0a, + 0x19, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x1c, 0x0a, 0x1a, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd2, + 0x38, 0x0a, 0x0e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, + 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x67, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6d, 0x0a, 0x10, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x26, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x76, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x82, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x62, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, + 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x67, 0x0a, 0x0e, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x32, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, - 0x30, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x10, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7f, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x30, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, + 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, + 0x6f, 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x04, 0x0a, + 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x04, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, - 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xa7, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, 0x11, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, - 0x15, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, - 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, - 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, - 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, - 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, - 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, - 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, - 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, - 0x20, 0x7d, 0x12, 0x91, 0x04, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, - 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x03, 0x47, 0x65, 0x74, 0x1a, 0x0e, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, + 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc1, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xa7, 0x03, 0x0a, 0x07, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, + 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x2a, 0x15, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, + 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, + 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, + 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, + 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, + 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, + 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, + 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x91, 0x04, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xb5, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x03, 0x47, 0x65, 0x74, 0x1a, 0x0e, 0x47, 0x65, 0x74, 0x20, 0x61, + 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x4a, 0xb4, 0x01, + 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, + 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, + 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, + 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, + 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, + 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x9a, 0x04, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x03, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x92, 0x41, 0xa0, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x2a, 0x13, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, @@ -5810,237 +5886,259 @@ var file_proto_feature_service_proto_rawDesc = []byte{ 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x9a, 0x04, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x92, - 0x41, 0xa0, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x1a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x2a, 0x13, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, - 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, - 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, - 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, - 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, - 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, - 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, - 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, - 0x5d, 0x20, 0x7d, 0x12, 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x6a, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0xa3, 0x04, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbe, 0x03, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0d, 0x2a, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x92, 0x41, 0xa7, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x15, 0x77, 0x65, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, + 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, + 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, + 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, + 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, + 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, + 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, + 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0xa6, 0x04, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc1, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x32, 0x0b, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xa7, 0x03, 0x0a, 0x07, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x2a, 0x15, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, + 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, + 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, + 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, + 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, + 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, + 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, + 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x6a, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x41, 0x64, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x73, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, - 0x12, 0x6a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, + 0x01, 0x12, 0x73, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6d, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xec, 0x04, 0x0a, 0x16, - 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, - 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x03, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x5f, 0x75, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xc0, 0x03, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x42, 0x75, 0x6c, 0x6b, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x1a, 0x1a, 0x42, 0x75, 0x6c, 0x6b, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x2a, 0x20, 0x77, 0x65, - 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2e, 0x62, 0x75, 0x6c, 0x6b, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0xb4, - 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, - 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, - 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, - 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, - 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, - 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, - 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, - 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x18, 0x42, - 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x32, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x10, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, + 0x02, 0x01, 0x12, 0x6d, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0xfe, 0x03, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, - 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x92, 0x41, 0x94, 0x03, 0x0a, 0x03, - 0x74, 0x61, 0x67, 0x12, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x20, - 0x74, 0x61, 0x67, 0x73, 0x2e, 0x2a, 0x0f, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x74, 0x61, - 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, - 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, - 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, - 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, - 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, - 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, - 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, - 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, - 0x20, 0x7d, 0x12, 0x70, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x11, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2c, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0xec, 0x04, 0x0a, 0x16, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, + 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xec, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x75, + 0x6c, 0x6b, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xc0, 0x03, + 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0b, 0x42, 0x75, 0x6c, 0x6b, 0x20, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x1a, 0x42, 0x75, 0x6c, 0x6b, 0x20, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2e, 0x2a, 0x20, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x62, 0x75, 0x6c, 0x6b, 0x5f, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, + 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, + 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, + 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, + 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, + 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, 0x0a, 0x03, + 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, + 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, + 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, + 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, + 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, + 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, + 0x12, 0x85, 0x01, 0x0a, 0x18, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x32, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x33, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x10, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, - 0x10, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xfe, 0x03, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x03, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, + 0x92, 0x41, 0x94, 0x03, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x12, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x1a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x2a, 0x0f, 0x77, 0x65, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0xb4, 0x01, 0x0a, + 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, 0x01, 0x0a, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, + 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, + 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x56, 0x0a, 0x10, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, + 0x42, 0x7b, 0x20, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x20, 0x33, 0x2c, 0x20, 0x22, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, + 0x5d, 0x20, 0x7d, 0x4a, 0xb2, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0xaa, 0x01, 0x0a, 0x3d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x28, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x29, 0x2e, 0x12, 0x16, 0x0a, + 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x51, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x3d, 0x7b, 0x20, 0x22, 0x63, 0x6f, + 0x64, 0x65, 0x22, 0x3a, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x20, 0x22, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0x70, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, + 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x11, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, + 0x0a, 0x12, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x46, 0x6c, 0x61, + 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x70, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, + 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x12, 0x46, 0x6c, 0x61, 0x67, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x2c, 0x2e, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x73, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1b, 0x22, 0x19, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x7d, 0x42, 0x31, 0x5a, - 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2d, 0x69, 0x6f, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, + 0x12, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x19, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2d, 0x69, 0x6f, 0x2f, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6229,112 +6327,115 @@ var file_proto_feature_service_proto_depIdxs = []int32{ 105, // 43: bucketeer.feature.ListSegmentsResponse.segments:type_name -> bucketeer.feature.Segment 107, // 44: bucketeer.feature.DeleteSegmentRequest.command:type_name -> bucketeer.feature.DeleteSegmentCommand 102, // 45: bucketeer.feature.UpdateSegmentRequest.commands:type_name -> bucketeer.feature.Command - 108, // 46: bucketeer.feature.AddSegmentUserRequest.command:type_name -> bucketeer.feature.AddSegmentUserCommand - 109, // 47: bucketeer.feature.DeleteSegmentUserRequest.command:type_name -> bucketeer.feature.DeleteSegmentUserCommand - 110, // 48: bucketeer.feature.GetSegmentUserRequest.state:type_name -> bucketeer.feature.SegmentUser.State - 111, // 49: bucketeer.feature.GetSegmentUserResponse.user:type_name -> bucketeer.feature.SegmentUser - 106, // 50: bucketeer.feature.ListSegmentUsersRequest.state:type_name -> google.protobuf.Int32Value - 111, // 51: bucketeer.feature.ListSegmentUsersResponse.users:type_name -> bucketeer.feature.SegmentUser - 112, // 52: bucketeer.feature.BulkUploadSegmentUsersRequest.command:type_name -> bucketeer.feature.BulkUploadSegmentUsersCommand - 110, // 53: bucketeer.feature.BulkUploadSegmentUsersRequest.state:type_name -> bucketeer.feature.SegmentUser.State - 110, // 54: bucketeer.feature.BulkDownloadSegmentUsersRequest.state:type_name -> bucketeer.feature.SegmentUser.State - 113, // 55: bucketeer.feature.EvaluateFeaturesRequest.user:type_name -> bucketeer.user.User - 114, // 56: bucketeer.feature.EvaluateFeaturesResponse.user_evaluations:type_name -> bucketeer.feature.UserEvaluations - 5, // 57: bucketeer.feature.ListTagsRequest.order_by:type_name -> bucketeer.feature.ListTagsRequest.OrderBy - 6, // 58: bucketeer.feature.ListTagsRequest.order_direction:type_name -> bucketeer.feature.ListTagsRequest.OrderDirection - 115, // 59: bucketeer.feature.ListTagsResponse.tags:type_name -> bucketeer.feature.Tag - 116, // 60: bucketeer.feature.CreateFlagTriggerRequest.create_flag_trigger_command:type_name -> bucketeer.feature.CreateFlagTriggerCommand - 117, // 61: bucketeer.feature.CreateFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger - 118, // 62: bucketeer.feature.DeleteFlagTriggerRequest.delete_flag_trigger_command:type_name -> bucketeer.feature.DeleteFlagTriggerCommand - 119, // 63: bucketeer.feature.UpdateFlagTriggerRequest.change_flag_trigger_description_command:type_name -> bucketeer.feature.ChangeFlagTriggerDescriptionCommand - 120, // 64: bucketeer.feature.EnableFlagTriggerRequest.enable_flag_trigger_command:type_name -> bucketeer.feature.EnableFlagTriggerCommand - 121, // 65: bucketeer.feature.DisableFlagTriggerRequest.disable_flag_trigger_command:type_name -> bucketeer.feature.DisableFlagTriggerCommand - 122, // 66: bucketeer.feature.ResetFlagTriggerRequest.reset_flag_trigger_command:type_name -> bucketeer.feature.ResetFlagTriggerCommand - 117, // 67: bucketeer.feature.ResetFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger - 117, // 68: bucketeer.feature.GetFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger - 7, // 69: bucketeer.feature.ListFlagTriggersRequest.order_by:type_name -> bucketeer.feature.ListFlagTriggersRequest.OrderBy - 8, // 70: bucketeer.feature.ListFlagTriggersRequest.order_direction:type_name -> bucketeer.feature.ListFlagTriggersRequest.OrderDirection - 83, // 71: bucketeer.feature.ListFlagTriggersResponse.flag_triggers:type_name -> bucketeer.feature.ListFlagTriggersResponse.FlagTriggerWithUrl - 117, // 72: bucketeer.feature.ListFlagTriggersResponse.FlagTriggerWithUrl.flag_trigger:type_name -> bucketeer.feature.FlagTrigger - 9, // 73: bucketeer.feature.FeatureService.GetFeature:input_type -> bucketeer.feature.GetFeatureRequest - 11, // 74: bucketeer.feature.FeatureService.GetFeatures:input_type -> bucketeer.feature.GetFeaturesRequest - 13, // 75: bucketeer.feature.FeatureService.ListFeatures:input_type -> bucketeer.feature.ListFeaturesRequest - 15, // 76: bucketeer.feature.FeatureService.ListEnabledFeatures:input_type -> bucketeer.feature.ListEnabledFeaturesRequest - 17, // 77: bucketeer.feature.FeatureService.CreateFeature:input_type -> bucketeer.feature.CreateFeatureRequest - 19, // 78: bucketeer.feature.FeatureService.UpdateFeature:input_type -> bucketeer.feature.UpdateFeatureRequest - 21, // 79: bucketeer.feature.FeatureService.EnableFeature:input_type -> bucketeer.feature.EnableFeatureRequest - 23, // 80: bucketeer.feature.FeatureService.DisableFeature:input_type -> bucketeer.feature.DisableFeatureRequest - 25, // 81: bucketeer.feature.FeatureService.ArchiveFeature:input_type -> bucketeer.feature.ArchiveFeatureRequest - 27, // 82: bucketeer.feature.FeatureService.UnarchiveFeature:input_type -> bucketeer.feature.UnarchiveFeatureRequest - 29, // 83: bucketeer.feature.FeatureService.DeleteFeature:input_type -> bucketeer.feature.DeleteFeatureRequest - 31, // 84: bucketeer.feature.FeatureService.UpdateFeatureDetails:input_type -> bucketeer.feature.UpdateFeatureDetailsRequest - 33, // 85: bucketeer.feature.FeatureService.UpdateFeatureVariations:input_type -> bucketeer.feature.UpdateFeatureVariationsRequest - 35, // 86: bucketeer.feature.FeatureService.UpdateFeatureTargeting:input_type -> bucketeer.feature.UpdateFeatureTargetingRequest - 37, // 87: bucketeer.feature.FeatureService.CloneFeature:input_type -> bucketeer.feature.CloneFeatureRequest - 39, // 88: bucketeer.feature.FeatureService.CreateSegment:input_type -> bucketeer.feature.CreateSegmentRequest - 41, // 89: bucketeer.feature.FeatureService.GetSegment:input_type -> bucketeer.feature.GetSegmentRequest - 43, // 90: bucketeer.feature.FeatureService.ListSegments:input_type -> bucketeer.feature.ListSegmentsRequest - 45, // 91: bucketeer.feature.FeatureService.DeleteSegment:input_type -> bucketeer.feature.DeleteSegmentRequest - 47, // 92: bucketeer.feature.FeatureService.UpdateSegment:input_type -> bucketeer.feature.UpdateSegmentRequest - 49, // 93: bucketeer.feature.FeatureService.AddSegmentUser:input_type -> bucketeer.feature.AddSegmentUserRequest - 51, // 94: bucketeer.feature.FeatureService.DeleteSegmentUser:input_type -> bucketeer.feature.DeleteSegmentUserRequest - 53, // 95: bucketeer.feature.FeatureService.GetSegmentUser:input_type -> bucketeer.feature.GetSegmentUserRequest - 55, // 96: bucketeer.feature.FeatureService.ListSegmentUsers:input_type -> bucketeer.feature.ListSegmentUsersRequest - 57, // 97: bucketeer.feature.FeatureService.BulkUploadSegmentUsers:input_type -> bucketeer.feature.BulkUploadSegmentUsersRequest - 59, // 98: bucketeer.feature.FeatureService.BulkDownloadSegmentUsers:input_type -> bucketeer.feature.BulkDownloadSegmentUsersRequest - 61, // 99: bucketeer.feature.FeatureService.EvaluateFeatures:input_type -> bucketeer.feature.EvaluateFeaturesRequest - 63, // 100: bucketeer.feature.FeatureService.ListTags:input_type -> bucketeer.feature.ListTagsRequest - 65, // 101: bucketeer.feature.FeatureService.CreateFlagTrigger:input_type -> bucketeer.feature.CreateFlagTriggerRequest - 69, // 102: bucketeer.feature.FeatureService.UpdateFlagTrigger:input_type -> bucketeer.feature.UpdateFlagTriggerRequest - 71, // 103: bucketeer.feature.FeatureService.EnableFlagTrigger:input_type -> bucketeer.feature.EnableFlagTriggerRequest - 73, // 104: bucketeer.feature.FeatureService.DisableFlagTrigger:input_type -> bucketeer.feature.DisableFlagTriggerRequest - 75, // 105: bucketeer.feature.FeatureService.ResetFlagTrigger:input_type -> bucketeer.feature.ResetFlagTriggerRequest - 67, // 106: bucketeer.feature.FeatureService.DeleteFlagTrigger:input_type -> bucketeer.feature.DeleteFlagTriggerRequest - 77, // 107: bucketeer.feature.FeatureService.GetFlagTrigger:input_type -> bucketeer.feature.GetFlagTriggerRequest - 79, // 108: bucketeer.feature.FeatureService.ListFlagTriggers:input_type -> bucketeer.feature.ListFlagTriggersRequest - 81, // 109: bucketeer.feature.FeatureService.FlagTriggerWebhook:input_type -> bucketeer.feature.FlagTriggerWebhookRequest - 10, // 110: bucketeer.feature.FeatureService.GetFeature:output_type -> bucketeer.feature.GetFeatureResponse - 12, // 111: bucketeer.feature.FeatureService.GetFeatures:output_type -> bucketeer.feature.GetFeaturesResponse - 14, // 112: bucketeer.feature.FeatureService.ListFeatures:output_type -> bucketeer.feature.ListFeaturesResponse - 16, // 113: bucketeer.feature.FeatureService.ListEnabledFeatures:output_type -> bucketeer.feature.ListEnabledFeaturesResponse - 18, // 114: bucketeer.feature.FeatureService.CreateFeature:output_type -> bucketeer.feature.CreateFeatureResponse - 20, // 115: bucketeer.feature.FeatureService.UpdateFeature:output_type -> bucketeer.feature.UpdateFeatureResponse - 22, // 116: bucketeer.feature.FeatureService.EnableFeature:output_type -> bucketeer.feature.EnableFeatureResponse - 24, // 117: bucketeer.feature.FeatureService.DisableFeature:output_type -> bucketeer.feature.DisableFeatureResponse - 26, // 118: bucketeer.feature.FeatureService.ArchiveFeature:output_type -> bucketeer.feature.ArchiveFeatureResponse - 28, // 119: bucketeer.feature.FeatureService.UnarchiveFeature:output_type -> bucketeer.feature.UnarchiveFeatureResponse - 30, // 120: bucketeer.feature.FeatureService.DeleteFeature:output_type -> bucketeer.feature.DeleteFeatureResponse - 32, // 121: bucketeer.feature.FeatureService.UpdateFeatureDetails:output_type -> bucketeer.feature.UpdateFeatureDetailsResponse - 34, // 122: bucketeer.feature.FeatureService.UpdateFeatureVariations:output_type -> bucketeer.feature.UpdateFeatureVariationsResponse - 36, // 123: bucketeer.feature.FeatureService.UpdateFeatureTargeting:output_type -> bucketeer.feature.UpdateFeatureTargetingResponse - 38, // 124: bucketeer.feature.FeatureService.CloneFeature:output_type -> bucketeer.feature.CloneFeatureResponse - 40, // 125: bucketeer.feature.FeatureService.CreateSegment:output_type -> bucketeer.feature.CreateSegmentResponse - 42, // 126: bucketeer.feature.FeatureService.GetSegment:output_type -> bucketeer.feature.GetSegmentResponse - 44, // 127: bucketeer.feature.FeatureService.ListSegments:output_type -> bucketeer.feature.ListSegmentsResponse - 46, // 128: bucketeer.feature.FeatureService.DeleteSegment:output_type -> bucketeer.feature.DeleteSegmentResponse - 48, // 129: bucketeer.feature.FeatureService.UpdateSegment:output_type -> bucketeer.feature.UpdateSegmentResponse - 50, // 130: bucketeer.feature.FeatureService.AddSegmentUser:output_type -> bucketeer.feature.AddSegmentUserResponse - 52, // 131: bucketeer.feature.FeatureService.DeleteSegmentUser:output_type -> bucketeer.feature.DeleteSegmentUserResponse - 54, // 132: bucketeer.feature.FeatureService.GetSegmentUser:output_type -> bucketeer.feature.GetSegmentUserResponse - 56, // 133: bucketeer.feature.FeatureService.ListSegmentUsers:output_type -> bucketeer.feature.ListSegmentUsersResponse - 58, // 134: bucketeer.feature.FeatureService.BulkUploadSegmentUsers:output_type -> bucketeer.feature.BulkUploadSegmentUsersResponse - 60, // 135: bucketeer.feature.FeatureService.BulkDownloadSegmentUsers:output_type -> bucketeer.feature.BulkDownloadSegmentUsersResponse - 62, // 136: bucketeer.feature.FeatureService.EvaluateFeatures:output_type -> bucketeer.feature.EvaluateFeaturesResponse - 64, // 137: bucketeer.feature.FeatureService.ListTags:output_type -> bucketeer.feature.ListTagsResponse - 66, // 138: bucketeer.feature.FeatureService.CreateFlagTrigger:output_type -> bucketeer.feature.CreateFlagTriggerResponse - 70, // 139: bucketeer.feature.FeatureService.UpdateFlagTrigger:output_type -> bucketeer.feature.UpdateFlagTriggerResponse - 72, // 140: bucketeer.feature.FeatureService.EnableFlagTrigger:output_type -> bucketeer.feature.EnableFlagTriggerResponse - 74, // 141: bucketeer.feature.FeatureService.DisableFlagTrigger:output_type -> bucketeer.feature.DisableFlagTriggerResponse - 76, // 142: bucketeer.feature.FeatureService.ResetFlagTrigger:output_type -> bucketeer.feature.ResetFlagTriggerResponse - 68, // 143: bucketeer.feature.FeatureService.DeleteFlagTrigger:output_type -> bucketeer.feature.DeleteFlagTriggerResponse - 78, // 144: bucketeer.feature.FeatureService.GetFlagTrigger:output_type -> bucketeer.feature.GetFlagTriggerResponse - 80, // 145: bucketeer.feature.FeatureService.ListFlagTriggers:output_type -> bucketeer.feature.ListFlagTriggersResponse - 82, // 146: bucketeer.feature.FeatureService.FlagTriggerWebhook:output_type -> bucketeer.feature.FlagTriggerWebhookResponse - 110, // [110:147] is the sub-list for method output_type - 73, // [73:110] is the sub-list for method input_type - 73, // [73:73] is the sub-list for extension type_name - 73, // [73:73] is the sub-list for extension extendee - 0, // [0:73] is the sub-list for field type_name + 87, // 46: bucketeer.feature.UpdateSegmentRequest.name:type_name -> google.protobuf.StringValue + 87, // 47: bucketeer.feature.UpdateSegmentRequest.description:type_name -> google.protobuf.StringValue + 105, // 48: bucketeer.feature.UpdateSegmentResponse.segment:type_name -> bucketeer.feature.Segment + 108, // 49: bucketeer.feature.AddSegmentUserRequest.command:type_name -> bucketeer.feature.AddSegmentUserCommand + 109, // 50: bucketeer.feature.DeleteSegmentUserRequest.command:type_name -> bucketeer.feature.DeleteSegmentUserCommand + 110, // 51: bucketeer.feature.GetSegmentUserRequest.state:type_name -> bucketeer.feature.SegmentUser.State + 111, // 52: bucketeer.feature.GetSegmentUserResponse.user:type_name -> bucketeer.feature.SegmentUser + 106, // 53: bucketeer.feature.ListSegmentUsersRequest.state:type_name -> google.protobuf.Int32Value + 111, // 54: bucketeer.feature.ListSegmentUsersResponse.users:type_name -> bucketeer.feature.SegmentUser + 112, // 55: bucketeer.feature.BulkUploadSegmentUsersRequest.command:type_name -> bucketeer.feature.BulkUploadSegmentUsersCommand + 110, // 56: bucketeer.feature.BulkUploadSegmentUsersRequest.state:type_name -> bucketeer.feature.SegmentUser.State + 110, // 57: bucketeer.feature.BulkDownloadSegmentUsersRequest.state:type_name -> bucketeer.feature.SegmentUser.State + 113, // 58: bucketeer.feature.EvaluateFeaturesRequest.user:type_name -> bucketeer.user.User + 114, // 59: bucketeer.feature.EvaluateFeaturesResponse.user_evaluations:type_name -> bucketeer.feature.UserEvaluations + 5, // 60: bucketeer.feature.ListTagsRequest.order_by:type_name -> bucketeer.feature.ListTagsRequest.OrderBy + 6, // 61: bucketeer.feature.ListTagsRequest.order_direction:type_name -> bucketeer.feature.ListTagsRequest.OrderDirection + 115, // 62: bucketeer.feature.ListTagsResponse.tags:type_name -> bucketeer.feature.Tag + 116, // 63: bucketeer.feature.CreateFlagTriggerRequest.create_flag_trigger_command:type_name -> bucketeer.feature.CreateFlagTriggerCommand + 117, // 64: bucketeer.feature.CreateFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger + 118, // 65: bucketeer.feature.DeleteFlagTriggerRequest.delete_flag_trigger_command:type_name -> bucketeer.feature.DeleteFlagTriggerCommand + 119, // 66: bucketeer.feature.UpdateFlagTriggerRequest.change_flag_trigger_description_command:type_name -> bucketeer.feature.ChangeFlagTriggerDescriptionCommand + 120, // 67: bucketeer.feature.EnableFlagTriggerRequest.enable_flag_trigger_command:type_name -> bucketeer.feature.EnableFlagTriggerCommand + 121, // 68: bucketeer.feature.DisableFlagTriggerRequest.disable_flag_trigger_command:type_name -> bucketeer.feature.DisableFlagTriggerCommand + 122, // 69: bucketeer.feature.ResetFlagTriggerRequest.reset_flag_trigger_command:type_name -> bucketeer.feature.ResetFlagTriggerCommand + 117, // 70: bucketeer.feature.ResetFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger + 117, // 71: bucketeer.feature.GetFlagTriggerResponse.flag_trigger:type_name -> bucketeer.feature.FlagTrigger + 7, // 72: bucketeer.feature.ListFlagTriggersRequest.order_by:type_name -> bucketeer.feature.ListFlagTriggersRequest.OrderBy + 8, // 73: bucketeer.feature.ListFlagTriggersRequest.order_direction:type_name -> bucketeer.feature.ListFlagTriggersRequest.OrderDirection + 83, // 74: bucketeer.feature.ListFlagTriggersResponse.flag_triggers:type_name -> bucketeer.feature.ListFlagTriggersResponse.FlagTriggerWithUrl + 117, // 75: bucketeer.feature.ListFlagTriggersResponse.FlagTriggerWithUrl.flag_trigger:type_name -> bucketeer.feature.FlagTrigger + 9, // 76: bucketeer.feature.FeatureService.GetFeature:input_type -> bucketeer.feature.GetFeatureRequest + 11, // 77: bucketeer.feature.FeatureService.GetFeatures:input_type -> bucketeer.feature.GetFeaturesRequest + 13, // 78: bucketeer.feature.FeatureService.ListFeatures:input_type -> bucketeer.feature.ListFeaturesRequest + 15, // 79: bucketeer.feature.FeatureService.ListEnabledFeatures:input_type -> bucketeer.feature.ListEnabledFeaturesRequest + 17, // 80: bucketeer.feature.FeatureService.CreateFeature:input_type -> bucketeer.feature.CreateFeatureRequest + 19, // 81: bucketeer.feature.FeatureService.UpdateFeature:input_type -> bucketeer.feature.UpdateFeatureRequest + 21, // 82: bucketeer.feature.FeatureService.EnableFeature:input_type -> bucketeer.feature.EnableFeatureRequest + 23, // 83: bucketeer.feature.FeatureService.DisableFeature:input_type -> bucketeer.feature.DisableFeatureRequest + 25, // 84: bucketeer.feature.FeatureService.ArchiveFeature:input_type -> bucketeer.feature.ArchiveFeatureRequest + 27, // 85: bucketeer.feature.FeatureService.UnarchiveFeature:input_type -> bucketeer.feature.UnarchiveFeatureRequest + 29, // 86: bucketeer.feature.FeatureService.DeleteFeature:input_type -> bucketeer.feature.DeleteFeatureRequest + 31, // 87: bucketeer.feature.FeatureService.UpdateFeatureDetails:input_type -> bucketeer.feature.UpdateFeatureDetailsRequest + 33, // 88: bucketeer.feature.FeatureService.UpdateFeatureVariations:input_type -> bucketeer.feature.UpdateFeatureVariationsRequest + 35, // 89: bucketeer.feature.FeatureService.UpdateFeatureTargeting:input_type -> bucketeer.feature.UpdateFeatureTargetingRequest + 37, // 90: bucketeer.feature.FeatureService.CloneFeature:input_type -> bucketeer.feature.CloneFeatureRequest + 39, // 91: bucketeer.feature.FeatureService.CreateSegment:input_type -> bucketeer.feature.CreateSegmentRequest + 41, // 92: bucketeer.feature.FeatureService.GetSegment:input_type -> bucketeer.feature.GetSegmentRequest + 43, // 93: bucketeer.feature.FeatureService.ListSegments:input_type -> bucketeer.feature.ListSegmentsRequest + 45, // 94: bucketeer.feature.FeatureService.DeleteSegment:input_type -> bucketeer.feature.DeleteSegmentRequest + 47, // 95: bucketeer.feature.FeatureService.UpdateSegment:input_type -> bucketeer.feature.UpdateSegmentRequest + 49, // 96: bucketeer.feature.FeatureService.AddSegmentUser:input_type -> bucketeer.feature.AddSegmentUserRequest + 51, // 97: bucketeer.feature.FeatureService.DeleteSegmentUser:input_type -> bucketeer.feature.DeleteSegmentUserRequest + 53, // 98: bucketeer.feature.FeatureService.GetSegmentUser:input_type -> bucketeer.feature.GetSegmentUserRequest + 55, // 99: bucketeer.feature.FeatureService.ListSegmentUsers:input_type -> bucketeer.feature.ListSegmentUsersRequest + 57, // 100: bucketeer.feature.FeatureService.BulkUploadSegmentUsers:input_type -> bucketeer.feature.BulkUploadSegmentUsersRequest + 59, // 101: bucketeer.feature.FeatureService.BulkDownloadSegmentUsers:input_type -> bucketeer.feature.BulkDownloadSegmentUsersRequest + 61, // 102: bucketeer.feature.FeatureService.EvaluateFeatures:input_type -> bucketeer.feature.EvaluateFeaturesRequest + 63, // 103: bucketeer.feature.FeatureService.ListTags:input_type -> bucketeer.feature.ListTagsRequest + 65, // 104: bucketeer.feature.FeatureService.CreateFlagTrigger:input_type -> bucketeer.feature.CreateFlagTriggerRequest + 69, // 105: bucketeer.feature.FeatureService.UpdateFlagTrigger:input_type -> bucketeer.feature.UpdateFlagTriggerRequest + 71, // 106: bucketeer.feature.FeatureService.EnableFlagTrigger:input_type -> bucketeer.feature.EnableFlagTriggerRequest + 73, // 107: bucketeer.feature.FeatureService.DisableFlagTrigger:input_type -> bucketeer.feature.DisableFlagTriggerRequest + 75, // 108: bucketeer.feature.FeatureService.ResetFlagTrigger:input_type -> bucketeer.feature.ResetFlagTriggerRequest + 67, // 109: bucketeer.feature.FeatureService.DeleteFlagTrigger:input_type -> bucketeer.feature.DeleteFlagTriggerRequest + 77, // 110: bucketeer.feature.FeatureService.GetFlagTrigger:input_type -> bucketeer.feature.GetFlagTriggerRequest + 79, // 111: bucketeer.feature.FeatureService.ListFlagTriggers:input_type -> bucketeer.feature.ListFlagTriggersRequest + 81, // 112: bucketeer.feature.FeatureService.FlagTriggerWebhook:input_type -> bucketeer.feature.FlagTriggerWebhookRequest + 10, // 113: bucketeer.feature.FeatureService.GetFeature:output_type -> bucketeer.feature.GetFeatureResponse + 12, // 114: bucketeer.feature.FeatureService.GetFeatures:output_type -> bucketeer.feature.GetFeaturesResponse + 14, // 115: bucketeer.feature.FeatureService.ListFeatures:output_type -> bucketeer.feature.ListFeaturesResponse + 16, // 116: bucketeer.feature.FeatureService.ListEnabledFeatures:output_type -> bucketeer.feature.ListEnabledFeaturesResponse + 18, // 117: bucketeer.feature.FeatureService.CreateFeature:output_type -> bucketeer.feature.CreateFeatureResponse + 20, // 118: bucketeer.feature.FeatureService.UpdateFeature:output_type -> bucketeer.feature.UpdateFeatureResponse + 22, // 119: bucketeer.feature.FeatureService.EnableFeature:output_type -> bucketeer.feature.EnableFeatureResponse + 24, // 120: bucketeer.feature.FeatureService.DisableFeature:output_type -> bucketeer.feature.DisableFeatureResponse + 26, // 121: bucketeer.feature.FeatureService.ArchiveFeature:output_type -> bucketeer.feature.ArchiveFeatureResponse + 28, // 122: bucketeer.feature.FeatureService.UnarchiveFeature:output_type -> bucketeer.feature.UnarchiveFeatureResponse + 30, // 123: bucketeer.feature.FeatureService.DeleteFeature:output_type -> bucketeer.feature.DeleteFeatureResponse + 32, // 124: bucketeer.feature.FeatureService.UpdateFeatureDetails:output_type -> bucketeer.feature.UpdateFeatureDetailsResponse + 34, // 125: bucketeer.feature.FeatureService.UpdateFeatureVariations:output_type -> bucketeer.feature.UpdateFeatureVariationsResponse + 36, // 126: bucketeer.feature.FeatureService.UpdateFeatureTargeting:output_type -> bucketeer.feature.UpdateFeatureTargetingResponse + 38, // 127: bucketeer.feature.FeatureService.CloneFeature:output_type -> bucketeer.feature.CloneFeatureResponse + 40, // 128: bucketeer.feature.FeatureService.CreateSegment:output_type -> bucketeer.feature.CreateSegmentResponse + 42, // 129: bucketeer.feature.FeatureService.GetSegment:output_type -> bucketeer.feature.GetSegmentResponse + 44, // 130: bucketeer.feature.FeatureService.ListSegments:output_type -> bucketeer.feature.ListSegmentsResponse + 46, // 131: bucketeer.feature.FeatureService.DeleteSegment:output_type -> bucketeer.feature.DeleteSegmentResponse + 48, // 132: bucketeer.feature.FeatureService.UpdateSegment:output_type -> bucketeer.feature.UpdateSegmentResponse + 50, // 133: bucketeer.feature.FeatureService.AddSegmentUser:output_type -> bucketeer.feature.AddSegmentUserResponse + 52, // 134: bucketeer.feature.FeatureService.DeleteSegmentUser:output_type -> bucketeer.feature.DeleteSegmentUserResponse + 54, // 135: bucketeer.feature.FeatureService.GetSegmentUser:output_type -> bucketeer.feature.GetSegmentUserResponse + 56, // 136: bucketeer.feature.FeatureService.ListSegmentUsers:output_type -> bucketeer.feature.ListSegmentUsersResponse + 58, // 137: bucketeer.feature.FeatureService.BulkUploadSegmentUsers:output_type -> bucketeer.feature.BulkUploadSegmentUsersResponse + 60, // 138: bucketeer.feature.FeatureService.BulkDownloadSegmentUsers:output_type -> bucketeer.feature.BulkDownloadSegmentUsersResponse + 62, // 139: bucketeer.feature.FeatureService.EvaluateFeatures:output_type -> bucketeer.feature.EvaluateFeaturesResponse + 64, // 140: bucketeer.feature.FeatureService.ListTags:output_type -> bucketeer.feature.ListTagsResponse + 66, // 141: bucketeer.feature.FeatureService.CreateFlagTrigger:output_type -> bucketeer.feature.CreateFlagTriggerResponse + 70, // 142: bucketeer.feature.FeatureService.UpdateFlagTrigger:output_type -> bucketeer.feature.UpdateFlagTriggerResponse + 72, // 143: bucketeer.feature.FeatureService.EnableFlagTrigger:output_type -> bucketeer.feature.EnableFlagTriggerResponse + 74, // 144: bucketeer.feature.FeatureService.DisableFlagTrigger:output_type -> bucketeer.feature.DisableFlagTriggerResponse + 76, // 145: bucketeer.feature.FeatureService.ResetFlagTrigger:output_type -> bucketeer.feature.ResetFlagTriggerResponse + 68, // 146: bucketeer.feature.FeatureService.DeleteFlagTrigger:output_type -> bucketeer.feature.DeleteFlagTriggerResponse + 78, // 147: bucketeer.feature.FeatureService.GetFlagTrigger:output_type -> bucketeer.feature.GetFlagTriggerResponse + 80, // 148: bucketeer.feature.FeatureService.ListFlagTriggers:output_type -> bucketeer.feature.ListFlagTriggersResponse + 82, // 149: bucketeer.feature.FeatureService.FlagTriggerWebhook:output_type -> bucketeer.feature.FlagTriggerWebhookResponse + 113, // [113:150] is the sub-list for method output_type + 76, // [76:113] is the sub-list for method input_type + 76, // [76:76] is the sub-list for extension type_name + 76, // [76:76] is the sub-list for extension extendee + 0, // [0:76] is the sub-list for field type_name } func init() { file_proto_feature_service_proto_init() } diff --git a/proto/feature/service.proto b/proto/feature/service.proto index e91286139f..dade8fd144 100644 --- a/proto/feature/service.proto +++ b/proto/feature/service.proto @@ -287,7 +287,12 @@ message ListSegmentsResponse { message DeleteSegmentRequest { string id = 1; - DeleteSegmentCommand command = 2; + DeleteSegmentCommand command = 2 [ + deprecated = true, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "deprecated" + } + ]; reserved 3; string environment_id = 4; } @@ -296,12 +301,21 @@ message DeleteSegmentResponse {} message UpdateSegmentRequest { string id = 1; - repeated Command commands = 2; + repeated Command commands = 2 [ + deprecated = true, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "deprecated" + } + ]; reserved 3; - string environment_id = 4; + string environment_id = 4 [(google.api.field_behavior) = REQUIRED]; + google.protobuf.StringValue name = 5; + google.protobuf.StringValue description = 6; } -message UpdateSegmentResponse {} +message UpdateSegmentResponse { + Segment segment = 1; +} message AddSegmentUserRequest { string id = 1; @@ -649,8 +663,73 @@ service FeatureService { } }; } - rpc DeleteSegment(DeleteSegmentRequest) returns (DeleteSegmentResponse) {} - rpc UpdateSegment(UpdateSegmentRequest) returns (UpdateSegmentResponse) {} + rpc DeleteSegment(DeleteSegmentRequest) returns (DeleteSegmentResponse) { + option (google.api.http) = { + delete: "/v1/segment" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Delete", + description: "Delete a segment." + tags: "segment" + operation_id: "web.v1.segment.delete" + responses: { + key: "400" + value: { + description: "Returned for bad requests that may have failed validation." + schema: { json_schema: { ref: ".google.rpc.Status" } } + examples: { + key: "application/json" + value: '{ "code": 3, "message": "invalid arguments error", "details": [] }' + } + } + } + responses: { + key: "401" + value: { + description: "Request could not be authenticated (authentication required)." + schema: { json_schema: { ref: ".google.rpc.Status" } } + examples: { + key: "application/json" + value: '{ "code": 16, "message": "not authenticated", "details": [] }' + } + } + } + }; + } + rpc UpdateSegment(UpdateSegmentRequest) returns (UpdateSegmentResponse) { + option (google.api.http) = { + patch: "/v1/segment" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Update", + description: "Update a segment." + tags: "segment" + operation_id: "web.v1.segment.update" + responses: { + key: "400" + value: { + description: "Returned for bad requests that may have failed validation." + schema: { json_schema: { ref: ".google.rpc.Status" } } + examples: { + key: "application/json" + value: '{ "code": 3, "message": "invalid arguments error", "details": [] }' + } + } + } + responses: { + key: "401" + value: { + description: "Request could not be authenticated (authentication required)." + schema: { json_schema: { ref: ".google.rpc.Status" } } + examples: { + key: "application/json" + value: '{ "code": 16, "message": "not authenticated", "details": [] }' + } + } + } + }; + } rpc AddSegmentUser(AddSegmentUserRequest) returns (AddSegmentUserResponse) { option deprecated = true; diff --git a/proto/gateway/proto_descriptor.pb b/proto/gateway/proto_descriptor.pb index aa8cf76ae970cf52237f1ff428ea7e7c99860e65..b1762f6daeff772f2e35bc394d0dc0061c8a8323 100644 GIT binary patch delta 333 zcmbR6obB0rwhgE1S@un1FZ8?@KU>GO|I~`pt|yyk0CE%mOS*zFeZA1u2t#rh0A;niVe0bjf1# z>b1vsI2N;T@w%kuq)wLKA_uqLYl{q=eP$P@>^|m6j?0<3*o#xsb5rw5gxEkjN>Zf+ z!8&Jdkz-2%3vB+dqmWUISBqP}%upYucp1&o)_mH|J!ZEmBanz~q`O jg4{s)M38wPbu+feZ*I6&&L}8gglvu#qt<4d-61~!Ko@vK delta 133 zcmV;00DAxC?*@?P2C&M10_csi%zrHz0hW{cm?)FHizSmFj|P))y9bj!oIaDKnHd6$ z0h7R)CzGd=IG17>0TPp7oEsPy3KdmwWMOn=Q)OpuWo~p*Wpi+EZgXX`B%4?h0?#qC ney+w00c4X#yJG_Y5@eHXy<-Rf5^4$#L1bi;dcYvFxxX#=>iaf6 diff --git a/proto/proto.lock b/proto/proto.lock index 4c36bf2ea8..42a602c7b6 100644 --- a/proto/proto.lock +++ b/proto/proto.lock @@ -14787,6 +14787,10 @@ "name": "SEGMENT_BULK_UPLOAD_USERS_STATUS_CHANGED", "integer": 515 }, + { + "name": "SEGMENT_UPDATED", + "integer": 516 + }, { "name": "ENVIRONMENT_CREATED", "integer": 600 @@ -16648,6 +16652,26 @@ } ] }, + { + "name": "SegmentUpdatedEvent", + "fields": [ + { + "id": 1, + "name": "id", + "type": "string" + }, + { + "id": 2, + "name": "name", + "type": "google.protobuf.StringValue" + }, + { + "id": 3, + "name": "description", + "type": "google.protobuf.StringValue" + } + ] + }, { "name": "SegmentNameChangedEvent", "fields": [ @@ -23627,7 +23651,22 @@ { "id": 2, "name": "command", - "type": "DeleteSegmentCommand" + "type": "DeleteSegmentCommand", + "options": [ + { + "name": "deprecated", + "value": "true" + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "deprecated" + } + ] + } + ] }, { "id": 4, @@ -23654,12 +23693,43 @@ "id": 2, "name": "commands", "type": "Command", - "is_repeated": true + "is_repeated": true, + "options": [ + { + "name": "deprecated", + "value": "true" + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "deprecated" + } + ] + } + ] }, { "id": 4, "name": "environment_id", - "type": "string" + "type": "string", + "options": [ + { + "name": "(google.api.field_behavior)", + "value": "REQUIRED" + } + ] + }, + { + "id": 5, + "name": "name", + "type": "google.protobuf.StringValue" + }, + { + "id": 6, + "name": "description", + "type": "google.protobuf.StringValue" } ], "reserved_ids": [ @@ -23667,7 +23737,14 @@ ] }, { - "name": "UpdateSegmentResponse" + "name": "UpdateSegmentResponse", + "fields": [ + { + "id": 1, + "name": "segment", + "type": "Segment" + } + ] }, { "name": "AddSegmentUserRequest", @@ -24782,12 +24859,260 @@ { "name": "DeleteSegment", "in_type": "DeleteSegmentRequest", - "out_type": "DeleteSegmentResponse" + "out_type": "DeleteSegmentResponse", + "options": [ + { + "name": "(google.api.http)", + "aggregated": [ + { + "name": "delete", + "value": "/v1/segment" + } + ] + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation)", + "aggregated": [ + { + "name": "summary", + "value": "Delete" + }, + { + "name": "description", + "value": "Delete a segment." + }, + { + "name": "tags", + "value": "segment" + }, + { + "name": "operation_id", + "value": "web.v1.segment.delete" + }, + { + "name": "responses", + "aggregated": [ + { + "name": "key", + "value": "400" + }, + { + "name": "value", + "aggregated": [ + { + "name": "description", + "value": "Returned for bad requests that may have failed validation." + }, + { + "name": "schema", + "aggregated": [ + { + "name": "json_schema", + "aggregated": [ + { + "name": "ref", + "value": ".google.rpc.Status" + } + ] + } + ] + }, + { + "name": "examples", + "aggregated": [ + { + "name": "key", + "value": "application/json" + }, + { + "name": "value", + "value": "{\"code\":3,\"message\":\"invalid arguments error\",\"details\":[]}" + } + ] + } + ] + } + ] + }, + { + "name": "responses", + "aggregated": [ + { + "name": "key", + "value": "401" + }, + { + "name": "value", + "aggregated": [ + { + "name": "description", + "value": "Request could not be authenticated (authentication required)." + }, + { + "name": "schema", + "aggregated": [ + { + "name": "json_schema", + "aggregated": [ + { + "name": "ref", + "value": ".google.rpc.Status" + } + ] + } + ] + }, + { + "name": "examples", + "aggregated": [ + { + "name": "key", + "value": "application/json" + }, + { + "name": "value", + "value": "{\"code\":16,\"message\":\"not authenticated\",\"details\":[]}" + } + ] + } + ] + } + ] + } + ] + } + ] }, { "name": "UpdateSegment", "in_type": "UpdateSegmentRequest", - "out_type": "UpdateSegmentResponse" + "out_type": "UpdateSegmentResponse", + "options": [ + { + "name": "(google.api.http)", + "aggregated": [ + { + "name": "patch", + "value": "/v1/segment" + }, + { + "name": "body", + "value": "*" + } + ] + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation)", + "aggregated": [ + { + "name": "summary", + "value": "Update" + }, + { + "name": "description", + "value": "Update a segment." + }, + { + "name": "tags", + "value": "segment" + }, + { + "name": "operation_id", + "value": "web.v1.segment.update" + }, + { + "name": "responses", + "aggregated": [ + { + "name": "key", + "value": "400" + }, + { + "name": "value", + "aggregated": [ + { + "name": "description", + "value": "Returned for bad requests that may have failed validation." + }, + { + "name": "schema", + "aggregated": [ + { + "name": "json_schema", + "aggregated": [ + { + "name": "ref", + "value": ".google.rpc.Status" + } + ] + } + ] + }, + { + "name": "examples", + "aggregated": [ + { + "name": "key", + "value": "application/json" + }, + { + "name": "value", + "value": "{\"code\":3,\"message\":\"invalid arguments error\",\"details\":[]}" + } + ] + } + ] + } + ] + }, + { + "name": "responses", + "aggregated": [ + { + "name": "key", + "value": "401" + }, + { + "name": "value", + "aggregated": [ + { + "name": "description", + "value": "Request could not be authenticated (authentication required)." + }, + { + "name": "schema", + "aggregated": [ + { + "name": "json_schema", + "aggregated": [ + { + "name": "ref", + "value": ".google.rpc.Status" + } + ] + } + ] + }, + { + "name": "examples", + "aggregated": [ + { + "name": "key", + "value": "application/json" + }, + { + "name": "value", + "value": "{\"code\":16,\"message\":\"not authenticated\",\"details\":[]}" + } + ] + } + ] + } + ] + } + ] + } + ] }, { "name": "AddSegmentUser", diff --git a/test/e2e/feature/segment_test.go b/test/e2e/feature/segment_test.go index e83949b636..245f8e7452 100644 --- a/test/e2e/feature/segment_test.go +++ b/test/e2e/feature/segment_test.go @@ -23,6 +23,7 @@ import ( "github.com/golang/protobuf/ptypes" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/wrapperspb" featureclient "github.com/bucketeer-io/bucketeer/pkg/feature/client" featureproto "github.com/bucketeer-io/bucketeer/proto/feature" @@ -33,6 +34,75 @@ const ( prefixSegment = "e2e-test" ) +func TestCreateListSegmentNoCommand(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + client := newFeatureClient(t) + createResp, err := client.CreateSegment(ctx, &featureproto.CreateSegmentRequest{ + EnvironmentId: *environmentNamespace, + Name: newSegmentName(t), + Description: fmt.Sprintf("%s-description", prefixSegment), + }) + assert.NoError(t, err) + + listResp, err := client.ListSegments(ctx, &featureproto.ListSegmentsRequest{ + EnvironmentId: *environmentNamespace, + }) + assert.NoError(t, err) + assert.NotNil(t, listResp) + + var segment *featureproto.Segment + for _, s := range listResp.Segments { + if s.Id == createResp.Segment.Id { + assert.Equal(t, createResp.Segment.Name, s.Name) + segment = s + break + } + } + if segment == nil { + t.Fatalf("segment not found in list response") + } + + // delete segment + _, err = client.DeleteSegment(ctx, &featureproto.DeleteSegmentRequest{ + Id: segment.Id, + EnvironmentId: *environmentNamespace, + }) + assert.NoError(t, err) +} + +func TestCreateUpdateNoCommand(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + client := newFeatureClient(t) + createResp, err := client.CreateSegment(ctx, &featureproto.CreateSegmentRequest{ + EnvironmentId: *environmentNamespace, + Name: newSegmentName(t), + Description: fmt.Sprintf("%s-description", prefixSegment), + }) + assert.NoError(t, err) + assert.NotNil(t, createResp) + segment := createResp.Segment + + updateResp, err := client.UpdateSegment(ctx, &featureproto.UpdateSegmentRequest{ + Id: createResp.Segment.Id, + EnvironmentId: *environmentNamespace, + Name: wrapperspb.String(fmt.Sprintf("%s-update", segment.Name)), + }) + assert.NoError(t, err) + if updateResp == nil { + t.Fatalf("update response is nil") + } + assert.Equal(t, fmt.Sprintf("%s-update", segment.Name), updateResp.Segment.Name) + + // delete segment + _, err = client.DeleteSegment(ctx, &featureproto.DeleteSegmentRequest{ + Id: segment.Id, + EnvironmentId: *environmentNamespace, + }) + assert.NoError(t, err) +} + func TestCreateSegment(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() diff --git a/ui/web-v2/src/proto/event/domain/event_pb.d.ts b/ui/web-v2/src/proto/event/domain/event_pb.d.ts index 1084f64ce6..1f443921dd 100644 --- a/ui/web-v2/src/proto/event/domain/event_pb.d.ts +++ b/ui/web-v2/src/proto/event/domain/event_pb.d.ts @@ -219,6 +219,7 @@ export namespace Event { SEGMENT_USER_DELETED: 513; SEGMENT_BULK_UPLOAD_USERS: 514; SEGMENT_BULK_UPLOAD_USERS_STATUS_CHANGED: 515; + SEGMENT_UPDATED: 516; ENVIRONMENT_CREATED: 600; ENVIRONMENT_RENAMED: 601; ENVIRONMENT_DESCRIPTION_CHANGED: 602; @@ -3350,6 +3351,49 @@ export namespace SegmentDeletedEvent { }; } +export class SegmentUpdatedEvent extends jspb.Message { + getId(): string; + setId(value: string): void; + + hasName(): boolean; + clearName(): void; + getName(): google_protobuf_wrappers_pb.StringValue | undefined; + setName(value?: google_protobuf_wrappers_pb.StringValue): void; + + hasDescription(): boolean; + clearDescription(): void; + getDescription(): google_protobuf_wrappers_pb.StringValue | undefined; + setDescription(value?: google_protobuf_wrappers_pb.StringValue): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): SegmentUpdatedEvent.AsObject; + static toObject( + includeInstance: boolean, + msg: SegmentUpdatedEvent + ): SegmentUpdatedEvent.AsObject; + static extensions: { [key: number]: jspb.ExtensionFieldInfo }; + static extensionsBinary: { + [key: number]: jspb.ExtensionFieldBinaryInfo; + }; + static serializeBinaryToWriter( + message: SegmentUpdatedEvent, + writer: jspb.BinaryWriter + ): void; + static deserializeBinary(bytes: Uint8Array): SegmentUpdatedEvent; + static deserializeBinaryFromReader( + message: SegmentUpdatedEvent, + reader: jspb.BinaryReader + ): SegmentUpdatedEvent; +} + +export namespace SegmentUpdatedEvent { + export type AsObject = { + id: string; + name?: google_protobuf_wrappers_pb.StringValue.AsObject; + description?: google_protobuf_wrappers_pb.StringValue.AsObject; + }; +} + export class SegmentNameChangedEvent extends jspb.Message { getId(): string; setId(value: string): void; diff --git a/ui/web-v2/src/proto/event/domain/event_pb.js b/ui/web-v2/src/proto/event/domain/event_pb.js index 5bda9fa521..f8edf44fbf 100644 --- a/ui/web-v2/src/proto/event/domain/event_pb.js +++ b/ui/web-v2/src/proto/event/domain/event_pb.js @@ -820,6 +820,11 @@ goog.exportSymbol( null, global ); +goog.exportSymbol( + 'proto.bucketeer.event.domain.SegmentUpdatedEvent', + null, + global +); goog.exportSymbol( 'proto.bucketeer.event.domain.SegmentUserAddedEvent', null, @@ -2845,6 +2850,28 @@ if (goog.DEBUG && !COMPILED) { proto.bucketeer.event.domain.SegmentDeletedEvent.displayName = 'proto.bucketeer.event.domain.SegmentDeletedEvent'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent = function (opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.bucketeer.event.domain.SegmentUpdatedEvent, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.bucketeer.event.domain.SegmentUpdatedEvent.displayName = + 'proto.bucketeer.event.domain.SegmentUpdatedEvent'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -5618,6 +5645,7 @@ proto.bucketeer.event.domain.Event.Type = { SEGMENT_USER_DELETED: 513, SEGMENT_BULK_UPLOAD_USERS: 514, SEGMENT_BULK_UPLOAD_USERS_STATUS_CHANGED: 515, + SEGMENT_UPDATED: 516, ENVIRONMENT_CREATED: 600, ENVIRONMENT_RENAMED: 601, ENVIRONMENT_DESCRIPTION_CHANGED: 602, @@ -21307,6 +21335,266 @@ proto.bucketeer.event.domain.SegmentDeletedEvent.prototype.setId = function ( return jspb.Message.setProto3StringField(this, 1, value); }; +if (jspb.Message.GENERATE_TO_OBJECT) { + /** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ + proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.toObject = + function (opt_includeInstance) { + return proto.bucketeer.event.domain.SegmentUpdatedEvent.toObject( + opt_includeInstance, + this + ); + }; + + /** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.bucketeer.event.domain.SegmentUpdatedEvent} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ + proto.bucketeer.event.domain.SegmentUpdatedEvent.toObject = function ( + includeInstance, + msg + ) { + var f, + obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, ''), + name: + (f = msg.getName()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f), + description: + (f = msg.getDescription()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; + }; +} + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.deserializeBinary = function ( + bytes +) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.bucketeer.event.domain.SegmentUpdatedEvent(); + return proto.bucketeer.event.domain.SegmentUpdatedEvent.deserializeBinaryFromReader( + msg, + reader + ); +}; + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.bucketeer.event.domain.SegmentUpdatedEvent} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.deserializeBinaryFromReader = + function (msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setId(value); + break; + case 2: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setName(value); + break; + case 3: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setDescription(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; + }; + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.serializeBinary = + function () { + var writer = new jspb.BinaryWriter(); + proto.bucketeer.event.domain.SegmentUpdatedEvent.serializeBinaryToWriter( + this, + writer + ); + return writer.getResultBuffer(); + }; + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.bucketeer.event.domain.SegmentUpdatedEvent} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.serializeBinaryToWriter = + function (message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString(1, f); + } + f = message.getName(); + if (f != null) { + writer.writeMessage( + 2, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } + f = message.getDescription(); + if (f != null) { + writer.writeMessage( + 3, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } + }; + +/** + * optional string id = 1; + * @return {string} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.getId = function () { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, '')); +}; + +/** + * @param {string} value + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.setId = function ( + value +) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + +/** + * optional google.protobuf.StringValue name = 2; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.getName = + function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 2 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.setName = function ( + value +) { + return jspb.Message.setWrapperField(this, 2, value); +}; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.clearName = + function () { + return this.setName(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.hasName = + function () { + return jspb.Message.getField(this, 2) != null; + }; + +/** + * optional google.protobuf.StringValue description = 3; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.getDescription = + function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 3 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.setDescription = + function (value) { + return jspb.Message.setWrapperField(this, 3, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.event.domain.SegmentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.clearDescription = + function () { + return this.setDescription(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.event.domain.SegmentUpdatedEvent.prototype.hasDescription = + function () { + return jspb.Message.getField(this, 3) != null; + }; + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/ui/web-v2/src/proto/feature/service_pb.d.ts b/ui/web-v2/src/proto/feature/service_pb.d.ts index 0a509cadff..5694f92acc 100644 --- a/ui/web-v2/src/proto/feature/service_pb.d.ts +++ b/ui/web-v2/src/proto/feature/service_pb.d.ts @@ -1663,6 +1663,16 @@ export class UpdateSegmentRequest extends jspb.Message { getEnvironmentId(): string; setEnvironmentId(value: string): void; + hasName(): boolean; + clearName(): void; + getName(): google_protobuf_wrappers_pb.StringValue | undefined; + setName(value?: google_protobuf_wrappers_pb.StringValue): void; + + hasDescription(): boolean; + clearDescription(): void; + getDescription(): google_protobuf_wrappers_pb.StringValue | undefined; + setDescription(value?: google_protobuf_wrappers_pb.StringValue): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): UpdateSegmentRequest.AsObject; static toObject( @@ -1689,10 +1699,17 @@ export namespace UpdateSegmentRequest { id: string; commandsList: Array; environmentId: string; + name?: google_protobuf_wrappers_pb.StringValue.AsObject; + description?: google_protobuf_wrappers_pb.StringValue.AsObject; }; } export class UpdateSegmentResponse extends jspb.Message { + hasSegment(): boolean; + clearSegment(): void; + getSegment(): proto_feature_segment_pb.Segment | undefined; + setSegment(value?: proto_feature_segment_pb.Segment): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): UpdateSegmentResponse.AsObject; static toObject( @@ -1715,7 +1732,9 @@ export class UpdateSegmentResponse extends jspb.Message { } export namespace UpdateSegmentResponse { - export type AsObject = {}; + export type AsObject = { + segment?: proto_feature_segment_pb.Segment.AsObject; + }; } export class AddSegmentUserRequest extends jspb.Message { diff --git a/ui/web-v2/src/proto/feature/service_pb.js b/ui/web-v2/src/proto/feature/service_pb.js index c8c8b5e528..ff6bc8774f 100644 --- a/ui/web-v2/src/proto/feature/service_pb.js +++ b/ui/web-v2/src/proto/feature/service_pb.js @@ -11121,7 +11121,13 @@ if (jspb.Message.GENERATE_TO_OBJECT) { proto_feature_command_pb.Command.toObject, includeInstance ), - environmentId: jspb.Message.getFieldWithDefault(msg, 4, '') + environmentId: jspb.Message.getFieldWithDefault(msg, 4, ''), + name: + (f = msg.getName()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f), + description: + (f = msg.getDescription()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f) }; if (includeInstance) { @@ -11178,6 +11184,22 @@ proto.bucketeer.feature.UpdateSegmentRequest.deserializeBinaryFromReader = var value = /** @type {string} */ (reader.readString()); msg.setEnvironmentId(value); break; + case 5: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setName(value); + break; + case 6: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setDescription(value); + break; default: reader.skipField(); break; @@ -11226,6 +11248,22 @@ proto.bucketeer.feature.UpdateSegmentRequest.serializeBinaryToWriter = if (f.length > 0) { writer.writeString(4, f); } + f = message.getName(); + if (f != null) { + writer.writeMessage( + 5, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } + f = message.getDescription(); + if (f != null) { + writer.writeMessage( + 6, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } }; /** @@ -11317,6 +11355,88 @@ proto.bucketeer.feature.UpdateSegmentRequest.prototype.setEnvironmentId = return jspb.Message.setProto3StringField(this, 4, value); }; +/** + * optional google.protobuf.StringValue name = 5; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.getName = function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 5 + ) + ); +}; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.feature.UpdateSegmentRequest} returns this + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.setName = function ( + value +) { + return jspb.Message.setWrapperField(this, 5, value); +}; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.feature.UpdateSegmentRequest} returns this + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.clearName = function () { + return this.setName(undefined); +}; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.hasName = function () { + return jspb.Message.getField(this, 5) != null; +}; + +/** + * optional google.protobuf.StringValue description = 6; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.getDescription = + function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 6 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.feature.UpdateSegmentRequest} returns this + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.setDescription = + function (value) { + return jspb.Message.setWrapperField(this, 6, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.feature.UpdateSegmentRequest} returns this + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.clearDescription = + function () { + return this.setDescription(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.feature.UpdateSegmentRequest.prototype.hasDescription = + function () { + return jspb.Message.getField(this, 6) != null; + }; + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -11353,7 +11473,11 @@ if (jspb.Message.GENERATE_TO_OBJECT) { msg ) { var f, - obj = {}; + obj = { + segment: + (f = msg.getSegment()) && + proto_feature_segment_pb.Segment.toObject(includeInstance, f) + }; if (includeInstance) { obj.$jspbMessageInstance = msg; @@ -11393,6 +11517,14 @@ proto.bucketeer.feature.UpdateSegmentResponse.deserializeBinaryFromReader = } var field = reader.getFieldNumber(); switch (field) { + case 1: + var value = new proto_feature_segment_pb.Segment(); + reader.readMessage( + value, + proto_feature_segment_pb.Segment.deserializeBinaryFromReader + ); + msg.setSegment(value); + break; default: reader.skipField(); break; @@ -11425,6 +11557,53 @@ proto.bucketeer.feature.UpdateSegmentResponse.prototype.serializeBinary = proto.bucketeer.feature.UpdateSegmentResponse.serializeBinaryToWriter = function (message, writer) { var f = undefined; + f = message.getSegment(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto_feature_segment_pb.Segment.serializeBinaryToWriter + ); + } + }; + +/** + * optional Segment segment = 1; + * @return {?proto.bucketeer.feature.Segment} + */ +proto.bucketeer.feature.UpdateSegmentResponse.prototype.getSegment = + function () { + return /** @type{?proto.bucketeer.feature.Segment} */ ( + jspb.Message.getWrapperField(this, proto_feature_segment_pb.Segment, 1) + ); + }; + +/** + * @param {?proto.bucketeer.feature.Segment|undefined} value + * @return {!proto.bucketeer.feature.UpdateSegmentResponse} returns this + */ +proto.bucketeer.feature.UpdateSegmentResponse.prototype.setSegment = function ( + value +) { + return jspb.Message.setWrapperField(this, 1, value); +}; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.feature.UpdateSegmentResponse} returns this + */ +proto.bucketeer.feature.UpdateSegmentResponse.prototype.clearSegment = + function () { + return this.setSegment(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.feature.UpdateSegmentResponse.prototype.hasSegment = + function () { + return jspb.Message.getField(this, 1) != null; }; if (jspb.Message.GENERATE_TO_OBJECT) {